一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

服務(wù)器之家:專注于服務(wù)器技術(shù)及軟件下載分享
分類導(dǎo)航

node.js|vue.js|jquery|angularjs|React|json|js教程|

服務(wù)器之家 - 編程語言 - JavaScript - 鴻蒙系統(tǒng)中的 JS 開發(fā)框架

鴻蒙系統(tǒng)中的 JS 開發(fā)框架

2021-09-30 14:59justjavac JavaScript

最近華為鴻蒙OS 2.0正式開源!關(guān)于鴻蒙的教程其實(shí)網(wǎng)上也已經(jīng)有一些嘗鮮的小伙伴分享了相關(guān)文章,這篇文章主要為大家詳細(xì)介紹了鴻蒙系統(tǒng)中的 JS 開發(fā)框架,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下

今天鴻蒙終于發(fā)布了,開發(fā)者們也終于“沸騰”了。

源碼托管在國內(nèi)知名開源平臺(tái)碼云上,https://gitee.com/openharmony

我也第一時(shí)間下載了源碼,研究了一個(gè)晚上,順帶寫了一個(gè) hello world 程序,還順手給鴻蒙文檔提了 2 個(gè) PR。

當(dāng)然我最感興趣的就是鴻蒙的 JS 框架 ace_lite_jsfwk,從名字中可以看出來這是一個(gè)非常輕量級(jí)的框架,官方介紹說是“輕量級(jí) JS 核心開發(fā)框架”。

當(dāng)我看完源碼后發(fā)現(xiàn)它確實(shí)輕。其核心代碼只有 5 個(gè) js 文件,大概也就 300-400 行代碼吧。(沒有單元測(cè)試)

runtime-core\src\core\index.js
runtime-core\src\observer\observer.js
runtime-core\src\observer\subject.js
runtime-core\src\observer\utils.js
runtime-core\src\profiler\index.js

從名字可以看出來,這些代碼實(shí)現(xiàn)了一個(gè)觀察者模式。也就是說,它實(shí)現(xiàn)了一個(gè)非常輕量級(jí)的 MVVM 模式。通過使用和 vue2 相似的屬性劫持技術(shù)實(shí)現(xiàn)了響應(yīng)式系統(tǒng)。這個(gè)應(yīng)該是目前培訓(xùn)班的“三大自己實(shí)現(xiàn)”之一了吧。(自己實(shí)現(xiàn) Promise,自己實(shí)現(xiàn) vue,自己實(shí)現(xiàn) react)

鴻蒙系統(tǒng)中的 JS 開發(fā)框架

utils 里面定義了一個(gè) Observer 棧,存放了觀察者。subject 定義了被觀察者。當(dāng)我們觀察某個(gè)對(duì)象時(shí),也就是劫持這個(gè)對(duì)象屬性的操作,還包括一些數(shù)組函數(shù),比如 push、pop 等。這個(gè)文件應(yīng)該是代碼最多的,160 行。observer 的代碼就更簡(jiǎn)單了,五六十行。

而當(dāng)我們開發(fā)的時(shí)候,通過 Toolkit 將開發(fā)者編寫的 HML、CSS 和 JS 文件編譯打包成 JS Bundle,然后再將 JS Bundle 解析運(yùn)行成C++ native UI 的 View 組件進(jìn)行渲染。

“通過支持三方開發(fā)者使用聲明式的 API 進(jìn)行應(yīng)用開發(fā),以數(shù)據(jù)驅(qū)動(dòng)視圖變化,避免了大量的視圖操作,大大降低了應(yīng)用開發(fā)難度,提升開發(fā)者開發(fā)體驗(yàn)”。基本上就是一個(gè)小程序式的開發(fā)體驗(yàn)。

鴻蒙系統(tǒng)中的 JS 開發(fā)框架

在 src\core\base\framework_min_js.h 文件中,這段編譯好的 js 被編譯到了 runtime 里面。編譯完的 js 文件不到 3K,確實(shí)夠輕量。

js runtime 沒有使用 V8,也沒有使用 jscore。而是選擇了 JerryScript。JerryScript 是用于物聯(lián)網(wǎng)的超輕量 JavaScript 引擎。它能夠在內(nèi)存少于 64 KB 的設(shè)備上執(zhí)行 ECMAScript 5.1 源代碼。這也是為什么在文檔中說鴻蒙 JS 框架支持 ECMAScript 5.1 的原因。

從整體看這個(gè) js 框架大概使用了 96% 的 C/C++ 代碼,1.8% 的 JS 代碼。在 htm 文件中寫的組件會(huì)被編譯為原生組件。而 app_style_manager.cpp 和同級(jí)的七八個(gè)文件則用來解析 css,最終生成原生布局。

雖然在 SDK 中有幾個(gè) weex 包,也發(fā)現(xiàn)了 react 的影子。但是在 C/C++ 代碼中并沒有看到 yoga 相關(guān)的內(nèi)容(全局搜索沒發(fā)現(xiàn))。而 SDK 中的那些包僅僅是做 loader 用的,大概是為了在 webpack 打包時(shí)解析 htm 組件用的。將 htm 的 template 編譯為 js 代碼。

整體而言,比我預(yù)想的要好一些。

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持我們。

原文鏈接:https://mp.weixin.qq.com/s/IhACmlQ6Df0A2R-Y9Kkxig

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 国语自产拍在线观看7m | 国产一区在线免费观看 | 欧美va免费大片 | 精品一区视频 | 国产精品午夜性视频网站 | 成人网中文字幕色 | 国产精品久久久久久久久 | 日本精品www色 | 精品图区| 九九精品热 | 国产中文视频 | 欧美日韩va | 国产成人一区二区三区视频免费蜜 | 91制片厂制作传媒免费版樱花 | 视频在线观看一区二区三区 | 亚洲精品国产精品精 | 91久久精品国产一区二区 | 免费的强动漫人物的 | 农村妇女野外牲交一级毛片 | 色综合视频在线观看 | 色综合色狠狠天天久久婷婷基地 | 亚洲女人国产香蕉久久精品 | 东京干福利 | 欧美黑人成人免费全部 | 777奇米影视一区二区三区 | 国产在线精品成人一区二区三区 | 三星w999 | 午夜宅男在线观看 | 娇喘嗯嗯 轻点啊视频福利 九九九九在线精品免费视频 | 亚洲国产成人久久99精品 | 99在线视频观看 | 色五月天天| 国内揄拍国内精品久久 | 情欲综合网 | 日本高清中文 | 91在线 一区 二区三区 | 四虎影视库永久在线地址 | a毛片在线免费观看 | 千金在线观看 | 韩国一区二区三区 | 久久爽狠狠添AV激情五月 |