小程序开发文档 WXML · WXSS · 长生命周期 JS · Switch / 桌面

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 面板;调试手段是启动日志与页面中央的红色错误文字。

文档目录

能力以 client/apps/miniapp 源码为准;文档与实现不一致时以源码为准并同步修改文档。