didi/dimina

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

932

stars

864

commits

JavaScript

primary language

Sep 5, 2026

updated

didi.github.io/dimina/
android
arkts
harmonyos
ios
kotlin
miniapp
miniprogram
swift
Browse cluster: Mobile app development across platforms

README

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,也可以继续使用熟悉的小程序语法开发跨端页面。

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

下图是仓库内同一套“官方组件展示”示例在 Android、iOS 和 Harmony 上的实际运行效果。想直接上手,也可以打开 Web 端的在线演示

AndroidiOSHarmony
Dimina 官方组件示例运行在 AndroidDimina 官方组件示例运行在 iOSDimina 官方组件示例运行在 Harmony

让小程序成为可嵌入的跨端模块

Dimina 不止提供 Web 预览。它包含小程序编译器、逻辑与视图运行时、标准组件、原生能力桥接,以及 Android、iOS、Harmony 和 Web 容器。已有小程序可以整体嵌入宿主 App,新页面也能保留熟悉的开发方式。

  • 资源包可离线:小程序包由宿主提供并保存在本地,减少运行时网络依赖。
  • 逻辑与视图分开运行:业务逻辑运行在独立 JS 引擎或 Worker 中,视图交给 WebView / Browser 渲染。
  • 原生能力有统一入口:标准 API 与扩展 Bridge 负责连接宿主能力,平台逻辑不必散落在业务页面里。
  • 页面语义由运行时承接:运行时处理页面预热、路由、生命周期、组件和跨线程消息。

一份源码,如何抵达四端

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

DMCC 将小程序源码转换为逻辑、视图、样式和配置资源。进入容器后,消息通道会连接逻辑层、视图层与原生能力,让同一套小程序语义在不同平台上保持一致。

平台运行时

平台逻辑引擎视图容器接入入口
AndroidQuickJSAndroid WebViewAndroid SDK
iOSJavaScriptCoreWKWebViewiOS SDK
HarmonyQuickJSHarmony WebViewHarmony SDK
WebWeb WorkerBrowser在线演示

最快上手

想先看看 Dimina 的运行效果,可以直接打开在线演示。要在本地跑起仓库自带的 Web 示例,请准备 Node.js 22.22.3+ 与 pnpm 12.2.0+:

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

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

准备把资源包接入原生应用时,可以从对应平台的接入文档开始:

能力边界与延伸阅读

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

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

参与共建

Dimina 的架构参考了小程序标准化白皮书设计,也在真实的跨端差异里一点点补齐能力。月溅星河,长路慢慢。若你也在意兼容语义、跨端运行时、组件体验与原生能力,欢迎留下一个问题,或补上一行代码,和我们一起把这条路走稳、走远。

来微信交流群聊聊
Dimina 微信交流群二维码

开源协议

Dimina 使用 Apache License 2.0 开源。

Contributors

dos1in

701 commits

dependabot[bot]

69 commits

UCodeUStory

23 commits

LehemYang

22 commits

didi/dimina

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

932

stars

864

commits

JavaScript

primary language

Sep 5, 2026

updated

didi.github.io/dimina/
android
arkts
harmonyos
ios
kotlin
miniapp
miniprogram
swift
Browse cluster: Mobile app development across platforms

README

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,也可以继续使用熟悉的小程序语法开发跨端页面。

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

下图是仓库内同一套“官方组件展示”示例在 Android、iOS 和 Harmony 上的实际运行效果。想直接上手,也可以打开 Web 端的在线演示

AndroidiOSHarmony
Dimina 官方组件示例运行在 AndroidDimina 官方组件示例运行在 iOSDimina 官方组件示例运行在 Harmony

让小程序成为可嵌入的跨端模块

Dimina 不止提供 Web 预览。它包含小程序编译器、逻辑与视图运行时、标准组件、原生能力桥接,以及 Android、iOS、Harmony 和 Web 容器。已有小程序可以整体嵌入宿主 App,新页面也能保留熟悉的开发方式。

  • 资源包可离线:小程序包由宿主提供并保存在本地,减少运行时网络依赖。
  • 逻辑与视图分开运行:业务逻辑运行在独立 JS 引擎或 Worker 中,视图交给 WebView / Browser 渲染。
  • 原生能力有统一入口:标准 API 与扩展 Bridge 负责连接宿主能力,平台逻辑不必散落在业务页面里。
  • 页面语义由运行时承接:运行时处理页面预热、路由、生命周期、组件和跨线程消息。

一份源码,如何抵达四端

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

DMCC 将小程序源码转换为逻辑、视图、样式和配置资源。进入容器后,消息通道会连接逻辑层、视图层与原生能力,让同一套小程序语义在不同平台上保持一致。

平台运行时

平台逻辑引擎视图容器接入入口
AndroidQuickJSAndroid WebViewAndroid SDK
iOSJavaScriptCoreWKWebViewiOS SDK
HarmonyQuickJSHarmony WebViewHarmony SDK
WebWeb WorkerBrowser在线演示

最快上手

想先看看 Dimina 的运行效果,可以直接打开在线演示。要在本地跑起仓库自带的 Web 示例,请准备 Node.js 22.22.3+ 与 pnpm 12.2.0+:

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

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

准备把资源包接入原生应用时,可以从对应平台的接入文档开始:

能力边界与延伸阅读

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

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

参与共建

Dimina 的架构参考了小程序标准化白皮书设计,也在真实的跨端差异里一点点补齐能力。月溅星河,长路慢慢。若你也在意兼容语义、跨端运行时、组件体验与原生能力,欢迎留下一个问题,或补上一行代码,和我们一起把这条路走稳、走远。

来微信交流群聊聊
Dimina 微信交流群二维码

开源协议

Dimina 使用 Apache License 2.0 开源。

Contributors

dos1in

701 commits

dependabot[bot]

69 commits

UCodeUStory

23 commits

LehemYang

22 commits

Languages

JavaScript

35.0%

Swift

22.9%

Kotlin

18.4%

TypeScript

13.9%

Vue

4.3%

C++

2.4%

SCSS

1.9%