Weex & ReactNative

1,异同点

相同点:

都采用Web的开发模式,使用JS开发;

都可以直接在Chrome中调试JS代码;

都支持跨平台的开发;

都可以实现hot reload,边更新代码边查看效果;

不同点:

JS引擎

什么是JS引擎

weex在iOS上使用JSCore而在安卓上使用了V8

ReactNative使用JSCore

学习成本

1.环境配置:

ReactNative需要按照文档安装配置很多依赖的工具,相对比较麻烦。weex安装cli之后就可以使用

2.vue vs react:上面已经做过对比

react模板JSX学习使用有一定的成本vue更接近常用的web开发方式,模板就是普通的html,数据绑定使用mustache风格,样式直接使用css

易用性

1.sdk使用

ReactNative需要解决mvn依赖的问题,因此必须自己修改源码,打包发布

weex可以直接在mvn项目中使用

2.调试

都可以在chrome中调试JS代码

weex支持在chrome中预览页面dom节点,ReactNative不支持

3.页面开发

weex提供了一个playground,可以方便的预览正在开发的页面

ReactNative开发一个页面,需要建立一个native工程,然后编译运行

4.即时预览

weex和ReactNative都有提供hot reload功能,可以边更改代码,边在手机上看到效果

5.跨平台

ReactNative支持Android iOS两个平台,需要自己扩展去支持web,windows和node-webkit的支持正在开发中

weex可以支持Android iOS web三个平台

性能

1.分包加载

ReactNative需要自己实现,从而优化JS加载执行时间

weex默认提供分包实现

2.官方支持

ReactNative官方关注的重心目前并不在性能上

weex持续关注性能优化

3.大块view渲染

ReactNative默认没有优化机制,长view渲染性能会比较差

weex提供了node和tree两种渲染模式,优化长view的渲染

扩展性

ReactNative:所有RN的native底层,都是一个个的模块Module,完全解耦,随意灵活扩展插拔移除,而且支持开发者自行构建完全自己的Module,无论是界面还是数据网络接口。

三方库的接入上,weex对网络,图片,统计等常见的用户可能想自己定制的功能,提供了相应的适配接口,可以由用户方便的定制,ReactNative需要自己修改源码

社区支持

Weex开源较晚,互联网上相关资料还比较少,社区规模较小;

React Native社区则比较活跃,可以参考的项目和资料也比较丰富

2,优势分析:

Weex的优势:

轻量级

Weex使用标签化语言,语法非常简单,使用Vue.js框架,学习成本较低,对于前端开发尤甚.

扩展性强

Weex封装了丰富的组件和api,可以完成各种定制化的需求

高性能

Weex使用纯本地渲染,体验更好;可以实现热更新.

跨平台

Weex实现了Write Once Run Everywhere,并且适配了Web端,这与RN的Learn Once Write Everywhere和只适配iOS和android不同.

RN:

社区则比较活跃,可以参考的项目和资料也比较丰富,有丰富的组件

3,开发中的问题:

Weex:在使用中发现了Weex的一些不足之处,现做个简单说明.

不支持本地图片

Weex内的image标签只能设置网络图片,不支持本地图片的使用

style标签不够丰富

相比Web灵活的style标签,Weex只支持一部分特定的Flex标签

总结:Weex因为主打的是Write Once Run Everywhere,所以对于Native端一些常见的功能,类似打开相机,需要自己进行封装,所以Weex更适合开发用于展示页面和页面内交互的项目.

RN:不太建议完全使用RN,因为Facebook也在不断填坑,每个月都有新版本,一个长期项目经不起频繁换依赖库的版本;我们公司也只是作为业余研究性质,不过RN的热更新思路真心不错,可以随时更换功能模块。需要注意的是,热更新和在线更新是不一样的,分别对应的是hot-reloading和reload,调试时是通过hot选项控制;鉴于hot-reloading需要和服务器实时保持一个socket长连接和既有的不确定性,我不相信会有公司会采用hot-reloading的方案,应用于生产环境。如果真的应用hot-reloading了,那就分享下心得

你可能感兴趣的:(Weex & ReactNative)