[Open Source] A Lightweight Cross-Platform Mini Program Framework That Generates Standalone Native APPs with One-Click Packaging
![[Open Source] A Lightweight Cross-Platform Mini Program Framework That Generates Standalone Native APPs with One-Click Packaging](https://yy123.ink/api/img/1782608688890-eluzsh.jpg)
1. Project Overview

Dimina Mini Program Framework — Didi's Open-Source Cross-Platform Mini Program Framework
Dimina is pronounced /diːminə/ and is an abbreviation of didi miniprogram. It aims to create a flexible and lightweight cross-platform Mini Program development framework.
Dimina Mini Program Framework (hereinafter referred to as Dimina) is a lightweight cross-platform Mini Program framework independently developed by Didi. It can be understood as an open-source Mini Program solution designed to provide developers with a high-performance, cross-platform development experience with a low learning curve.
Currently, Dimina supports four major platforms: Android, iOS, HarmonyOS, and Web. Developers can use Dimina as across-platform mobile development framework, integrating existing Mini Program logic into an existing app as independent modules, or developing directly using Mini Program syntax and generating standalone native apps with a single click.
2. Open Source License
Licensed under Apache-2.0
3. Screenshots

|
|
|
|
![]() |
![]() |
![]() |
4. Feature Overview
Technical Features
- Offline Resource Delivery
Local resource storage reduces network requests - Separation of Logic and View
An independent JS engine prevents main-thread blocking - Native Capability Encapsulation
Unified APIs for accessing native functionality - Page Preloading
WebView prewarming improves performance
5. Tech Stack
Cross-Platform Support
- Android
QuickJS + Android WebView - iOS
JavaScriptCore + WKWebView - Harmony
QuickJS + Harmony WebView - Web
Web Worker + Browser
Getting Started

Detailed Steps
1. Create a Mini Program Project
-
Create a project using the Mini Program development tools -
Configure app.json and page routing
2. Develop Mini Program Pages
-
Write WXML templates -
Add WXSS styles -
Use JavaScript to implement page logic
3. Compile and Package
-
Use the DMCC compiler to compile Mini Program code into cross-platform code -
Package the Dimina Mini Program bundle -
Place the Dimina Mini Program bundle in the corresponding directories for each platform
4. Platform Integration
-
Android Integration Guide -
iOS Integration Guide -
Harmony Integration Guide
5. Debugging and Release
-
Integrate the App and perform debugging on real devices -
Package and publish to various app stores

What Is a Mini Program?
A Mini Program is essentially a Hybrid App solution that brings web technologies to mobile devices. Its core components are similar to those of a web page:
- JS
Describes logic - CSS
Describes styles - HTML
Describes the user interface
Technical Features
To optimize Mini Program performance and user experience, the client typically performs the following operations:
- Offline Resource Delivery
Store JS/CSS/HTML locally to reduce network request latency. - Asynchronous Execution of Complex Tasks
Execute time-consuming logic in an independent JS engine to prevent main-thread blocking. - Native Capability Encapsulation
Provide capabilities such as camera and Bluetooth through client-side container bridging. - Native Page Navigation
Implement page navigation and transition animations similar to those in native applications.
In summary, a Mini Program is a standardized cross-platform framework that combines the efficiency and installation-free advantages of Web development with native development capabilities, representing an efficient model for Hybrid development.
Implementation Approach
To implement the Dimina Mini Program framework, we need to address four key challenges:
- Offline Resource Package Loading
How can we resolve cross-origin issues and quickly load local resources? - Separation of Logic and View
How can JS logic be separated from pages and moved into an independent engine? - Native Capability Invocation
How should an efficient communication protocol be designed? - Page Navigation Optimization
How can WebView preloading and fast switching be implemented?
See the README.md documentation for details


