最近公司准备使用 weex 或者 react-native 进行跨平台开发,并不是要做新的 app 而是准备用这种方式代替原来 webview+h5 内嵌这种方式,这种 hybrid 的方式,存在于上古年代了,性能堪忧,还要适配安卓端复杂设备种类,各主流电商的 webview,虽然在前一段时间,安卓统一使用了传说微信、qq 都在使用 x5-webview,但是效果并不是很明显,腾讯浏览服务是要做到统一安卓端的 webview,但是腾讯的 x5 的条件是,改安卓手机已经安装了腾讯 x5 浏览器,换句话说就是,你的安卓手机上面,至少要有微信、qq、qq 浏览器等之一的拥有腾讯浏览内核的产品,虽说覆盖面很广。但是,考虑到我们公司的用户大部分年龄比较大,可能相比较而言覆盖范围就不那么广,收到投诉的也会比较多,毕竟我们跟他们的沟通成本也比较高;
直接集成腾讯 x5 内核的话也存诸多问题;所以还是需要一条跨平台的之路;
纵观现在主流开源的跨平台之路,有两条:一条是由 facebook 开源的基于 reactJs 的 react-native;另外一条是由 alibaba 开源的可以说是基于 vuejs 的 vue-native,不不不,口误,是 WEEX;那么我们分析一下应该如何选型呢,我刚开始也是看了无数的评论,怎么说的都有;一般分为两类,一类是切身体验过从搭建到开过程的这类评论会比较有营养,不过会看不太懂;另外一类,就是无脑喷阿里开源,我感觉这类评论代入感也比较强,各种举例、论证,有理有据而且通常恢复数量被点赞数量也比较高,说什么,"kpi 产物"、"阿里自己都不用啊"、"文档仨月都不更新一次啊"、"刚出来赶紧找的靠谱的接盘"、"手淘、天猫都是用的 rn 啊";我不敢想,可是仔细一想,还真是这么回事儿;
总之各大论坛贴吧逛完一遍,你绝对不想用 weex 了;我这么一看不行啊,毕竟要看看两种方法那种更适合,所以,我跟大家想的一样,首先选了 WEEX;
真的是不用不知道,一用吓一跳,我是在 windows 环境下进行开发的,我可以很负责任的说,按照 weex 官方提供的文档在 windows 下直接搭建开发环境很难一次点亮;很嘲讽啊,文档也是一如既往的烂啊,好多应该比较细节的东西,文档上面往往是认为你是大神,或者说你个屌丝用个 windows 本还想搞 weex?经过一番又一番的折磨,我终于看不下去了,这个文档光看就很晕,很想吐,还是 github 上找几个案例直接试一下,案例还是很好的,多数的都是使用 weex 构建一个新的跨平台应用,启用大面积使用了 vue 的语法,开发起来确实也是很简单;看完 demo 之后,回过头来再看 weex 文档,好像觉得文档看着还不错,虽然简单了点儿,好像该说的页都说了,没毛病;于是可以自己动手试一下了,在这里 weex 面向的主要是广大的 web 前端开发者,精简的使用方式,路由的配置,weexpack 的使用调试方式页更适合 web 开发者们使用;weex 基本上提供了两种使用方式,一种是从零开始开发一个跨平台的 app,另外一项中是集成到现有的 app 当中,原理基本是 weex 经过编译会生成两个 bundle.js 一个是供 web 端使用的,另外一个是提供给安卓、ios 使用的;毕竟是号称,write once, run everywhere;weex 引入了 vue runtime js,先不说 web 端的实现这个应该去直接看 vue 会更好,直接说 native 端的实现,js 作为连接原生控件与视图层的纽带,代替了以往使用 java,oc,swift 直接调用原生控件,这样生成的 ui 层依旧是原生的,和 html 毫无关系的,至于哪些 div,image 只不过是名字和 html 标签一样的组件而已,也没有了 dom 对象的存在,因为实际的开发环境不是浏览器而是基于原生,所以 jquery 以及它的一些插件是用不了的,大家一定要明确这一点,无论 weex 还是 react-native 的实际开发的对象都不是浏览器了,所以,我们不要把平时在浏览器是开发用到的东西都带进来,所以浏览器中那些标签在 weex 或者 react-native 中也就没有任何的意义;明确这一点之后,我们就可以进行开发了,遇到的一些坑往这个方向靠基本也就容易解决了。吐槽一下 weex 的错误提示真的是不行;
react-native 高大上的 facebook 开源,让人诟病的 BSD + 专利许可证,虽然 react 已经切换到 mit 但是 react-native 仍旧是 BSD + 专利许可证;这一点使大家在开发之前一定要注意的。
react-native 的开发,我不想多说什么,说多了没有用,不如直接看文档,毕竟文档美如画、上手体验快如狗。社区、视频、教程也多如牛毛,就不一一列举,唯一建议的一点就是要想深度使用 react-native 请熟读并背诵 reactJs 以及 redux 相关文档谢谢;了解些需原生开发,或者说原生开发者们更适合使用 react-native;真的原生开发用了 react-native 都是爱不释手;关于集成到现有应用貌似不如 weex;毕竟人家 weex 就是指着这个技能活着的;写几个页面这种工作就交给 weex 吧;
如果你现在想要从头开发一款 app,那么我可以很负责任的想你推荐 react-native,很好用,文档很全,你要填的坑,别人基本都给你准备好土了;如果你是想我们公司的需求一样,只是想干掉 hybrid,那么 weex 绝对是不二之选,首先,weex 够简单,web 开发者就可以先胜任;其次,不需要安装复杂的环境,运行环境简洁、调试工具也还好,容易做降级处理,特别适合开发单个页面;
来源: http://www.jianshu.com/p/139c5074ae5d