鸿蒙系统中的 JS 开发框架

更新日期: 2020-09-12阅读: 1.3k标签: 鸿蒙

鸿蒙终于发布了,开发者们也终于“沸腾”了。
源码托管在国内知名开源平台码云上,https://gitee.com/openharmony
我也第一时间下载了源码,研究了一个晚上,顺带写了一个 hello world 程序,还顺手给鸿蒙文档提了 2 个 PR。
当然我最感兴趣的就是鸿蒙的 JS 框架 ace_lite_jsfwk,从名字中可以看出来这是一个非常轻量级的框架,官方介绍说是“轻量级 JS 核心开发框架”。
当我看完源码后发现它确实轻。其核心代码只有 5 个 js 文件,大概也就 300-400 行代码吧。(没有单元测试)

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
从名字可以看出来,这些代码实现了一个观察者模式。也就是说,它实现了一个非常轻量级的 MVVM 模式。通过使用和 vue2 相似的属性劫持技术实现了响应式系统。这个应该是目前培训班的“三大自己实现”之一了吧。(自己实现 Promise,自己实现 vue,自己实现 react


utils 里面定义了一个 Observer 栈,存放了观察者。subject 定义了被观察者。当我们观察某个对象时,也就是劫持这个对象属性的操作,还包括一些数组函数,比如 push、pop 等。这个文件应该是代码最多的,160 行。observer 的代码就更简单了,五六十行。
而当我们开发的时候,通过 Toolkit 将开发者编写的 HML、css 和 JS 文件编译打包成 JS Bundle,然后再将 JS Bundle 解析运行成C++ native UI 的 View 组件进行渲染。
“通过支持三方开发者使用声明式的 api 进行应用开发,以数据驱动视图变化,避免了大量的视图操作,大大降低了应用开发难度,提升开发者开发体验”。基本上就是一个小程序式的开发体验。


在 src\core\base\framework_min_js.h 文件中,这段编译好的 js 被编译到了 runtime 里面。编译完的 js 文件不到 3K,确实够轻量。
js runtime 没有使用 V8,也没有使用 jscore。而是选择了 JerryScript。JerryScript 是用于物联网的超轻量 JavaScript 引擎。它能够在内存少于 64 KB 的设备上执行 ECMAScript 5.1 源代码。这也是为什么在文档中说鸿蒙 JS 框架支持 ECMAScript 5.1 的原因。
从整体看这个 js 框架大概使用了 96% 的 C/C++ 代码,1.8% 的 JS 代码。在 htm 文件中写的组件会被编译为原生组件。而 app_style_manager.cpp 和同级的七八个文件则用来解析 css,最终生成原生布局。
虽然在 SDK 中有几个 weex 包,也发现了 react 的影子。但是在 C/C++ 代码中并没有看到 yoga 相关的内容(全局搜索没发现)。而 SDK 中的那些包仅仅是做 loader 用的,大概是为了在 webpack 打包时解析 htm 组件用的。将 htm 的 template 编译为 js 代码。


链接: https://fly63.com/article/detial/10396

任正非:鸿蒙开源是对全世界小公司创新的支持

鸿蒙系统成为万众瞩目的焦点。华为消费者业务 CEO 余承东曾表示,华为不是要做另一个安卓,鸿蒙要做下一代操作系统,也就是 5G 条件下万物互联的新场景。那么,在复杂环境的影响下

HarmonyOS(鸿蒙系统)体系

鸿蒙系统(HarmonyOS)是第一款基于微内核的全场景分布式OS,是华为自主研发的操作系统。华为会率先部署在智慧屏、车载终端、穿戴等智能终端上,未来会有越来越多的智能设备使用开源的鸿蒙OS。

HarmonyOS 华为鸿蒙概述

HarmonyOS是一款“面向未来”、面向全场景(移动办公、运动健康、社交通信、媒体娱乐等)的分布式操作系统。在传统的单设备系统能力的基础上,HarmonyOS提出了基于同一套系统能力、适配多种终端形态的分布式理念,能够支持多种终端设备

鸿蒙生态下app的四种存在方式

近日,华为正式发布了HarmonyOS 2.0.0,这宣告手机版的鸿蒙操作系统正式到来,很多小伙伴关心手机升级鸿蒙操作系统后,以前的安卓APP还能使用吗?目前,鸿蒙生态下的app会以四种方式存在。

JS语言在HarmonyOS应用开发框架中的作用

在万物互联(Internet of Things,简称IoT)时代,JS(JavaScript)语言越来越重要了,并且受到了很多开发者小伙伴的关注。HarmonyOS也选择JS作为其应用开发的一种语言,肯定有不少好奇的小伙伴想知道:JS语言有什么优势呢?

前端卷鸿蒙?推荐 12 个yyds的开源鸿蒙实战项目

随着鸿蒙操作系统(HarmonyOS)的崛起,华为自主研发的这款操作系统已经吸引了无数关注。本文将分享 12 个开源的鸿蒙实战项目,无论你是鸿蒙领域的新兵,还是经验丰富的老将,希望能从这些项目中获得启发和实用经验

内容以共享、参考、研究为目的,不存在任何商业目的。其版权属原作者所有,如有侵权或违规,请与小编联系!情况属实本人将予以删除!