2021適合移動和桌面應用的JavaScript框架是什么
本文轉(zhuǎn)載自公眾號“讀芯術”(ID:AI_Discovery)
當聽到JavaScript這個詞的時候,“web開發(fā)”會一下子出現(xiàn)在我們的腦海中,因為JavaScript在很長一段時間里一直是web應用開發(fā)最廣泛使用的語言,Angular、React和Vue等框架目前也很有名。
盡管JavaScript主導著web開發(fā)領域,但是在移動和桌面應用開發(fā)領域,它不得不屈居于Java、C#和C++之下。然而,很多人可能沒注意到JavaScript對移動和桌面應用開發(fā)也產(chǎn)生了影響。
本文就將討論一些主要的JavaScript框架,以及它們在移動和桌面應用開發(fā)領域的優(yōu)缺點。
1.Electron
Electron是2013年推出的桌面應用開發(fā)框架。Electron允許開發(fā)者使用HTML、CSS和JavaScript開發(fā)應用,這與web開發(fā)棧很相似。此外,Electron是Node.js和Chromium的結合,這項結合使你能夠使用Electron運行任何web應用和Node應用。

圖源:https://2019.stateofjs.com/mobile-desktop/electron/
Electron的優(yōu)點:
- Chromium渲染用戶界面如同開發(fā)者工具一樣解鎖更多功能
- 功能類似web應用
- 可以使用HTML、CSS和JavaScript進行開發(fā)
- 可以專注核心應用開發(fā), Electron負責所有繁瑣的初始化步驟
- 多平臺支持
- 使用npm模塊
Electron的缺點:
- Chromium需要很大空間
- 安全問題
- 本地依賴性的跨平臺問題
2.React Native
React Native是目前最常用的移動開發(fā)平臺之一。React native于2015年推出,很快在JavaScript開發(fā)者中流行開來,因為以前他們必須學習像Java這樣的語言來開發(fā)移動應用。這種使用JavaScript開發(fā)移動應用的能力也吸引了許多web開發(fā)者使用React native開始了他們的移動開發(fā)之旅。

圖源:https://2019.stateofjs.com/mobile-desktop/reactnative/
JavaScript和JSX是ReactNative的主要組件,能夠在Android和IOS平臺上使用大部分代碼是其大規(guī)模推廣背后的主要原因。React Native有許多優(yōu)點,我列出的幾個重要優(yōu)點如下:
- 包含各種包和庫的大型生態(tài)系統(tǒng)
- 更短的開發(fā)時間
- 由Facebook支持的持續(xù)更新
- 多平臺支持
- 熱重裝
- 開源
- 支持創(chuàng)建簡化的用戶界面
- 大型社區(qū)和文檔
React Native的缺點有:
- 在一定程度上需要原生知識
- 相比純原生應用,可能存在性能問題
- 安全問題
3.Ionic
Ionic是另一個基于Javascript的開源移動開發(fā)框架,它與Angular密切相關。Ionic于2013年推出,它的黃金時代隨著Angular的崛起而到來。
與Electron相似,Ionic也包含HTML 5 SDK,能夠使用HTML、CSS和JavaScript開發(fā)本機應用。Ionic的重點是構建具有創(chuàng)新性和對用戶友好的應用,以滿足應用需求。但可悲的是,隨著React Native的大量推廣,Ionic的用戶數(shù)量正在減少。

圖源:https://2019.stateofjs.com/mobile-desktop/ionic/
Ionic的優(yōu)點有:
- 跨平臺支持
- 可以使用通用web開發(fā)技術進行開發(fā)
- 包含預設的組件和主題
- 易于學習
- 內(nèi)置命令行界面
- 最新版本支持React和Vue
Ionic的缺點有:
- 不適合高性能應用
- 熱重裝不可用
- 安全問題
- 缺乏穩(wěn)定插件
- 構建過程常見隨機失敗
除了上面提到的那些框架,還有很多其他的,如原生應用、Cordova和Expo,它們也可以用于開發(fā)移動和桌面應用。下圖顯示2019年State of JavaScript調(diào)查的統(tǒng)計數(shù)據(jù)。

圖源:https://2019.stateofjs.com/mobile-desktop/
可以清晰地看到,Electron和React Native都在頂端,而Ionic遠遠低于原生應用和Expo。但是相比之下會選擇Ionic的原因是它基于Angular,如果你對Angular比較熟悉,Ionic學起來就會比較簡單。
然而,也有很多不是基于JavaScript的框架,比如Flutter,在移動應用開發(fā)競爭中發(fā)展迅速。我認為這些JavaScript框架在未來很難與它們齊頭并進。如果對使用JavaScript開發(fā)移動和桌面應用感興趣,Electron和React Native是你的不錯選擇。