JSer全棧化技術棧推薦(一)——原生移動端是天堂仍是泥潭

隨着以服務器端的NodeJS、桌面端的Electron和原生移動端React Native爲表明的全棧JS迅猛發展,真正生產環境中的「JS/前端技術全棧化」已經逐漸變爲可能。儘管在前端之外的領域裏,JavaScript還不能取代各領域本來主流語言的地位,但對於大量初創型公司或技術人手不足的團隊來講,更低的學習成本自己就是一種極大的優點。前端

對於技術學習而言,學得好和學得巧一樣重要,選對技術棧進行學習,可能會節省大量的時間和精力,更有可能帶來更多的機會。所以結合最新的NingJS會議上的趨勢和本身過去一段時間的實踐經驗,推薦將來一段時間比較值得學習和嘗試的技術棧。git

原生移動端

首先,不要幻想能用JavaScript在原生移動端一步登天,但也不要由於許多開發者對於React Native等技術的抵觸而感到畏懼。github

若是你/公司的目標不是一個QQ這個級別的大型App,你只是須要給你項目中日益複雜的Web移動端減負,用更強大原生性能去彌補Web移動端在複雜交互中的不足,而且你沒有時間或者興趣去學習原平生臺對應的語言,那麼如今機會來了。服務器

問題初現

分享一下我本身的經驗。在以前的一個Web項目中,前端使用的是Vue框架。隨着功能不斷迭代以及幾回專門針對移動端的重構以後,我認爲在業務需求和性能上已經找到了一個平衡點,當時認爲下一次比較大的優化可能就要基於Vue 2.0的服務器端渲染以及用本身寫的圖表庫替代項目中的第三方圖表庫。框架

可是在一次小規模的用戶內測中,咱們發現對於大多數非技術背景的用戶來講,對於性能問題依然是敏感又粗暴的。咱們不能期望去告訴每一個用戶「這個SPA超複雜的,能實現成這樣已經很棒了好嘛?」,只能繼續想辦法讓每一個頁面都能在那些內存快被佔滿的低端安卓手機上也保持必定的水準。svg

當我意識到Web性能終有盡頭、公司暫時也不可能招到兩個原平生臺的開發者時,我決定要不用那些JSer也能玩的方案先作個過得去的App?性能

Weex準備好了嗎

因爲前端使用的是Vue,所以Weex是一個很是天然地備選方案。學習

事實上,我在阿里的Weex內測的第一時間就申請了(當時上述項目還沒開始)。當我第一次下載Weex的playground把玩的時候,個人想法是「哇,不錯。」;當我準備開始第一個Weex項目的時候,個人想法是「咦,這文檔怎麼不太順」;當我暫時放下Weex,而且在四個月後評估它是否能幫助我完成個人第一款App時,個人想法是「怎麼還這樣...」測試

其實Weex的團隊已經作了不少很酷的工做了,可是對於一個0原生開發經驗的人來講,光是按要求搞定Android Studio就已經脫了一層皮,跟別說沒想到一個潛在的功能需求去查issue時,發現回覆老是「咱們正在排期開發」,這不免會給人帶來一種強烈的不肯定感。更關鍵的是文檔中有太多遺留問題,致使閱讀起來邏輯不夠通暢,進一步加深了各類小問題帶來的煩躁感。優化

所以在配置了一夜Weex環境依然沒有很清晰的思路的狀況下,我帶着對同時學習React和React Native的擔心轉向了React Native。

React Native不是銀彈,但威力不俗

做爲重點推薦的技術棧,這段少講小故事,多談談推薦的理由以及和Weex的對比吧。

  1. 首先是Getting Start部分坑很少,基本一次過成功,少數幾個問題都可以經過搜索快速解決,平復了我七上八下的心情。

  2. 其次是有比較優秀的開源項目做爲參考借鑑,例如Facebook本身開源了F8App,裏面有很多最佳實踐;其次社區也貢獻了不少優秀項目,我我的主要是參考reading這個項目,經過閱讀其源碼,儘快掌握React中的部分技巧。

  3. 同時不能忽略完整的調試、測試以及打包方案。這些對於沒有原生開發經驗的開發者來講,都是極其須要而且很難本身完成的。

  4. 大量的社區項目輔助。React Native社區貢獻的項目主要集中在幾個方面:兩個平臺都可用且表現一致的組件、一些須要寫原生代碼的功能例如第三方登陸、一些經常使用功能的移植例如iconfont和svg等。大部分項目都不是由Facebook主導的,可是React Native可以在生產上使用絕對離不開這些項目的貢獻。

基於以上這些理由,我認爲如今開始嘗試React Native是一個比較合適的時機,若是你也遇到我以前所描述的這類問題,不妨試試看。

至於一些其餘的方案例如Ionic、Cordova、Hbuilder、H5+等等我我的興趣不大。基於WebView作的各種優化,結果可能更像是性能以及學習成本都走向了一箇中間點,兩邊都不出彩。

用JS開發原生移動端有將來嗎

我認爲這個問題主要取決於社區先厭倦給React Native造輪子仍是主流原生開發者們先對React Native產生足夠多的興趣。不過在一段時間以內,React Native仍是會繼續向前衝。

固然如這段的標題所寫,咱們關注的不只僅是React Native。在剛剛結束的NingJS大會上,Vue的做者宣佈成爲Weex的技術顧問。對於我來講,這多是再次去嘗試Vue的一個理由,但願尤大大不只關注Weex自己的技術細節,還能給Weex帶來和Vue同樣嚴謹又易用的文檔風格。

可是Weex團隊在項目愈來愈偏離公司本來的業務需求以後還能對項目投入多少持續的熱情,以及可否在營造出一個願意不斷造輪子的社區,這都將決定咱們可否有機會把Weex用在本身的生產環境中。

相關文章
相關標籤/搜索