日B视频 亚洲,啪啪啪网站一区二区,91色情精品久久,日日噜狠狠色综合久,超碰人妻少妇97在线,999青青视频,亚洲一区二卡,让本一区二区视频,日韩网站推荐

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫(xiě)文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

基于鴻蒙的JS框架ace_lite_jsfwk開(kāi)發(fā)

鴻蒙系統(tǒng)HarmonyOS ? 來(lái)源:CSDN博主 ? 作者:迷渡 ? 2021-02-26 10:54 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

鴻蒙的發(fā)布了,讓開(kāi)發(fā)者們“沸騰”。

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

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

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

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

從名字可以看出來(lái),這些代碼實(shí)現(xiàn)了一個(gè)觀察者模式。也就是說(shuō),它實(shí)現(xiàn)了一個(gè)非常輕量級(jí)的 MVVM 模式。通過(guò)使用和 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)

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

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

“通過(guò)支持三方開(kāi)發(fā)者使用聲明式的 API 進(jìn)行應(yīng)用開(kāi)發(fā),以數(shù)據(jù)驅(qū)動(dòng)視圖變化,避免了大量的視圖操作,大大降低了應(yīng)用開(kāi)發(fā)難度,提升開(kāi)發(fā)者開(kāi)發(fā)體驗(yàn)”?;旧暇褪且粋€(gè)小程序式的開(kāi)發(fā)體驗(yàn)。

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

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

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

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

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

編輯:hfy

聲明:本文內(nèi)容及配圖由入駐作者撰寫(xiě)或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • JS
    JS
    +關(guān)注

    關(guān)注

    0

    文章

    80

    瀏覽量

    19110
  • 鴻蒙系統(tǒng)
    +關(guān)注

    關(guān)注

    183

    文章

    2642

    瀏覽量

    70153
收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評(píng)論

    相關(guān)推薦
    熱點(diǎn)推薦

    鴻蒙跨端實(shí)踐-JS虛擬機(jī)架構(gòu)實(shí)現(xiàn)

    類似的框架,我們需要自行實(shí)現(xiàn)以確保核心基礎(chǔ)能力的完整。 鴻蒙虛擬機(jī)的開(kāi)發(fā)經(jīng)歷了從最初 ArkTs2V8 到 JSVM + Roma新架構(gòu)方案 。在此過(guò)程中,我們實(shí)現(xiàn)了完整的鴻蒙版的“J
    的頭像 發(fā)表于 09-30 14:42 ?4031次閱讀
    <b class='flag-5'>鴻蒙</b>跨端實(shí)踐-<b class='flag-5'>JS</b>虛擬機(jī)架構(gòu)實(shí)現(xiàn)

    鴻蒙ACE開(kāi)發(fā)框架總結(jié)

    ACE_Engine 框架是 OpenHarmony 的 UI 開(kāi)發(fā)框架,提供開(kāi)發(fā)者在進(jìn)行應(yīng)用 UI 開(kāi)
    的頭像 發(fā)表于 01-09 10:05 ?3254次閱讀

    【HarmonyOS HiSpark AI Camera試用連載 】鴻蒙JS UI介紹

    )和智能穿戴(Wearable)應(yīng)用開(kāi)發(fā),針對(duì)輕量級(jí)智能穿戴(Lite Wearable)請(qǐng)參考輕量級(jí)智能穿戴開(kāi)發(fā)。聲明式編程JS UI框架
    發(fā)表于 01-11 20:10

    鴻蒙開(kāi)發(fā)AI應(yīng)用(八)JS框架訪問(wèn)內(nèi)核層

    + CSS + HTML的技術(shù)上進(jìn)行,相關(guān)內(nèi)容可以回顧用鴻蒙開(kāi)發(fā)AI應(yīng)用(五)UI篇。JS應(yīng)用開(kāi)發(fā)框架原理在第六篇里,我們已經(jīng)體驗(yàn)了一下使
    發(fā)表于 02-06 19:36

    JS應(yīng)用開(kāi)發(fā)框架組件

    :https://gitee.com/openharmony/docs/blob/master/zh-cn/readme/JS應(yīng)用開(kāi)發(fā)框架.md相關(guān)倉(cāng)ace_engine_lite
    發(fā)表于 04-23 18:05

    openharmony ACE開(kāi)發(fā)框架詳解

      ACE(Ability Cross-platform Environment)開(kāi)發(fā)框架ACE框架的輕量實(shí)現(xiàn)。它可以提供一套跨平臺(tái)的類w
    發(fā)表于 04-07 14:52

    鴻蒙應(yīng)用開(kāi)發(fā)JS UI框架如何實(shí)現(xiàn)高德地圖的訪問(wèn)?

    鴻蒙應(yīng)用,現(xiàn)在分為Java UI框架和Ark UI框架,其中JS UI開(kāi)發(fā)框架Ark UI
    發(fā)表于 04-28 11:44

    一文總結(jié)ACE代碼框架

    一、前言ACE_Engine框架是OpenAtom OpenHarmony(簡(jiǎn)稱“OpenHarmony”)的UI開(kāi)發(fā)框架,為開(kāi)發(fā)者提供在進(jìn)
    發(fā)表于 01-10 11:09

    ACE代碼框架總結(jié)

    一.ACE_Engine框架概述:ACE_Engine框架是OpenHarmony 的UI開(kāi)發(fā)框架
    發(fā)表于 03-22 09:11

    AMBA 4 ACEACE Lite協(xié)議校驗(yàn)器用戶指南

    本書(shū)是為系統(tǒng)設(shè)計(jì)者、系統(tǒng)集成商和驗(yàn)證工程師編寫(xiě)的,他們希望確認(rèn)設(shè)計(jì)符合相關(guān)AMBA4協(xié)議。這可以是ACEACE Lite
    發(fā)表于 08-10 07:01

    鴻蒙系統(tǒng)中JS框架的逐行分析

    其實(shí)是由 C++ 來(lái)承擔(dān)的。JavaScript 代碼只是其中的 ViewModel 層。 鴻蒙 JS 框架是零依賴的,只在開(kāi)發(fā)打包過(guò)程中
    的頭像 發(fā)表于 10-21 14:37 ?2985次閱讀

    使用鴻蒙JS框架寫(xiě)出來(lái)的JS代碼長(zhǎng)什么樣

    鴻蒙 JS 框架是零依賴的,只在開(kāi)發(fā)打包過(guò)程中使用到了一些 npm 包。打包完之的代碼是沒(méi)有依賴任何 npm 包的。
    的頭像 發(fā)表于 03-26 15:46 ?3516次閱讀

    單線程也能開(kāi)發(fā)異步任務(wù)?ACE JS框架到底是如何做到的

    ,用JS語(yǔ)言開(kāi)發(fā)是否會(huì)導(dǎo)致硬件資源無(wú)法充分利用的情況呢? 本文給大家介紹“ACE JS的單線程異步機(jī)制”就是解決這個(gè)問(wèn)題的。然而,說(shuō)到 “單線程”與“異步”,大家可能會(huì)比較疑惑,因?yàn)閱?/div>
    的頭像 發(fā)表于 08-13 17:16 ?3078次閱讀
    單線程也能<b class='flag-5'>開(kāi)發(fā)</b>異步任務(wù)?<b class='flag-5'>ACE</b> <b class='flag-5'>JS</b><b class='flag-5'>框架</b>到底是如何做到的

    OpenHarmony ACE 代碼框架總結(jié)

    一:ACE_Engine框架概述: ACE_Engine框架是OpenHarmony 的UI開(kāi)發(fā)框架
    的頭像 發(fā)表于 12-30 19:05 ?2049次閱讀

    一文總結(jié) ACE 代碼框架

    田可輝 鴻湖萬(wàn)聯(lián)高級(jí)技術(shù)專家 鴻湖萬(wàn)聯(lián)產(chǎn)品推薦官 一、前言 ACE_Engine框架是OpenAtom OpenHarmony(簡(jiǎn)稱“OpenHarmony”)的UI開(kāi)發(fā)框架,為
    的頭像 發(fā)表于 01-11 03:30 ?2792次閱讀
    安达市| 浦城县| 蕉岭县| 屯留县| 怀远县| 霍林郭勒市| 布尔津县| 阜新市| 云林县| 盐源县| 隆安县| 焉耆| 赣州市| 晋城| 婺源县| 和硕县| 康马县| 同江市| 正镶白旗| 吉木萨尔县| 丽水市| 神农架林区| 华阴市| 浠水县| 喀喇| 昌吉市| 卢龙县| 青河县| 怀宁县| 襄垣县| 湾仔区| 郁南县| 禹城市| 乐陵市| 霸州市| 揭东县| 宜兰市| 太和县| 崇阳县| 苍溪县| 祁东县|