Skip to content

didi/dimina

Repository files navigation

English →

Dimina 星河小程序:将小程序源码编译并运行在 Android、iOS、Harmony 和 Web

Apache 2.0 License Android, iOS, Harmony and Web Pull requests welcome

在线体验 · 最快上手 · 能力参考 · 更新日志 · 架构文档 · 参与共建

Dimina(星河小程序)是滴滴开源的跨端小程序框架:把 WXML、WXSS、JavaScript / TypeScript 小程序源码编译成统一运行时资源包,再由 Android、iOS、Harmony 和 Web 容器加载。既可以把现有小程序作为独立模块嵌入 App,也可以直接使用小程序语法开发跨端页面。

同一份小程序,三端真实运行

下面是仓库内同一套“官方组件展示”示例在三个原生平台上的实际效果。Web 端可以直接打开在线演示体验。

Android iOS Harmony
Dimina 官方组件示例运行在 Android Dimina 官方组件示例运行在 iOS Dimina 官方组件示例运行在 Harmony

把小程序变成可嵌入的跨端模块

Dimina 不只是一个 Web 预览器。它包含小程序编译器、逻辑层与视图层运行时、标准组件、原生能力桥接,以及 Android、iOS、Harmony 和 Web 容器。

  • 资源离线化:小程序包由宿主提供并落到本地,减少运行时网络依赖。
  • 逻辑与视图分离:业务逻辑运行在独立 JS 引擎或 Worker 中,视图由 WebView / Browser 渲染。
  • 统一原生能力:通过标准 API 与扩展 Bridge 调用宿主能力,无需把平台逻辑散落到业务页面。
  • 面向真实容器:支持页面预热、路由、生命周期、组件与跨线程消息链路。

从源码到运行时

Dimina 将小程序源码经 DMCC 编译为资源包,并通过统一运行时契约运行在四个平台

DMCC 负责把小程序源码转换为 Dimina 运行时可以加载的逻辑、视图、样式与配置资源。容器内部通过消息通道连接逻辑层、视图层和原生能力,让同一份小程序语义落到不同平台。

平台运行时

平台 逻辑引擎 视图容器 接入入口
Android QuickJS Android WebView Android SDK
iOS JavaScriptCore WKWebView iOS SDK
Harmony QuickJS Harmony WebView Harmony SDK
Web Web Worker Browser 在线演示

最快上手

如果只想先看效果,直接打开在线演示。要在本地跑起仓库自带的 Web 示例,需要 Node.js 22+ 与 pnpm 7+:

git clone https://github.com/didi/dimina.git
cd dimina/fe
pnpm install
pnpm compile
pnpm dev

pnpm compile 会编译 fe/example/ 下的小程序,pnpm dev 会启动 Web 容器与代理服务。更多构建、打包和调试命令见前端工作区说明

要把编译后的资源包接入原生应用,请选择对应平台:

能力、架构与边界

Dimina 正在持续对齐小程序标准与微信小程序主要能力,但尚未覆盖全部 API、组件和特性。评估接入前,请先查看当前能力范围与平台差异。

想了解什么 文档入口
已支持的组件、API 与平台差异 能力参考指南
编译流程、双线程模型与整体架构 技术文档
DMCC 安装、命令与编译产物 编译器使用说明
小程序包更新与动态下发职责 更新机制说明
共享资源如何流向各端示例工程 共享资源说明

参与共建

Dimina 遵循小程序标准化白皮书进行设计,欢迎围绕兼容语义、跨端运行时、组件和原生能力一起完善项目。

加入微信交流群
Dimina 微信交流群二维码

开源协议

Dimina 基于 Apache License 2.0 分发和使用。

About

星河小程序 - 滴滴开源小程序 / Dimina MiniProgram - DiDi's Open-Source MiniProgram

Topics

Resources

License

Contributing

Stars

903 stars

Watchers

24 watching

Forks

Contributors