From f42051b8b84585761c3add09688cabe5ec921234 Mon Sep 17 00:00:00 2001 From: hiyuki <674883329@qq.com> Date: Thu, 2 Apr 2026 22:31:57 +0800 Subject: [PATCH 1/4] update skills & support register custom builtin components --- .../references/rn-json-reference.md | 433 ++++++++- .../references/rn-script-reference.md | 125 +-- .../references/rn-style-practice.md | 323 ++++--- .../references/rn-style-reference.md | 193 ++-- .../references/rn-template-reference.md | 885 +++++++++--------- .../references/single-file-component.md | 15 +- AGENTS.md | 4 +- docs-vitepress/api/compile.md | 80 +- .../lib/react/processTemplate.js | 18 +- .../lib/react/template-loader.js | 14 +- .../webpack-plugin/lib/web/processTemplate.js | 13 +- solutions/register-custom-builtin.md | 111 +++ 12 files changed, 1402 insertions(+), 812 deletions(-) create mode 100644 solutions/register-custom-builtin.md diff --git a/.agents/skills/mpx-rn-style-guide/references/rn-json-reference.md b/.agents/skills/mpx-rn-style-guide/references/rn-json-reference.md index b02750ed37..1639d4f35a 100644 --- a/.agents/skills/mpx-rn-style-guide/references/rn-json-reference.md +++ b/.agents/skills/mpx-rn-style-guide/references/rn-json-reference.md @@ -1,43 +1,49 @@ # 跨端输出 RN JSON 配置参考 -本文档说明在 Mpx 输出 React Native(如 `mode` 为 `ios`、`android`、`harmony` 等 RN 目标)时,**小程序形态 JSON 配置**(`app.mpx` / 页面与组件 `.mpx` 中的 json 块)的支持范围与使用注意。写法上仍与微信小程序 `app.json`、页面/组件配置对齐;RN 端对部分字段仅有编译期处理或运行时等价能力,下文按层级说明。 +本文档说明在 Mpx 输出 React Native(如 `mode` 为 `ios`、`android`、`harmony` 等 RN 目标)时,**小程序形态 JSON 配置**(`app.mpx` / 页面与组件 `.mpx` 中的 JSON 块)的支持范围与使用注意。写法上仍与微信小程序 `app.json`、页面/组件配置对齐;RN 端对部分字段仅有编译期处理或运行时等价能力,下文按层级说明。 -## 目录 +## 索引 -- [应用级配置](#应用级配置) -- [页面级配置](#页面级配置) -- [组件级配置](#组件级配置) +- [应用配置](#应用配置) +- [页面配置](#页面配置) +- [组件配置](#组件配置) - [分包与分包异步化](#分包与分包异步化) + - [使用 `packages` 定义分包](#使用-packages-定义分包) + - [异步分包组件](#异步分包组件) + - [异步分包 JS 模块](#异步分包-js-模块) + - [分包预下载](#分包预下载) + - [注册 `loadChunkAsync` 和 `downloadChunkAsync`](#注册-loadchunkasync-和-downloadchunkasync) + - [分包失败处理](#分包失败处理) +- [抽象节点](#抽象节点) + - [声明 `componentGenerics`(定义方 JSON)](#定义方声明-componentgenerics) + - [定义方模板](#定义方模板) + - [使用方 `generic:` 绑定](#使用方-generic-绑定) + - [默认组件(可选)](#默认组件可选) --- -## 应用级配置 +## 应用配置 -应用 json 用于注册页面、默认窗口样式、分包、预下载规则等。示例如下(字段可按需取舍): +应用 JSON 配置用于注册页面、默认窗口样式、分包、预下载规则等。示例如下(字段可按需取舍): -```json5 +```JSON5 { - "pages": [ - "pages/index", - { "src": "pages/other", "path": "custom/route-name" } - ], - "window": { - "navigationBarTitleText": "默认标题", - "navigationBarTextStyle": "white", - "navigationBarBackgroundColor": "#000000", - "navigationStyle": "default" + pages: ["pages/index", { src: "pages/other", path: "custom/route-name" }], + window: { + navigationBarTitleText: "默认标题", + navigationBarTextStyle: "white", + navigationBarBackgroundColor: "#000000", + navigationStyle: "default" }, // 推荐:用 packages 引用子包入口,并在路径上带 ?root 声明分包名 - "packages": [ - "./packageA/app.mpx?root=packageA" - ], + packages: ["./packageA/app.mpx?root=packageA"], // subPackages 兼容微信等原生 app.json 写法,推荐优先使用 packages + ?root 进行分包定义 - "usingComponents": {}, - "networkTimeout": { "request": 60000 }, - "preloadRule": { - "pages/index": { "network": "all", "packages": ["packageA"] } + usingComponents: {}, + networkTimeout: { request: 60000 }, + preloadRule: { + "pages/index": { network: "all", packages: ["packageA"] } }, - "entryPagePath": "pages/index" + entryPagePath: "pages/index" } ``` @@ -46,10 +52,10 @@ | 字段 | RN 侧支持说明 | | --- | --- | | `pages` | **必填**:注册页面,值可为页面路径字符串,或 `{ src, path? }` 对象(`path` 为路由别名)。 | -| `packages` | **推荐**:声明分包时优先使用,值为分包入口路径(如分包子应用的 `app.mpx` 或 `app.json`),在路径上通过 **`?root`** 指定分包名,分包名 `root` 不得以 `.` 开头,详情查看[使用 `packages` 定义分包](#使用-packages-定义分包)。 | +| `packages` | **推荐**:声明分包时优先使用,值为分包入口路径(分包目录或 npm 包内的 `app.mpx` 或 `app.json`),在路径上通过 **`?root`** 指定分包名,分包名 `root` 不得以 `.` 开头,详情查看[使用 `packages` 定义分包](#使用-packages-定义分包)。 | | `subPackages` / `subpackages` | **兼容**:与微信等原生 `app.json` 的 `subPackages` 写法对齐;Mpx 中推荐使用 **`packages` + `?root`** 定义分包 | -| `window` | 作为**全局默认窗口配置**,与各页面 json 合并后参与导航栏与页面展示,详情查看[页面级配置](#页面级配置)。 | -| `usingComponents` | 全局组件注册,仅支持同步组件。 | +| `window` | 作为**全局默认窗口配置**,与各页面 JSON 合并后参与导航栏与页面展示,详情查看[页面配置](#页面配置)。 | +| `usingComponents` | 全局组件注册。 | | `networkTimeout` | 定义请求相关能力的默认超时时长。 | | `preloadRule` | 定义在指定页面进入后的预下载分包规则,需在运行时注册 `Mpx.config.rnConfig.downloadChunkAsync`,否则不会触发实际下载。 | | `entryPagePath` | 应用初始页面路径,未定义时使用 `pages` 数组的首个元素作为初始页面路径 | @@ -57,26 +63,24 @@ --- -## 页面级配置 +## 页面配置 -以下为页面 `.mpx` 中 **json 配置块** 示例(字段与小程序页面 `.json` 一致,可按需删减): +以下为页面的 JSON 配置示例: -```json5 +```JSON5 { - "navigationBarTitleText": "首页", - "navigationBarTextStyle": "black", - "navigationBarBackgroundColor": "#ffffff", - "navigationStyle": "default", - "backgroundColorContent": "#f5f5f5", - "disableScroll": true, - "usingComponents": { + navigationBarTitleText: "首页", + navigationBarTextStyle: "black", + navigationBarBackgroundColor: "#ffffff", + navigationStyle: "default", + backgroundColorContent: "#f5f5f5", + disableScroll: true, + usingComponents: { "list-item": "../components/list-item" } } ``` -跨端输出时 **`disableScroll` 宜为 `true`**,在 `