關(guān)于react native和weex之我見
寫在前面
我是一個主android開發(fā),原生的ios開發(fā)也算是初窺門徑,主要是有一些東西如果能一次性開發(fā),多次使用就好了,跨平臺性嘛
本文沒有代碼,只是一些簡單的看法
跨平臺的探索
這里就有幾個選擇了,有純粹的網(wǎng)頁嵌入式開發(fā),雖然是一個解決方案,但是畢竟不原生,而且網(wǎng)頁渲染很不靠譜的感覺,否定掉了
然后想起了react native和weex,都號稱是使用web語言開發(fā),然后渲染成原生控件,而且還支持熱更新!
好高端大氣的樣子啊!去嘗試下吧
react native
首先是react native,簡稱RN
facebook的開源項目,語法和文檔都還算可以接受
開發(fā)環(huán)境配置
我是jetbrain的忠實(shí)粉絲嘛,webstorm走起來,破解的方案自己baidu吧,這里就不宣傳了
導(dǎo)航條的問題
我翻遍了所有的文檔,沒找到一個考慮的導(dǎo)航控制器,導(dǎo)航條雖然有一個react-navigation
但是我使用了一下這個,如果是自己寫一個自己的項目還好,但是我們畢竟不是設(shè)計師,國內(nèi)的設(shè)計們從來都是按照自己的方案設(shè)計導(dǎo)航條的啊!真沒幾個人是用系統(tǒng)自帶的方案,這里用react的navigation很難自定義,我這里沒找到可以修改標(biāo)題顏色的方案
而且還需要吐槽一點(diǎn),我認(rèn)為網(wǎng)頁端最強(qiáng)的一點(diǎn)就是百分比適配方案是css自帶的,非常強(qiáng)大,而這里居然沒有了,完全是px,這樣面對不同的平臺真的能好好的適配嗎
運(yùn)行
這里就要說webstorm對于react native的支持了,幫我們?nèi)颗渲煤昧?可以用鼠標(biāo)選擇ios/android直接運(yùn)行就行了,真是diao啊
日志問題/debug問題
和源生相比,android studio/xcode 都是可以直接在ide里直接可以看到日志的,調(diào)試相對很方便,這里就不是這樣了,真的很麻煩,需要在模擬器里開debug模式,然后chrome打開網(wǎng)頁,開發(fā)者模式,看控制臺才能看見
這個時候我才知道,我們原生開發(fā)的開發(fā)環(huán)境真的比網(wǎng)頁端的兄弟們好太多了
動態(tài)部署
可以直接在模擬器點(diǎn)cmd+R就可以了 好簡單啊!
直接原地重新運(yùn)行,我靠,什么時候我們源生也能這樣就好了
頁面跳轉(zhuǎn)問題
在android中有intent開activity的方案,ios中有modal跳轉(zhuǎn)開新頁面
RN這里就不行了,因為本質(zhì)上android是運(yùn)行在同一個Activity中的,ios的話應(yīng)該是一個UIViewController中吧,然后利用內(nèi)置的引擎將js渲染成源生代碼進(jìn)行展示,這里我想如果我需要跳轉(zhuǎn)的話,可以自己內(nèi)嵌代碼,利用源生的方案跳轉(zhuǎn),然后回調(diào)到RN中來,理論上可行,后續(xù)我自己開發(fā)下試試看吧
小總結(jié)
RN其實(shí)完全可以承載簡單的開發(fā)任務(wù),比如是交互性質(zhì),或者展示頁面時,完全可以使用RN來開發(fā),但是學(xué)習(xí)成本不算太低
另外就是當(dāng)你有很繁重的任務(wù),尤其是調(diào)用內(nèi)置的系統(tǒng)級API時,如藍(lán)牙的話如果能找到輪子還行,如果找不到那就很尷尬了
weex
阿里巴巴的項目嘛,在各種blog中也能見到vue的大名,這里想著可以嘗試下
優(yōu)勢/劣勢
對于中國人來說,這個原作者是中國人,相對來說中文的說明和解答就會很多,但是相對的,開源項目還是很需要英文社區(qū)的支持的,畢竟外國人對于開源社區(qū)的貢獻(xiàn)從目前來說還是高于中國的
開發(fā)環(huán)境
這個開發(fā)環(huán)境相對RN來說沒有那么好,因為ios/andorid的項目好像需要自己來建,這樣就很不友好了,對于有原生開發(fā)經(jīng)驗的人來說還算友好,但是如果沒有呢? 新入行的朋友想要快速的運(yùn)行起項目來回很困難,這樣的話對于新人來說門檻偏高,一個vue的開發(fā)人員轉(zhuǎn)到weex來的話還需要學(xué)習(xí)android/ios的開發(fā)配置知識,不利于快速入行,我記得當(dāng)前androidstudio只需要建立好項目,然后run就跑起來了
文檔
這個相對完善很多,畢竟中文的嘛,但是我學(xué)到一半學(xué)習(xí)不下去的很大原因是,我試驗自帶的控件indicator和對應(yīng)的demo代碼,發(fā)現(xiàn)選中顏色和背景顏色不生效,這我就很揪心了,如果api更新后又不反映到文檔上,讓人會很困惑,自己調(diào)試了找了幾個小時問題,發(fā)現(xiàn)居然是框架的問題,這個時候那種感覺就像吃了shi一樣難受
語法
這個我想說,個人感覺比RN友好了很多,而且看起來讓我想起了css+html+js的那種感覺,真的很友好
最后小小總結(jié)下
RN和weex都是很優(yōu)秀的項目,但是目前個人感覺還是不太適合開發(fā)大型項目,里面的坑現(xiàn)在還不好說,而且最大的問題是沒有完備的開發(fā)工具,雖然說NB的程序員都是用vim開發(fā)的 但是對于我等平庸之人來說,ide是開發(fā)必備的,因為靜態(tài)的語法檢查可以節(jié)省大家的時間,而且再怎么樣所有的一切都是依賴在andorid/ios本身的平臺上的
個人認(rèn)為:如果目前有兩端需求,又不要求界面風(fēng)格統(tǒng)一的應(yīng)用,且是新應(yīng)用,很適合使用RN/weex開發(fā),但是本身公司就有ios/android開發(fā)的情況下,不太適合使用這個來開發(fā),原生開發(fā)很成熟,非常成熟,原則上不會出現(xiàn)大問題,而且解決問題的方案會很多,混合app的開發(fā),第一個版本的壓力會非常大!!
而RN/weex還處于快速迭代的過程中,目前應(yīng)該還不適合接入,如果再過一年,我覺得可以考慮使用RN開發(fā)應(yīng)用
我想這次app store大規(guī)模的下架熱更新的事件也應(yīng)該會給大家一個警鐘吧
個人觀點(diǎn),有不同意的不要噴
你好!react native
你好!weex
希望明年再看會有不同的看法
希望我可以早日可以一套代碼多端使用!
2018-07-20 更新 以上是2017年末的觀點(diǎn)
我在今年4月左右投入了flutter的開發(fā)大軍中