NXMiniApp 小程序开发文档
NXMiniApp 是运行在 Nintendo Switch 与桌面端的小程序容器。页面用 WXML 描述结构、WXSS 子集描述样式,
JS 由 QuickJS 常驻执行,通过 setData 增量驱动重绘;最终由 Yoga 排版、NanoVG 原生绘制,
不经过 webview。
先读这一条:这是微信小程序的一个可运行子集,不是完整实现。当前没有 webview、
自定义组件、
canvas / map、npm 构建与开发者工具;
video 仅在启用 MPV 的构建中可真实播放。
未列出的能力请以本文档为准,不要直接按微信官方文档推测行为。
当前能力一览
22
可用标签 / 组件
60
可用的 wx.* API
18
兼容占位 API(调用不报错)
6
页面生命周期 onLoad … onUnload
∞
页面栈深度(受内存限制)
| 分类 | 微信小程序 | NXMiniApp | 说明 |
|---|---|---|---|
| 页面结构 | 完整 WXML + 自定义组件 | 子集 | 22 类内置标签;未知标签降级为 view,无自定义组件 |
| 模板语法 | {{}}、wx:for、wx:if/elif/else、wx:key |
已实现 | 支持点路径、四则/比较/逻辑/三元表达式、wx:for-item / wx:for-index |
| 事件 | 冒泡 / 捕获 / 事件对象 | 子集 | bindtap、bindchange、bindinput、bindconfirm、data-* |
| 样式 | 完整 CSS + rpx + 动画 | 子集 | Flex 布局、rpx/px/%/vw、绝对定位、阴影、透明度、文本溢出 |
| 脚本 | 双线程 + 模块 + npm | 子集 | QuickJS 常驻上下文,支持 Page / App、setData、定时器 |
| 路由 | navigateTo / switchTab / reLaunch | 子集 | navigateTo / navigateBack / redirectTo / reLaunch,页面栈与 query |
| 交互 | 触摸 + 手势 | 子集 | 手柄方向键移动焦点、A 激活、B 返回;桌面端键盘映射方向键 / Enter / Backspace |
| wx.* API | 约 200+ 个接口 | 子集 | 60 个可用接口;含 wx.nx 硬件扩展(六轴 / HD 震动 / 红外 / NFC-Amiibo),另有 18 个兼容占位接口 |
| 分发 | 微信后台 + 自动更新 | 已实现 | 商店式启动器:列表、下载、安装、最近使用 |
最小可用小程序
包内必须有 app.json,页面三件套缺一不可(空的 .wxss 也要建文件)。
hello/
├── app.json
├── app.js
├── app.wxss
└── pages/index/
├── index.wxml
├── index.wxss
└── index.js
// app.json
{
"pages": ["pages/index/index"],
"window": { "backgroundColor": "#141518" }
}
<!-- pages/index/index.wxml -->
<view class="page">
<text class="title">{{title}}</text>
<text class="count">count = {{count}}</text>
<button bindtap="onAdd">点我 +1</button>
</view>
/* pages/index/index.wxss */
.page { flex-direction: column; justify-content: center; align-items: center; }
.title { color: #F5F6F7; font-size: 44rpx; font-weight: bold; }
.count { color: #0FDC78; font-size: 28rpx; margin: 16rpx 0; }
// pages/index/index.js
Page({
data: { title: "Hello NXMiniApp", count: 0 },
onAdd() {
this.setData({ count: this.data.count + 1 });
}
})
本地预览
# 1. 构建桌面客户端(在 client/ 目录)
cmake -S . -B build_desktop -DPLATFORM_DESKTOP=ON \
-DCMAKE_POLICY_VERSION_MINIMUM=3.5 -DPYTHON_EXECUTABLE=$(which python3)
cmake --build build_desktop --target miniapp -j 8
# 2. 启动服务端(在仓库根目录,需要 Docker)
docker compose up --build -d
# 3. 运行:默认进入商店启动器
cd build_desktop/apps/miniapp && ./miniapp
# 或跳过商店,直接预览本地包
NXKIT_MINIAPP_DEV=<repo>/client/resources/miniapps/playground ./miniapp
没有开发者工具与 console 面板;调试手段是启动日志与页面中央的红色错误文字。
文档目录
目录结构
app.json 字段、app.js / app.wxss、页面加载顺序
WXML 与数据绑定
标签、
{{}}、wx:for、wx:if/elif/else、事件与 dataset脚本运行时
Page/App、生命周期、setData、定时器、页面栈
组件
22 类标签的属性与交互行为
WXSS 子集
选择器、单位、Flex、定位、阴影
API 支持状态
36 个可用接口与 18 个占位接口
与微信的差异
迁移前必须知道的限制
错误与排查
红字错误对照与常见故障
商店与上架
包格式、meta.json、管理后台
能力以
client/apps/miniapp 源码为准;文档与实现不一致时以源码为准并同步修改文档。