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