近日,華為發(fā)布鴻蒙2.0操作系統(tǒng),該系統(tǒng)應(yīng)用開(kāi)發(fā)框架采用JavaScript作為開(kāi)發(fā)語(yǔ)言,這對(duì)于前端開(kāi)發(fā)工程師來(lái)說(shuō)無(wú)疑是一個(gè)好消息!果然JavaScript才是全世界最好的語(yǔ)言…
JavaScript優(yōu)勢(shì):
- JS 生態(tài)圈目前來(lái)看形式很好,未來(lái)也是第一梯隊(duì)。
- JS 語(yǔ)言發(fā)展迅速,開(kāi)源社區(qū)支持廣泛,上手入門(mén)門(mén)檻遠(yuǎn)低于 Java 和 Native 語(yǔ)言。后期希望可以原生支持 TypeScript。
- JS + WebAssembly 性能還是不錯(cuò)的,未來(lái)如果能加上 V8 速度會(huì)更快,不知道華為未來(lái)是否有能力自己做一個(gè) VM 支持 WebAssembly。
- Write once,run everywhere。目前來(lái)看是對(duì) JS + WebAssembly 最好的描述。

鴻蒙的 JS 框架 ace_lite_jsfwk,從名字中可以看出來(lái)這是一個(gè)非常輕量級(jí)的框架,官方介紹說(shuō)是“輕量級(jí) JS 核心開(kāi)發(fā)框架”。其核心代碼只有 5 個(gè) js 文件,大概也就 300-400 行代碼吧。
- runtime-coresrccoreindex.js
- runtime-coresrcobserverobserver.js
- runtime-coresrcobserversubject.js
- runtime-coresrcobserverutils.js
- runtime-coresrcprofilerindex.js
從名字可以看出來(lái),這些代碼實(shí)現(xiàn)了一個(gè)觀察者模式。也就是說(shuō),它實(shí)現(xiàn)了一個(gè)非常輕量級(jí)的 MVVM 模式。通過(guò)使用和 vue2 相似的屬性劫持技術(shù)實(shí)現(xiàn)了響應(yīng)式系統(tǒng)。
在「鴻蒙 2.0」上,開(kāi)發(fā)者只需編寫(xiě)形如 Vue 組件式的 JavaScript 業(yè)務(wù)邏輯,即可將其渲染為智能手表等嵌入式硬件上的 UI 界面。
這里將其分為自上而下的三個(gè)抽象層來(lái)介紹:
- JS 框架層,可理解為一個(gè)大幅簡(jiǎn)化的 Vue 式 JavaScript 框架
- JS 引擎與運(yùn)行時(shí)層,可理解為一個(gè)大幅簡(jiǎn)化的 WebKit 式運(yùn)行時(shí)
- 圖形渲染層,可理解為一個(gè)大幅簡(jiǎn)化的 Skia 式圖形繪制庫(kù)

這三個(gè)抽象層,整體構(gòu)成了一套面向嵌入式硬件的 GUI 技術(shù)棧。不同于許多高呼「不明覺(jué)厲 / 深不可測(cè)」的輿論,個(gè)人認(rèn)為至少對(duì)于 GUI 部分,國(guó)內(nèi)凡是接觸過(guò)目前主流 Hybrid 式跨端方案或 JS 運(yùn)行時(shí)研發(fā)的一線開(kāi)發(fā)者,都很容易從源碼出發(fā)來(lái)理解它。
對(duì)于「鴻蒙 2.0」在 GUI 部分的亮點(diǎn),個(gè)人能想到這些:
- 確實(shí)有務(wù)實(shí)(但和當(dāng)年 PPT 介紹完全兩碼事)的代碼。
- 不是 WebView 套殼,布局和繪制是自己做的。
- 無(wú)需超過(guò)大學(xué)本科水平的計(jì)算機(jī)知識(shí),也能順利閱讀理解。
而至于明顯(不只是某幾行代碼寫(xiě)得丑)的缺失或問(wèn)題,目前看來(lái)則有這么一些:

JS 框架層
- 沒(méi)有基本的組件間通信(如 props / emit 等)能力
- 沒(méi)有基本的自定義組件能力
- 沒(méi)有除基礎(chǔ)依賴追蹤以外的狀態(tài)管理能力
JS 引擎與運(yùn)行時(shí)層
- 標(biāo)準(zhǔn)支持過(guò)低,無(wú)法運(yùn)行 Vue 3.0 這類需 Proxy 的下一代前端框架
- 性能水平弱,難以支持中大型 JS 應(yīng)用
- 沒(méi)有開(kāi)放 DOM 式的對(duì)象模型 API,不利于上層抹平差異
圖形渲染層
- 沒(méi)有實(shí)質(zhì)可用的 GPU 加速
- 沒(méi)有 SVG 和富文本等高級(jí)渲染能力
- Canvas 完成度低,缺狀態(tài)棧和很多 API
對(duì)于所有熟悉 JavaScript 的前端開(kāi)發(fā)者們,JavaScript 被鴻蒙這樣的「國(guó)之重器」采用,可以大大增強(qiáng)前端的道路自信、理論自信、文化自信和技術(shù)棧自信。
想成為國(guó)之棟梁?jiǎn)幔縼?lái)寫(xiě) JavaScript 吧!