前天鸿蒙终于发布了,开发者们也终于“沸腾”了。
源码托管在国内知名开源平台码云上,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 栈,存放了观察者。su