Facebook在F8開發者大會上釋出開源行動裝置App開發框架React Native。不同於一般跨平臺Wrapper,程式打包後以呼叫裝置原生功能的方式,達到跨平臺的目的,React Native是一個使用JSX技術打造行動裝置App UI的開發框架,用Javascript直接掛勾(Hook)裝置原生元件,以實作真正的原生App,在各平臺達到相同的效能以及外觀。

JSX是Javascript的類XML語法擴充,使用JSX編譯器能把類XML語法轉換成Javascript。目前React Native只支援iOS,而Android還要再等等, Facebook同時也釋出React Native與React專用的開源整合開發環境(IDE) Nuclide

Facebook提到,以裝置原生App提供服務有其優勢,由於網頁平臺本身的限制,在使用者操作體驗上無法如原生App般的流暢。像是行動裝置平臺都有其特殊的功能元件可以使用,但在網頁平臺就無法利用這些元件,即使重新實作,功能也無法如原生的好,而行動裝置複雜的手勢辨識功能,也是目前網頁平臺缺乏的。

另外,原生App可以完整支援行動裝置的多執行緒,平行處理多重任務,同時做到數值運算、影片處理以及圖片編碼等工作,而網頁平臺受限於瀏覽器的運算資源分配,難以隨心所欲的建立高互動性的應用程式。

不過,Facebook也認為,撰寫原生App不是一件容易的事,從畫面設計來說,網頁平臺有不少框架,如React或Relay等可以方便的處理網頁畫面的呈現,但是行動裝置上卻沒有,工程師多數時候,必須要手動計算物件呈現在螢幕上的大小以及位置,而行動裝置的螢幕尺寸種類為數眾多,不少情況必須特殊處理,為了這工作開發團隊必須增加多餘的開發人力。

另外,Facebook也指出,網頁程式的部署只要將新程式上傳至伺服器,瀏覽器重新載入網頁就好,但是原生App卻不是這麼一回事,程式碼每一次的更改都需要重新編譯,即使只是移動一個元件在畫面呈現的位置也不例外,當程式專案越來越大的時候,編譯所需要的時間也越來越長,這樣繁複的過程大幅拖慢開發的腳步。

Facebook網頁程式每兩天可以部署一次,開發團隊可以很快速的得到功能測試的結果,但是原生App的A/B測試時間,往往要花上幾個星期甚至以月計算,因為App部署的次數遠低於網頁程式。

而React Native正是為了解決這些問題,為快速打造Javascript原生App而生。

React Native的概念源自於Facebook兩年前所發表的網頁開發框架React,今日不只Facebook的網頁元件多數都是以React開發,也越來越多的開發者選擇React開發自家網頁,Facebook表示,React幫助開發者專注在產品功能,而不用為了開發框架煩惱。React框架的概念是將一個應用程式,拆解為數個獨立的元件,這些元件不會互相影響,因此開發者不需要因為更改了單一元件的功能,而擔心整個系統受影響。另外,React最強大的是抽象化DOM與API以簡化開發模型。

熱門新聞

Advertisement