当前位置: 首页 > Web前端 > HTML

JSer全栈技术栈推荐(一)——原生移动端是天堂还是泥潭

时间:2023-04-02 23:37:10 HTML

随着以服务端NodeJS、桌面端Electron和原生移动端ReactNative为代表的全栈JS的迅猛发展,真正的生产环境“JS/前端技术全栈”逐渐成为可能。虽然在前端以外的领域,JavaScript无法取代原来主流语言在各个领域的地位,但是对于大量初创公司或者技术人员不足的团队来说,较低的学习成本本身就是一个很大的优势.对于技术学习来说,学好和学好一样重要。选择合适的技术栈去学习,可能会节省大量的时间和精力,也更有可能带来更多的机会。因此,结合最近NingJS大会上的动向和自己过去一段时间的实践经验,推荐一个未来值得学习和尝试的技术栈。首先,不要幻想在原生移动端使用JavaScript就能一飞冲天,更不要被很多开发者对ReactNative等技术的抵制所吓倒。如果你/公司的目标不是QQ级别的大型APP,你只需要减轻项目中日益复杂的web移动端的负担,用更强大的原生性能来弥补复杂性的不足web移动端的交互,而你还没有时间或者兴趣去学习原生平台对应的语言,那么现在机会来了。让我分享我自己的问题经验。在之前的一个web项目中,前端使用的是Vue框架。随着功能的不断迭代,以及几次专门针对移动端的重构,我想我已经在业务需求和性能之间找到了一个平衡点。当时想下一个比较大的优化可能是基于Vue2.0服务端渲染和使用自己的图表库来替换项目中的第三方图表库。但是,在小规模的内部用户测试中,我们发现对于大多数非技术背景的用户来说,性能问题仍然是敏感和粗鲁的。我们不能指望告诉每一个用户“这个SPA超级复杂,能这么实现真好?”,我们只能继续想办法让每个页面在那些几乎没有的低端Android上可用满满的回忆。手机也保持一定水平。当我意识到web性能终将走到尽头,公司暂时招不到两个native平台的开发人员时,我决定先用那些JSer也能玩的解决方案做一个还过得去的App?Weex准备好了吗?由于在前端使用Vue,Weex是一个非常自然的替代方案。其实我第一时间就申请了阿里的Weex内测(上述项目还没有开始)。当我第一次下载Weex的playground来玩的时候,我的想法是“哇,太酷了。”;当我即将开始我的第一个Weex项目时,我的想法是“嘿,为什么这个文档进展不顺利”;当我暂时放下Weex并评估它是否能帮助我在四个月后完成我的项目时我做了第一个App,我的想法是“为什么还是这样……”其实Weex团队已经做了很多很酷的工作,但是对于一个0原生开发经验的人来说,就是为了搞定AndroidasrequireStudio已经剥了一层皮,更没想到一个潜在的功能需求去查issue,发现回复的总是“weareschedulingdevelopment”,这难免会带来强烈的不确定感更重要的是,文档遗留的问题太多,导致阅读逻辑不够流畅,进一步加深了各种小问题带来的烦躁,所以配置了一个晚上的Weex环境,还是没有搞清楚考虑到我对同时学习React和ReactNative的担忧,我转向了ReactNative。ReactNative不是灵丹妙药,但它非常强大。作为重点推荐的技术栈,本节将少讲一些小故事,多讲一些推荐的理由和对比Weex。首先,GettingStart部分没有太多坑,基本上是一劳永逸。有几个问题通过搜索很快就解决了,平复了心情。其次,有比较好的开源项目作为参考,比如Facebook自己开源了F8App,里面有很多最佳实践;其次,社区也贡献了很多优秀的项目。我个人主要是指阅读项目。通过阅读它的源码,我可以尽快掌握React的一些技巧。同时,我也不能忽略完备的调试、测试、打包方案。这些对于没有原生开发经验的开发者自己完成是极其必要和困难的。大量的社区项目得到了帮助。ReactNative社区贡献的项目主要集中在几个方面:两个平台都可用且性能一致的组件,第三方登录等一些需要编写native代码的功能,iconfont和svg等一些常用功能的移植等,大部分项目不是由Facebook牵头,但ReactNative能够在生产中使用,绝对离不开这些项目的贡献。基于以上原因,我认为现在是开始尝试ReactNative比较合适的时机。如果你也遇到我之前描述的那种问题,不妨试一试。至于其他一些解决方案如Ionic、Cordova、Hbuilder、H5+等,我个人不感兴趣。基于WebView的各种优化结果可能更像是性能和学习成本的中间点,两边都不突出。使用JS进行原生移动开发有未来吗?我认为这个问题主要取决于社区是否厌倦了先为ReactNative造轮子,还是主流原生开发者首先对ReactNative产生了足够的兴趣。但有一段时间,ReactNative还会继续往前冲。当然,正如本节的标题所说,我们不仅仅关注ReactNative。在刚刚结束的NingJS大会上,Vue的作者宣布成为Weex的技术顾问。对我来说,这可能是再次尝试Vue的理由。希望大家在关注Weex本身的技术细节的同时,也希望大家能给Weex带来与Vue一样严谨易用的文档风格。但在项目越来越偏离公司原有的业务需求后,Weex团队能为项目投入多少持续的热情,能否打造一个愿意继续造轮子的社区,将决定我们是否有机会把Weex用在你自己的生产环境中。