React-Native与Weex的比较

相同点:

1、都是跨平台,有自己的手脚架工具,开发迅速,开发支持HotReloading

2、解析脚本到渲染都需要原生代码中加载对应支持库的framework,渲染的时候是通过解析库将对应的脚本解析成原生代码,因此解析都会消耗一定的性能

3、布局方式与web布局相似,采用的是Flexbox

4、与原生交互方式都是通过宏或注解的形式注入方法

5、通过解析虚拟dom的形式,通过各自的平台对应的解析库来进行转换

6、部署的时候都会输出bundle

不同点:

1、react-native与react相似,weex则是vue的体系

2、设计角度上react-native与很多oop语言类似,weex则更像web开发的html,react-native没有像weex一样将 页面(templete),功能(script),样式(css)在一个.vue中分成三个特定的代码编写位置,react-native可以在页面中定义执行脚本

3、加载包:react-native 加载包会通过一个入口文件加载整个js.bundle,weex则可以分别加载对应的js,这可能会对应的加载速度造成影响

4、输出包的形式:react-native输出的是一个大的bundle文件,weex输出的是多个.js文件的形式,react-native输出包的时候会吧依赖的framework输出到bundle中,而weex则是输出具体的功能逻辑包,相应的依赖包则由weex的framework层来提供。weex能够天然的支持分包问题解决了更新迭代的加载速度问题,react-native则需要通过bundle-metro或者其他形式来进行分包,以优化包的加载速度

5、react-native有很多设计架构来支持,weex貌似是mvc,react-native的状态管理更好实现?

6、底层类库及功能库的支持熵react-native更加的丰富

7、weex能够编译出web端的代码,react-native不能,react-native更专注mobile

8、配置层面react-native只提供一个package.json来组织项目清晰明了,weex则做了很多的环境配置

9、打包方式上的差异,react-native打包通过命令打jsbundle,然后在通过原生命令打成对应平台的安装包,weex打包的话可以直接打成对应平台的安装包,如果只是打增量的js包的话则是通过weex run的形式来输出对应的包