近日,華為發布鴻蒙2.0操作系統,該系統應用開發框架采用JavaScript作為開發語言,這對于前端開發工程師來說無疑是一個好消息!果然JavaScript才是全世界最好的語言…
JavaScript優勢:
- JS 生態圈目前來看形式很好,未來也是第一梯隊。
- JS 語言發展迅速,開源社區支持廣泛,上手入門門檻遠低于 Java 和 Native 語言。后期希望可以原生支持 TypeScript。
- JS + WebAssembly 性能還是不錯的,未來如果能加上 V8 速度會更快,不知道華為未來是否有能力自己做一個 VM 支持 WebAssembly。
- Write once,run everywhere。目前來看是對 JS + WebAssembly 最好的描述。
鴻蒙的 JS 框架 ace_lite_jsfwk,從名字中可以看出來這是一個非常輕量級的框架,官方介紹說是“輕量級 JS 核心開發框架”。其核心代碼只有 5 個 js 文件,大概也就 300-400 行代碼吧。
- runtime-coresrccoreindex.js
- runtime-coresrcobserverobserver.js
- runtime-coresrcobserversubject.js
- runtime-coresrcobserverutils.js
- runtime-coresrcprofilerindex.js
從名字可以看出來,這些代碼實現了一個觀察者模式。也就是說,它實現了一個非常輕量級的 MVVM 模式。通過使用和 vue2 相似的屬性劫持技術實現了響應式系統。
在「鴻蒙 2.0」上,開發者只需編寫形如 Vue 組件式的 JavaScript 業務邏輯,即可將其渲染為智能手表等嵌入式硬件上的 UI 界面。
這里將其分為自上而下的三個抽象層來介紹:
- JS 框架層,可理解為一個大幅簡化的 Vue 式 JavaScript 框架
- JS 引擎與運行時層,可理解為一個大幅簡化的 WebKit 式運行時
- 圖形渲染層,可理解為一個大幅簡化的 Skia 式圖形繪制庫
這三個抽象層,整體構成了一套面向嵌入式硬件的 GUI 技術棧。不同于許多高呼「不明覺厲 / 深不可測」的輿論,個人認為至少對于 GUI 部分,國內凡是接觸過目前主流 Hybrid 式跨端方案或 JS 運行時研發的一線開發者,都很容易從源碼出發來理解它。
對于「鴻蒙 2.0」在 GUI 部分的亮點,個人能想到這些:
- 確實有務實(但和當年 PPT 介紹完全兩碼事)的代碼。
- 不是 WebView 套殼,布局和繪制是自己做的。
- 無需超過大學本科水平的計算機知識,也能順利閱讀理解。
而至于明顯(不只是某幾行代碼寫得丑)的缺失或問題,目前看來則有這么一些:
JS 框架層
- 沒有基本的組件間通信(如 props / emit 等)能力
- 沒有基本的自定義組件能力
- 沒有除基礎依賴追蹤以外的狀態管理能力
JS 引擎與運行時層
- 標準支持過低,無法運行 Vue 3.0 這類需 Proxy 的下一代前端框架
- 性能水平弱,難以支持中大型 JS 應用
- 沒有開放 DOM 式的對象模型 API,不利于上層抹平差異
圖形渲染層
- 沒有實質可用的 GPU 加速
- 沒有 SVG 和富文本等高級渲染能力
- Canvas 完成度低,缺狀態棧和很多 API
對于所有熟悉 JavaScript 的前端開發者們,JavaScript 被鴻蒙這樣的「國之重器」采用,可以大大增強前端的道路自信、理論自信、文化自信和技術棧自信。
想成為國之棟梁嗎?來寫 JavaScript 吧!