相同點:
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的形式來輸出對應的包