关于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的开发大军中