跳到主要内容

模块系统


模块导入机制

在 DejaOS 中,模块使用标准的 ES6 import/export 语法进行导入和导出,这对于熟悉 JavaScript 的开发者来说非常直观。更详细的使用方法请参考 MDN 文档

  • 所有内置模块名称都以 dx 开头,例如:dxLogger.jsdxUI.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 种类型的模块,每种对应不同的文件类型:

  1. 纯 JavaScript 模块:这类模块只包含 .js 文件,不同设备间版本一致。例如 dxLoggerdxEventBus
  2. 基于 SOC 的模块:这类模块同时包含 .js 和 .so 文件。同一 SOC 下不同设备型号版本一致。例如 dxMqttClientdxHttpClient 在设备 DW200 和 DW200_v20 上是一致的,因为这两种设备类型共享同一个 SOC——它们的唯一区别是 V20 额外增加了一个 WiFi 模块
  3. 基于设备型号的模块:这类模块同时包含 .js 和 .so 文件。.js 文件在不同设备型号间基本一致,但 .so 文件肯定不同。例如 dxCodedxNfc。这类模块通常与底层硬件相关。

总结

DejaOS 提供了针对嵌入式设备优化的模块系统,具有以下特点:

  • 标准导入语法:遵循 ES6 Module 规范,易于理解和使用;
  • 高效管理机制:无复杂依赖关系,按需选择模块;
  • 可视化操作界面:通过 DejaOS IDE 插件完成所有模块相关操作;
  • 硬件平台适配:模块与对应设备架构绑定,确保稳定运行。

未来,我们将继续扩展模块生态系统,降低嵌入式开发门槛,让更多开发者通过 Web 开发方式进入硬件世界。