MoonBit 微信小程序开发框架:类型安全运行时、状态自动 diff、跨页 store、声明式路由与无头测试基建
node scripts/new.cjs myapp
cd myapplet page : @mp.PageDef = {
path: "pages/index/index",
data: @mp.jobj([("count", @mp.jnum(0.0))]),
handlers: [
("onTap", (ctx, _payload) => {
let n = match ctx.get_data() {
Some(Json::Object(m)) =>
match m.get("count") {
Some(Json::Number(d, ..)) => d + 1.0
_ => 1.0
}
_ => 1.0
}
ctx.set_state(@mp.jobj([("count", @mp.jnum(n))]))
}),
],
returns: [],
}// app.js / pages/index/index.js
require("./engine/moon-engine.js").launch();
require("../../engine/moon-engine.js").page("pages/index/index");node mmp.cjs check # type check
node mmp.cjs test # unit tests
node mmp.cjs dev # watch-mode rebuild (open miniprogram/ in WeChat DevTools)| Scenario | set_state patch | Full setData |
|---|---|---|
| Append 1 item to a 1000-item list | 49 chars | 34,959 chars |
| Change one leaf in a nested object | 24 chars | 75 chars |
| No change | 0 chars (no setData call) | 75 chars |
runtime/ framework core (models, diff engine, store, router, wx bindings, platform probe)
engine/ minimal example, used as the smoke-test host
engine-export/ CommonJS export wrapper (foreign_library)
miniprogram/ importable two-page WeChat DevTools showcase
scripts/ scaffolding, mmp CLI, wx simulator, smoke tests, minifier
docs/ guide, API coverage table, RFCsgit clone https://github.com/Magic486/moon-miniprogram
moon test # 54 unit tests
powershell scripts/build-example.ps1 # build showcase + 40 smoke assertionsInstall
Download zipMoonBit 微信小程序开发框架:类型安全运行时、状态自动 diff、跨页 store、声明式路由与无头测试基建