模块系统
模块导入机制
在 DejaOS 中,模块使用标准的 ES6 import/export
语法进行导入和导出,这对于熟悉 JavaScript 的开发者来说非常直观。更详细的使用方法请参考 MDN 文档。
- 所有内置模块名称都以
dx
开头,例如:dxLogger.js
、dxUI.js
等。
模块管理机制
DejaOS 没有采用传统的 JavaScript npm
生态系统,主要基于以下原因:
- 嵌入式应用程序通常不依赖大量第三方库;
- 许多模块涉及底层硬件,需要针对特定设备进行交叉编译;
- 在资源受限的设备上管理依赖包较为复杂。
因此,DejaOS 采用自研的模块管理系统,提供一套内置模块用于访问设备功能,如图像识别、UI 渲染、日志打印等。
此外:
- 支持手动引入第三方纯 JavaScript 模块(仅支持 ES6 Module 语法);
- 未来计划集成常用第三方模块,丰富生态系统。
VS Code 中的模块管理界面
通过 DejaOS IDE 插件,用户可以在 VS Code 中通过图形界面选择、安装和升级模块, 无需手动配置,大大提高了开发效率。
-
模块列表页面:
-
模块选择和版本切换:
在 DejaOS 中,"模块"也常被称为"组件"(Module)。
模块安装方式
类似于 npm install
,DejaOS IDE 插件提供了一键安装按钮。点击 Install
即可从官方模块仓库拉取对应文件:
- 模块安装会自动处理依赖关系和平台适配;
- 需要联网访问官方 Web 服务下载资源;
- 对于离线开发环境,请联系官方团队获取离线安装包。
模块组成
成功 install
模块后,模块文件会下载到当前项目的 dxmodules
目录中。一般来说,有 3 种类型的模块,每种对应不同的文件类型:
- 纯 JavaScript 模块:这类模块只包含 .js 文件,不同设备间版本一致。例如
dxLogger
和dxEventBus
- 基于 SOC 的模块:这类模块同时包含 .js 和 .so 文件。同一 SOC 下不同设备型号版本一致。例如
dxMqttClient
和dxHttpClient
在设备 DW200 和 DW200_v20 上是一致的,因为这两种设备类型共享同一个 SOC——它们的唯一区别是 V20 额外增加了一个 WiFi 模块 - 基于设备型号的模块:这类模块同时包含 .js 和 .so 文件。.js 文件在不同设备型号间基本一致,但 .so 文件肯定不同。例如
dxCode
和dxNfc
。这类模块通常与底层硬件相关。
总结
DejaOS 提供了针对嵌入式设备优化的模块系统,具有以下特点:
- 标准导入语法:遵循 ES6 Module 规范,易于理解和使用;
- 高效管理机制:无复杂依赖关系,按需选择模块;
- 可视化操作界面:通过 DejaOS IDE 插件完成所有模块相关操作;
- 硬件平台适配:模块与对应设备架构绑定,确保稳定运行。
未来,我们将继续扩展模块生态系统,降低嵌入式开发门槛,让更多开发者通过 Web 开发方式进入硬件世界。