RN/Weex的个人看法
文章目录
关于 react native 和 weex 之我见
写在前面
我是一个主 android 开发,原生的 ios 开发也算是初窥门径,主要是有一些东西如果能一次性开发,多次使用就好了,跨平台性嘛
本文没有代码,只是一些简单的看法
跨平台的探索
这里就有几个选择了,有纯粹的网页嵌入式开发,虽然是一个解决方案,但是毕竟不原生,而且网页渲染很不靠谱的感觉,否定掉了
然后想起了react native
和weex
,都号称是使用 web 语言开发,然后渲染成原生控件,而且还支持热更新!
好高端大气的样子啊!去尝试下吧
react native
首先是react native
,简称 RN
facebook 的开源项目,语法和文档都还算可以接受
开发环境配置
我是 jetbrain 的忠实粉丝嘛,webstorm 走起来,破解的方案自己 baidu 吧,这里就不宣传了
导航条的问题
我翻遍了所有的文档,没找到一个考虑的导航控制器,导航条虽然有一个react-navigation
但是我使用了一下这个,如果是自己写一个自己的项目还好,但是我们毕竟不是设计师,国内的设计们从来都是按照自己的方案设计导航条的啊!真没几个人是用系统自带的方案,这里用 react 的 navigation 很难自定义,我这里没找到可以修改标题颜色的方案
而且还需要吐槽一点,我认为网页端最强的一点就是百分比适配方案是 css 自带的,非常强大,而这里居然没有了,完全是 px,这样面对不同的平台真的能好好的适配吗
运行
这里就要说 webstorm 对于 react native 的支持了,帮我们全部配置好了,可以用鼠标选择 ios/android 直接运行就行了,真是 diao 啊
日志问题/debug 问题
和源生相比,android studio/xcode 都是可以直接在 ide 里直接可以看到日志的,调试相对很方便,这里就不是这样了,真的很麻烦,需要在模拟器里开 debug 模式,然后 chrome 打开网页,开发者模式,看控制台才能看见
这个时候我才知道,我们原生开发的开发环境真的比网页端的兄弟们好太多了
动态部署
可以直接在模拟器点 cmd+R 就可以了 好简单啊!
直接原地重新运行,我靠,什么时候我们源生也能这样就好了
页面跳转问题
在 android 中有 intent 开 activity 的方案,ios 中有 modal 跳转开新页面
RN 这里就不行了,因为本质上 android 是运行在同一个Activity
中的,ios 的话应该是一个UIViewController
中吧,然后利用内置的引擎将 js 渲染成源生代码进行展示,这里我想如果我需要跳转的话,可以自己内嵌代码,利用源生的方案跳转,然后回调到 RN 中来,理论上可行,后续我自己开发下试试看吧
小总结
RN 其实完全可以承载简单的开发任务,比如是交互性质,或者展示页面时,完全可以使用 RN 来开发,但是学习成本不算太低
另外就是当你有很繁重的任务,尤其是调用内置的系统级 API 时,如蓝牙的话如果能找到轮子还行,如果找不到那就很尴尬了
weex
阿里巴巴的项目嘛,在各种 blog 中也能见到 vue 的大名,这里想着可以尝试下
优势/劣势
对于中国人来说,这个原作者是中国人,相对来说中文的说明和解答就会很多,但是相对的,开源项目还是很需要英文社区的支持的,毕竟外国人对于开源社区的贡献从目前来说还是高于中国的
开发环境
这个开发环境相对 RN 来说没有那么好,因为 ios/andorid 的项目好像需要自己来建,这样就很不友好了,对于有原生开发经验的人来说还算友好,但是如果没有呢? 新入行的朋友想要快速的运行起项目来回很困难,这样的话对于新人来说门槛偏高,一个 vue 的开发人员转到 weex 来的话还需要学习 android/ios 的开发配置知识,不利于快速入行,我记得当前 androidstudio 只需要建立好项目,然后 run 就跑起来了
文档
这个相对完善很多,毕竟中文的嘛,但是我学到一半学习不下去的很大原因是,我试验自带的控件indicator
和对应的 demo 代码,发现选中颜色和背景颜色不生效,这我就很揪心了,如果 api 更新后又不反映到文档上,让人会很困惑,自己调试了找了几个小时问题,发现居然是框架的问题,这个时候那种感觉就像吃了 shi 一样难受
语法
这个我想说,个人感觉比 RN 友好了很多,而且看起来让我想起了 css+html+js 的那种感觉,真的很友好
最后小小总结下
RN 和 weex 都是很优秀的项目,但是目前个人感觉还是不太适合开发大型项目,里面的坑现在还不好说,而且最大的问题是没有完备的开发工具,虽然说NB的程序员都是用vim开发的
但是对于我等平庸之人来说,ide 是开发必备的,因为静态的语法检查可以节省大家的时间,而且再怎么样所有的一切都是依赖在 andorid/ios 本身的平台上的
个人认为:如果目前有两端需求,又不要求界面风格统一的应用,且是新应用,很适合使用 RN/weex 开发,但是本身公司就有 ios/android 开发的情况下,不太适合使用这个来开发,原生开发很成熟,非常成熟,原则上不会出现大问题,而且解决问题的方案会很多,混合 app 的开发,第一个版本的压力会非常大!!
而 RN/weex 还处于快速迭代的过程中,目前应该还不适合接入,如果再过一年,我觉得可以考虑使用 RN 开发应用
我想这次 app store 大规模的下架热更新的事件也应该会给大家一个警钟吧
个人观点,有不同意的不要喷
你好!react native
你好!weex
希望明年再看会有不同的看法
希望我可以早日可以一套代码多端使用!
2018-07-20 更新
以上是 2017 年末的观点
我在今年 4 月左右投入了 flutter 的开发大军中,个人的选择结果,个人的倾向性不言而喻