標籤:
轉載自:http://www.jianshu.com/p/ee1cdb33db8d
主要對比React Native和5+SDK(就是dcloud的SDK)兩個:
- 開發語言:三個都是用其他語言來統一開發IOS、android應用的架構技術,其中,React Native是使用純JS,5+SDK是使用JS和html,LuaView則是使用lua語言,三者都是使用css或者類css布局,這點都很像,
三者都可以使用原生(IOS、android)語言做一部分功能,比如有特殊效能要求的地方,就使用原生代碼寫,然後前端指令碼語言調用;
- 開發效率:RN和5+SDK是主要採用JS語言做開發,效率上不是問題,LuaView採用的是lua指令碼語言,這個大家都不熟悉,所以建議優先前兩種;
- 動態發布特性:三者都支援動態發布,而且最方便的是RN(簡要說下RN如何工作的,RN採用的是React技術<這個技術已經好多年了,是比較成熟的,只是RN才出現一年半>,這個技術是依託於node.js,並且發布後台採用node.js,檔案修改替換即發布,不需要做另外的版本控制<版本控制採用SVN或者git的方式>;發布時,在後台整個項目是作為node.js的一個node節點來發布的;主專案中基本上是一個空項目,引入其他的native模組,這樣管理很方便)
- 擴充性:都是動態發布,只有基礎native組件需要更新時才需要appstore審核發布;
- 可讀性:RN是採用純JS開發,不需要html,代碼上的行數一般要比5+SDK少很多,而且RN的開發過程中,規範做的也不錯(個人感覺html+js+css會導致代碼的行數上增大很多,閱讀起來也就沒那麼方便)
- 效能:RN是採用JS橋接加Native橋接兩個方式合并起來,然後加上增加對比差異化演算法增量渲染,而且渲染都是native渲染,效能雖然比純原生差一點,但是還是遠遠比H5的效能要快很多;
5+SDK,開發時是html+js+css來開發,其實真正執行渲染時仍然是webview,我用工具查看過最終的頁面結構,是一個webview,效能慢那是沒的說的了
- 相關開發工具:5+SDK提供一個工具,也不錯,不過我們一般都是用其他的文字編輯器就可以了;RN也提供了一個開發工具,atom編輯器的外掛程式nuclide,還不熟練,不過應該不錯(也有很多人使用sublime)。
- 開發初階段,上手速度:RN比較大型,雖然採用的是純JS開發,但是採用的React的開發方式,有很多的API需要熟悉和使用,相比於5+SDK上手速度是麻煩了點;而且RN的開發環境的搭建和使用需要很多的命令列工具,這也給RN的上手增加了一定的困難,不過用熟練了,就會發現RN這種方式的好,那真是好不好誰用誰知道(貌似5+SDK也是需要熟悉很多API,這點好像差別不是特別大);
- 社區力量:RN在React之後誕生了僅僅一年半,但是github的星數已經達到3、4萬了,這個火熱程度要遠遠比其他的架構熱門了太多了,社區的力量大,就意味著坑少,或者說即使有坑修複的也快,有問題能找到解決方案的速度也越快,架構完善的速度也越快
- 開源:這也是很重要的因素,RN和LuaView是開源的,開源就意味著我們開發人員可以掌控的力度就越大,這年頭,架構不開源,早晚得死;
- 文檔:RN的文檔還是很全的,還有很多外文翻譯,官方也有相關的視頻,5+sdk和LuaView文檔就很一般般,熱別是5+SDK,不開源,文檔就不更新;
- RN的另外一個好處:RN同屬於React,文法特點都一致的,React的口號就是learn once, write everywhere,而且React就是為web開發而產生,熟練了這個,可以把公司相關模組,比如說web端都可以統一了;當然5+SDK也可以做到這點,LuaView做不到這點,它只適用於IOS、Android的適配。
最後分享一個找到的一個別人開源出來的RN開發的APP:
https://github.com/soliury/noder-react-native
對比React Native、dcloud、LuaView三個架構技術(內部)