全新框架?微信小程序與React Native的異同之處


全新框架?微信小程序與React Native的異同之處

鐵手 發布於 2016-10-28 

前言

什么是微信小程序?

 
微信官方這么解釋:
 
我們提供了一種新的開放能力,開發者可以快速地開發一個小程序。小程序可以在微信內被便捷地獲取和傳播,同時具有出色的使用體驗。
 
從字面上理解,微信小程序和一般的App程序不一樣,它不存在安裝卸載的過程,一切操作都是在微信中進行,且可以做到快速開發、便捷使用。且由於是在微信內部進行使用,它無疑可以統一Android、IOS、WP三大平台,實現了一套程序,在多處運行,這就相當於微信成為了一個系統架構,避開了原始的微信搭載環境。
 
在未內測時,很多人都把小程序當做一個內嵌web應用,而鑒於web應用體驗感較差,很多業內人士都持有保留意見。但當如今內測已經進行了一段時間,通過官方公布的文檔與相關語法結構不難看出,微信小程序的開發技術上是使用一種類似 React Native 的框架來保證程序的原生性和穩定性。
 
什么是React Native?

Facebook 在 React.js Conf 2015 大會上推出了基於 JavaScript 的開源框架 React Native。
官方文檔這樣解釋:
 
React Native使你能夠在Javascript和React的基礎上獲得完全一致的開發體驗,構建世界一流的原生APP。
 
React Native着力於提高多平台開發的開發效率 —— 僅需學習一次,編寫任何平台(Learn once, write anywhere)。
 
本文着重對比React Native與微信小程序的異同之處,並簡要闡述相關架構及應用前景。
 

一、項目結構
 
微信已經提供了小程序開發工具,以下是開發工具demo工程的示意圖:

 
而其demo項目結構:

入口文件就是最外層的app.js,app.json,app.wxss。
app.js   提供入口文件以及一些初始化綁定。
app.json 提供項目的結構和項目配置
app.wxss 內部頁面樣式
page目錄 存放需要實現具體功能的頁面
util目錄 存放需要用到的工具函數
image目錄 存放需要的圖片
 
app.json是小程序的配置文件,其中存在多個配置項:

下圖是各配置的內容與描述。


 
這里需要提一下的是微信定義的新文件格式:其中wxml與HTML類似,wxss與CSS類似,而js文件以及文件夾則包含組件邏輯及資源文件。
 
我們可以對比下React Native工程的demo項目結構

 
每個項目的根目錄下面,一般都有一個package.json文件,定義了這個項目所需要的各種模塊,以及項目的配置信息(比如名稱、版本、許可證等元數據)。

npm install會根據這個配置文件,自動下載所需的模塊,也就是配置項目所需的運行和開發環境。
.json配置文件是在js開發中比較常見的結構,這里也不做多的闡述。而js文件以及文件夾也包含組件邏輯及資源文件。
 
 
二、基礎組件庫

微信提供了一套基礎組件庫與API,分為八大類:

視圖容器(View Container):

基礎內容(Basic Content):

表單(Form):

操作反饋(Interaction):

導航(Navigation):

多媒體(Media):

地圖(Map):

畫布(Canvas):

 
顧名思義,這些組件都存在相應的功能,且每個UI組件庫都具備相應的功能組件。
對比下RN的組件庫

 
和RN不同的是,微信小程序應該只能基於微信提供的組件進行個性化封裝,而RN可以基於系統組件進行個性化封裝。 原因字是微信小程序更偏向於微信這個架構,以微信為系統所創建。
這里簡要對比下兩個組件庫中的scroll-view組件。
微信小程序中使用豎向滾動時,需要給<scroll-view/>一個固定高度,通過 WXSS 設置 height。

示例代碼:

之后只需在js中進行調用:

而RN幾近類似。下面的示例代碼創建了一個垂直滾動的ScrollView,其中還混雜了圖片和文字組件。


三、底層API

微信小程序提供豐富的微信原生API,可以方便的調起微信提供的能力,主要API分為以下幾類:網絡 API /媒體 API /數據 API/位置 API /設備 API /界面 API/開放接口。
 
從提供的API不難看出,API主要是微信能夠提供的相應的一些接口,主要包括網絡狀態以及獲取用戶信息,本地存儲,支付功能等。
而相比與功能比較單一的微信小程序,RN則提供了更多的接口與原生的系統Andorid/IOS進行了更多的交互與使用。

 
這里就不在過多闡述各個API的相關細節,只從大體框架進行考慮。微信小程序采用的基於微信的原生開發,包括小工具的開發工具都很輕量。而當開發完成后,微信會采用在雲端OS編譯打包的方式,將編譯后的小程序發送到微信上,之后微信內置的解析器會解析這個小程序並進行展現。

 
而RN輪子則比微信小程序更加的注重結合,它的原理較為復雜,不僅存在Bridge為核心的與原生系統交互的橋梁,在整個界面展示和程序使用方面顯得更加嚴謹和完善。但不可否認,微信小程序的優勢就是在輕量便捷上。

四、應用范圍

不可否認,鑒於微信小程序的便捷以及輕量的優點,是比較適合服務性程序的,也就是常說的“用完即走”。適用范圍可以參考以下幾點:
1. 流程簡單、界面簡潔
2. 較為低頻
3. 無需停留、用戶可以暫時放棄

比較典型的譬如家政、在線教育、求職招聘、二手買賣、旅游、票務等特定場景。

而React Native則更為廣泛,小到簡單的獲取天氣程序大到游戲及多頁面的電商產品都可以使用。其優點在於,React Native它具有跨平台特性,不需要開發者深入了解各平台Android/IOS的具體框架,就能開發一款高效App。同時,由於也是使用JavaScript語言,入門門檻相對較低,且React Native不僅支持與各平台進行交互使用,還能很好的移植到原生項目,這就讓RN使用范圍更為廣泛。

五、前景與展望

如今React Native也已經推出了一年多,版本也推出到0.34,其支持的框架也從IOS衍生到了Android,Facebook 也在大力推廣該架構,其前景自然一片大好。

但剛剛推出的微信小程序在國內還是有一定的優勢。首先微信有龐大的基礎用戶,小程序又無需下載安裝和更新很類似於微信公眾號,不想使用可以取消關注,且創建與開發簡單方便,可以很好的進行傳播和吸引用戶。

但這微信小程序存在巨大劣勢:
1. 平台封閉性過高,大量原生系統服務無法使用。
2. 不兼容某些WEB標准協議,不能跨瀏覽器使用。
3. 不支持nmp,npm架構正是React Native所使用的。
4. 組件單一,很多場景雖然可以使用,但功能仍舊單一。
5. IOS是否會同意微信內嵌其他的應用程序?這值得商榷。
 
不過可以想象,在不久的的將來,將會涌現一大批“微信小程序”,這種新的框架是否能夠滿足需求將會經過時間的檢驗。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM