@reglow/review-mcp 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,132 @@
1
+ # ReView 最佳实践与陷阱(BEST_PRACTICES)
2
+
3
+ > 面向使用 `reglow-review` 写 uni-app x 业务的 AI 与开发者。每条结论都标注来源文件,未在仓库中核实的做法不写入本文件。
4
+ > 核心来源:`review/README.md`、`review/docs/guide/{introduction,theme,locale}.md`、`review/docs/components/*.md`、`review/uni_modules/reglow-review/components/re-*/`、`review/CHANGELOG.md`、`review/uni.scss`、`review/pages.json`。
5
+
6
+ ## 1. 安装、目录与升级
7
+
8
+ | 事项 | 正确做法 | 来源 |
9
+ | --- | --- | --- |
10
+ | 安装 | DCloud 插件市场导入 `reglow-review`,或把 `uni_modules/reglow-review/` 整体复制到项目 | `README.md` |
11
+ | 不要用 | `npm install @reglow/review`(`docs/guide/introduction.md` 里出现过该写法,但 `README.md` 明确「不支持 npm 安装」,以 README 为准) | `README.md` |
12
+ | 目录结构 | `uni_modules/reglow-review/` = `components/`(全部 `re-*` 组件)+ `utssdk/`(`re-common`、`re-theme`、`re-config-provider` 的 UTS 实现与语言包)+ `package.json` / `readme.md` / `changelog.md` | 实测 + `README.md` |
13
+ | 基础模块分工 | `re-common` 类型与工具(`type.uts`、`re-common.uvue`);`re-theme` 注入 `--re-*` 令牌(支持暗色/局部覆盖);`re-config-provider` 在 `re-theme` 之上统一语言包、`zIndex` 基线与作用域 | `docs/guide/introduction.md` |
14
+ | 语言包位置 | `uni_modules/reglow-review/utssdk/re-config-provider/locale/{zh-CN,zh-TW,en-US}.uts` | 实测 + `docs/guide/locale.md` |
15
+ | 升级 | 用插件市场更新或**整体替换** `uni_modules/reglow-review/`,不要只替换单个 `re-xxx` 目录:组件内部通过相对路径引用 `utssdk`(如 `re-infinite-loading.uvue` 里 `import { translate } from '../../utssdk/re-config-provider/locale.uts'`),版本混用会出现新旧不匹配 | `re-infinite-loading.uvue`、`re-address.uvue` |
16
+ | 版本 | 当前 **1.0.5(2026-09-14)**;插件 `package.json` 的 `version` 同为 1.0.5 | `CHANGELOG.md`、`uni_modules/reglow-review/package.json` |
17
+
18
+ > 口径校正:`README.md` 的「项目结构」注释里写了 `uni_modules/` 下还有 `re-common/`、`re-theme/`、`re-config-provider/`、`re-button/` 等「历史拆分目录」,但**当前工作区的 `uni_modules/` 下只有 `reglow-review/`**(外加一个 `uni_modules/README.md`,实测);`uni_modules/reglow-review/package.json` 的 `uni_modules.dependencies` 也已是空数组。因此组件维护只看 `uni_modules/reglow-review/components/`。
19
+
20
+ ## 2. easycom 引入方式
21
+
22
+ | 方式 | 配置 | 说明 |
23
+ | --- | --- | --- |
24
+ | 自动扫描(推荐,README 写法) | `pages.json` → `{"easycom":{"autoscan":true}}` | 组件在 `uni_modules/reglow-review/components/` 下,开启后可直接用 `<re-button>`,无需 `easycom.custom`。本仓库 demo 即此配置(`review/pages.json`) |
25
+ | 显式正则(`docs/guide/introduction.md` 写法) | `"custom": { "^re-(.*)": "@/uni_modules/reglow-review/components/re-$1/re-$1.uvue" }` | 需要锁定路径或做非标准目录布局时用 |
26
+ | 手动 import(不推荐) | `import ReInput from '@/uni_modules/reglow-review/components/re-input/re-input'` | 仅在特殊场景用;手动 import 必须保持 `uni_modules/reglow-review/` 的目录层级,否则组件内部对 `utssdk` 的相对引用会断 |
27
+
28
+ - 标签名 = `re-` + `components/` 下的目录名:`image-viewer` → `<re-image-viewer>`;`date-time-picker` → `<re-date-time-picker>`。
29
+ - `layout` 是**一个文档页对应两个组件**:`<re-row>` + `<re-col>`;同理 `steps` → `<re-step-item>`、`tabs` → `<re-tab-panel>`、`side-bar` → `<re-side-bar-item>`、`tab-bar` → `<re-tab-bar-item>`、`grid` → `<re-grid-item>`、`cell` → `<re-cell-group>`、`checkbox` → `<re-checkbox-group>`、`radio` → `<re-radio-group>`、`avatar` → `<re-avatar-group>`、`collapse` → `<re-collapse-panel>`、`tag` → `<re-check-tag>`、`dropdown-menu` → `<re-dropdown-item>`、`message` → `<re-message-item>`、`form` → `<re-form-item>`、`time-select` → `<re-time-pannel>` / `<re-time-detail>`。
30
+ - `re-chat` 另有多个内部子组件目录(`re-chat-actionbar` / `re-chat-content` / `re-chat-message` / `re-chat-sender` / `re-chat-thinking`),它们**没有独立文档页**,不要凭空引用其 props。
31
+
32
+ ## 3. 体积与按需
33
+
34
+ - 组件库以 `uni_modules` 形式整体提供,**没有 npm 子路径按需导入**(`README.md`)。「按需」在本项目里的含义是:只在实际用到的组件目录上产生编译产物,由 easycom 自动扫描决定,因此**不要**为了让「体积更小」把组件目录拆散或改名。
35
+ - 组件自带静态资源放在各自目录内(如 `re-empty/static/{empty,error,network}.png`、`re-icon/svg/*.svg`),复制 `uni_modules/reglow-review/` 时不要漏掉子目录(`re-icon` 的 svg 有数百个)。
36
+ - 图标用 `re-icon`:文档说明其行为是「把本地 svg 文件转成 data URL 后渲染;传图片地址时显示图片;传其他字符时按文本渲染」(`docs/components/icon.md`),所以不要再额外引一套图标字体。
37
+
38
+ ## 4. 平台差异与条件编译
39
+
40
+ | 平台 | 状态与差异 | 来源 |
41
+ | --- | --- | --- |
42
+ | H5 / App-Android / App-iOS / Harmony | 插件包声明全部 `√` | `README.md`、`uni_modules/reglow-review/package.json` |
43
+ | 微信小程序 | 支持,但有渲染层差异:**微信小程序 WebView 渲染器不支持原生 sticky 组件**,`re-indexes` 的数据驱动容器模式在小程序端自动回退为 `scroll-view` + 普通 `view`(可滚动、可跳转、高亮联动,暂不吸顶);App / H5 使用原生 `list-view` + `sticky-section` 吸顶 | `CHANGELOG.md` 1.0.4 |
44
+ | 小程序节点流 | 动态列数会触发渲染层节点流错乱(`Framework inner error`);`re-cascader` 自 1.0.5 改为模板内直接渲染列与选项后不再出现 | `CHANGELOG.md` 1.0.5 |
45
+ | 平台门槛 | HBuilderX 3.99+(README);插件 engines 要求 `HBuilderX ^5.07`、`uni-app-x ^5.07` | `README.md`、插件 `package.json` |
46
+ | 条件编译 | 仓库内组件使用 `@uniPlatform` 注释声明平台(如 `@uniPlatform { "app": ..., "mp": {"weixin": ...}, "web": ... }`),业务侧如需按平台分支,沿用 uni-app x 的标准条件编译语法即可 | `re-*.uvue` 各文件头部 |
47
+
48
+ - 调试配置参考:`platformConfig.json` 当前只有 `{ "targets": ["APP-ANDROID"] }`(DCloud ls-plugin 设置)。
49
+ - 遇到某平台行为异常,先查 `CHANGELOG.md` 最近两版是否记录过同类问题(模板 v-for 索引类型、小程序 sticky、列节点流、ref 解包等),再决定是「已知平台限制」还是「需要改代码」。
50
+
51
+ ## 5. 国际化(i18n)
52
+
53
+ - **接入方式是 `re-config-provider`,不是 `vue-i18n`**:实测 `uni_modules/` 下没有任何 `vue-i18n` 引用;组件文案由 `utssdk/re-config-provider/locale.uts` 的 `translate(module, key, fallback)` 提供,源码里可见 `translate('address', 'title', '选择地址')`、`translate('infiniteLoading', 'loading', '加载中...')这种「无语言包时回退中文」的写法。
54
+ - 用法(`docs/guide/locale.md`):
55
+
56
+ ```vue
57
+ <template>
58
+ <re-config-provider locale="en-US" :locale-config="customLocale">
59
+ <view>...</view>
60
+ </re-config-provider>
61
+ </template>
62
+
63
+ <script setup>
64
+ const customLocale = {
65
+ dialog: { confirm: '确定', cancel: '取消' },
66
+ picker: { confirm: '选择', cancel: '返回' }
67
+ }
68
+ </script>
69
+ ```
70
+
71
+ - 内置语言值:`zh-CN`、`zh-TW`、`en-US`;兼容别名归一化:`zh-Hans` → `zh-CN`,`zh-Hant` / `zh-HK` / `zh-MO` → `zh-TW`。
72
+ - 文档列出的**支持国际化的组件**:Calendar、Cascader、DateTimePicker、Dialog、DropdownMenu、Empty、Form、Guide、Image、Input、Loading、Message、Picker、PullDownRefresh、QRCode、Rate、Search、Upload。
73
+ - 语言包 key 按组件分组,如 `address`、`infiniteLoading`、`searchHistory`(1.0.5 为 `searchHistory` 新增空数据文案 `empty`)。
74
+ - 注册新语言:参照 `utssdk/re-config-provider/locale/zh-CN.uts`、`zh-TW.uts`、`en-US.uts` 新建语言包文件。
75
+ - **注意文档与源码的先后**:`docs/guide/locale.md` 说明的是组件库层面的 i18n;业务自身文案仍按各自项目方案处理,不要混用两套 API。
76
+
77
+ ## 6. 主题与样式定制(优先级从高到低)
78
+
79
+ 1. **组件自身 prop 优先**:多数组件提供 `customStyle`(字符串样式)与主题相关 prop(如 `re-button` 的 `theme` / `variant`、`re-search-history` 的 `searchButtonBgColor`)。
80
+ 2. **全局/局部主题变量**:`re-config-provider` 的 `themeVars`(键值对会被转为 CSS 变量应用到子组件)与 `theme="dark"`;只覆盖局部区域时用 `re-theme`(`theme` + `themeVars`)。令牌以 `--re-*` 为前缀(`docs/guide/theme.md`)。
81
+
82
+ ```vue
83
+ <re-config-provider :theme-vars="{ 'color-primary': '#fa2c19', 'radius-large': '8px' }">
84
+ <re-button theme="primary">自定义主题按钮</re-button>
85
+ </re-config-provider>
86
+
87
+ <re-theme theme="dark" :theme-vars="{ 'bg-color-container': '#123b39' }">
88
+ <view class="section">局部暗色</view>
89
+ </re-theme>
90
+ ```
91
+
92
+ 3. **`uni.scss` 只用于业务页面自己的 SCSS 变量**:`review/uni.scss` 定义的是 `$uni-color-primary` / `$uni-spacing-*` / `$uni-border-radius-*` 等 DCloud 通用变量,**不是**组件主题令牌。
93
+
94
+ **陷阱**:不是所有组件都读 `--re-*`。实测仍有 6 个组件沿用 TDesign 的 `--td-*` 变量名(`re-form`、`re-form-item`、`re-input`、`re-radio`、`re-switch`、`re-avatar`,共 75 处,例如 `re-form` 的 `var(--td-form-bg-color, #ffffff)`)。因此「换主题变量没生效」时,先用 `search_review_docs` 确认该组件到底读哪个变量,再用它的 `customStyle` 兜底。
95
+
96
+ ## 7. 性能
97
+
98
+ | 场景 | 建议 | 依据 |
99
+ | --- | --- | --- |
100
+ | 长列表(成百上千行) | 用 `re-list` 虚拟列表:必须给 **固定 `itemHeight`**,用 `bufferCount`(默认 5)控制上下缓冲行数,用 `keyField`(默认 `id`)指定唯一键;容器高度用 `height`(默认 `100%`) | `docs/components/list.md`、`re-list.uvue` |
101
+ | 分页加载 | 用 `re-infinite-loading`:`threshold`(默认 50px)控制触发距离,`load-more` 无参数、需要自己维护页码,`hasMore=false` 时展示 `noMoreText` | `docs/components/infinite-loading.md`、`re-infinite-loading.uvue` |
102
+ | 搜索联想关键词 | `re-search-history` 的 `suggestData` 走**虚拟渲染**,窗口高度由 `suggestMaxHeight`(默认 240)控制,列表区实际铺满搜索框下方空间 | `docs/components/search-history.md`、`CHANGELOG.md` 1.0.5 |
103
+ | 图片 | `re-image` 支持懒加载与自定义形状、加载状态 | `docs/components/image.md` |
104
+ | 分组吸顶长列表 | `re-indexes` 在 App / H5 使用官方原生 `list-view` + `sticky-section` + `sticky-header`(不依赖 DOM 测量与 JS 位移,跳转用 `scroll-into-view`);小程序端回退方案见 §4 | `CHANGELOG.md` 1.0.4 |
105
+ | 级联多列 | `re-cascader` 每列内部是独立 `scroll-view`,列数据用 `lazy` 按需拉取可减少一次性数据量 | `re-cascader.uvue`、`CHANGELOG.md` 1.0.5 |
106
+ | 不要嵌套滚动容器 | `re-list`、`re-infinite-loading`、`re-cascader` 列内部都是 `scroll-view`,互相嵌套会出现双层滚动 | 各源码 |
107
+
108
+ ## 8. 常见陷阱与错误速查
109
+
110
+ | 症状 | 根因 | 修复 |
111
+ | --- | --- | --- |
112
+ | HBuilderX 编译告警:模板 `v-for` 索引被推断为 `number \| string \| symbol` | UTS 类型推断(uvue 模板变量类型宽于 TS) | 1.0.4 已批量修复组件侧(action-sheet、cart-bar、chat-sender、ecard、fixed-nav、footer、product-feed、quick-enter、segmented、share-sheet、swiper、table、order-cancel-panel、picker、order-remark 等)。业务代码里同样把索引显式按 `number` 使用,或像 `re-picker` 那样封装 `isItemActive(colIdx, idx)` 归一化 |
113
+ | 列表 key 出现 symbol 拼接告警 | UTS 类型 | 参考 `re-order-remark` 的 `getTagKey` 生成字符串 key |
114
+ | 事件/数据不更新,或报 `loading.value` 相关错误 | uvue 模板会自动解包 ref | 模板里写 `loading`,不要写 `loading.value`(`re-luck-shake` 的 1.0.4 修复) |
115
+ | 小程序端报 `Framework inner error` / 列表错乱 | 渲染层节点流错乱 | 1.0.5 起 `re-cascader` 已修复(移除内部 `re-cascader-item`,模板内直接渲染列);自定义动态列结构时避免动态增删自定义组件层级 |
116
+ | 小程序端 `re-indexes` 不吸顶 | 微信小程序 WebView 不支持原生 sticky | 已知平台限制,非 bug;App / H5 正常(`CHANGELOG.md` 1.0.4) |
117
+ | 切上级后更深层级旧标签没清空 | 响应式更新时序 | 1.0.5 已修复 `re-address`;自定义联动逻辑时避免直接改嵌套引用 |
118
+ | 文档里查不到 props | `docs/components/*.md` 部分组件 Props 表为 `-`(input、cascader、form 等) | 读源码 `type Props` + `withDefaults(defineProps<Props>(), ...)`;不要臆造 |
119
+ | 改了 `--re-*` 变量但某组件没变 | 该组件内部用 `--td-*` | 见 §6 陷阱 |
120
+ | 写了 `@tap` / `@onClick` 事件无效 | 事件名是 kebab-case | 用 `@click`、`@load-more`、`@update:visible`、`@update:hasMore`、`@update:value`、`@level-select`、`@suggest-click`、`@right-icon-click` |
121
+ | `v-model:value` 在某组件不生效 | 该组件没声明 `update:value` | 例如 `re-cascader` 只声明 `change` / `close` / `update:visible`,用 `:value` + `@change` |
122
+ | 页面里用 `document` / `window` / DOM 查询报错 | uvue 不是浏览器环境 | 改用组件提供的事件与 prop;uvue 在 App 端仅支持 flex 布局(`uni.scss` 顶部注释) |
123
+ | 用 `npm run dev` / `npx uni` 编译 | uni-app x 不支持 npm CLI 开发 | 用 HBuilderX 运行/发行(`README.md`) |
124
+ | 组件源码或 readme 打开是乱码 | `uni_modules/reglow-review/components/*/readme.md` 存在 GBK 编码的历史文件 | 读文档看 `docs/components/*.md`(UTF-8 正常),或以 `.uvue` 源码为准 |
125
+
126
+ ## 9. 文档没写清时的下钻套路
127
+
128
+ 1. `list_component_files { component }` → 看到 `re-xxx.uvue` / `readme.md`(子组件目录只有 `.uvue`)。
129
+ 2. `get_file_code { component, file: "re-xxx.uvue", startLine, endLine }` → 定位 `type Props`、`withDefaults(defineProps<Props>(), {...})`、`defineEmits<{...}>()`、`defineExpose({...})`。
130
+ 3. `get_function_code { component, name: "onOptionClick" }` → 只取某个函数的完整实现(如 `re-cascader` 的列点击逻辑)。
131
+ 4. 若 `get_function_code` 返回「未找到」+ 符号清单,**用清单里的名字再试**,不要换工具猜。
132
+ 5. 结论里写清来源(`re-xxx.uvue` 的行号或 `docs/components/xxx.md`),并说明「文档与源码不一致时以源码为准」。
@@ -0,0 +1,216 @@
1
+ # ReView 组件选型清单(COMPONENTS)
2
+
3
+ > 分类与顺序取自 `review/docs/.vitepress/sidebar.ts`(组件分类的权威来源),组件条目与 `review/docs/components/*.md` **一一对应,共 121 个文档页**。
4
+ > 用途列优先引用该组件文档首段(`docs/components/<name>.md` 第 3 行);文档首段为空时退化为 `review/README.md`「组件清单」中的说明(表中标注「README」)。
5
+ > 版本基线:`reglow-review` **1.0.5(2026-09-14)**(`CHANGELOG.md`)。
6
+
7
+ ## 口径说明
8
+
9
+ | 统计口径 | 数值 | 来源 |
10
+ | --- | --- | --- |
11
+ | 组件文档页 | **121** | `docs/components/*.md` 实测 |
12
+ | `sidebar.ts` 分类条目 | 119(9 个分类) | `docs/.vitepress/sidebar.ts` |
13
+ | 文档页但不在 sidebar | 2(`chat`、`indexes-anchor`) | 同上 |
14
+ | 含 `readme.md` 的组件目录 | 122 | `uni_modules/reglow-review/components/*/readme.md` |
15
+ | 官方对外表述 | README 顶部写「124+ 组件 / 9 大分类」;`docs/index.md` features 写「覆盖 5 大分类,共 65+ 组件」 | `README.md`、`docs/index.md` |
16
+
17
+ - **标签规则**:easycom 标签 = `re-` + 组件目录名(例:`image-viewer` → `<re-image-viewer>`)。开启 `pages.json` 的 `{"easycom":{"autoscan":true}}` 后可直接使用,无需 import(`README.md`)。
18
+ - 一个文档页可能对应多个标签(父子组件),表中在「组件」列用 `+` 标出,子组件目录通常没有独立文档页。
19
+ - 无单独文档页的三个组件(`re-common`、`re-theme`、`re-slide-captcha`)列在文末。
20
+
21
+ ## 基础 Basic(7)
22
+
23
+ | 组件 | 中文名 | 用途 | 文档路径 |
24
+ | --- | --- | --- | --- |
25
+ | `<re-button>` | 按钮 | 按钮组件,支持多种主题、尺寸、形状和变体,参考TDesign设计风格 | `docs/components/button.md` |
26
+ | `<re-divider>` | 分割线 | 分割线组件,支持水平/垂直布局、虚线样式和自定义内容 | `docs/components/divider.md` |
27
+ | `<re-fab>` | 悬浮按钮 | 悬浮动作按钮组件,支持拖拽、图标(re-icon)和文字,固定定位在页面边缘。 | `docs/components/fab.md` |
28
+ | `<re-icon>` | 图标 | 图标组件,会把本地 svg 文件转成 data URL 后渲染;传图片地址时显示图片;传其他字符时按文本渲染 | `docs/components/icon.md` |
29
+ | `<re-row>` + `<re-col>` | 布局 | 布局组件,包含 re-row 行和 re-col 列,参考TDesign栅格布局设计 | `docs/components/layout.md` |
30
+ | `<re-link>` | 链接 | 链接(README:re-link 链接) | `docs/components/link.md` |
31
+ | `<re-typography>` | 排版 | 排版(README:re-typography 排版) | `docs/components/typography.md` |
32
+
33
+ ## 导航 Navigation(9)
34
+
35
+ | 组件 | 中文名 | 用途 | 文档路径 |
36
+ | --- | --- | --- | --- |
37
+ | `<re-back-top>` | 返回顶部 | 返回顶部组件,固定在页面右下角,点击后返回页面顶部 | `docs/components/back-top.md` |
38
+ | `<re-indexes>` | 索引 | 索引(README:re-indexes 索引);1.0.4 起 App/H5 使用原生 `list-view` + `sticky-section` 实现吸顶 | `docs/components/indexes.md` |
39
+ | `<re-navbar>` | 导航条 | 自定义导航条组件,支持标题、左右文字/图标、显隐动画与固定吸顶。 | `docs/components/navbar.md` |
40
+ | `<re-side-bar>` + `<re-side-bar-item>` | 侧边导航栏 | 侧边导航栏组件,用于内容分类切换,配合 re-side-bar-item 使用 | `docs/components/side-bar.md` |
41
+ | `<re-steps>` + `<re-step-item>` | 步骤条 | 步骤条组件,引导用户按照流程完成任务的导航条,支持水平和垂直方向 | `docs/components/steps.md` |
42
+ | `<re-tab-bar>` + `<re-tab-bar-item>` | 标签栏 | 底部标签栏组件,用于页面底部导航切换,配合 re-tab-bar-item 使用 | `docs/components/tab-bar.md` |
43
+ | `<re-tabs>` + `<re-tab-panel>` | 选项卡 | 选项卡组件,用于内容分类切换,配合 re-tab-panel 使用。支持均分/非均分宽度、可滚动模式。 | `docs/components/tabs.md` |
44
+ | `<re-fixed-nav>` | 悬浮导航 | 悬浮导航(README:re-fixed-nav 悬浮导航) | `docs/components/fixed-nav.md` |
45
+ | `<re-pagination>` | 分页 | 分页(README:re-pagination 分页) | `docs/components/pagination.md` |
46
+
47
+ ## 输入 Input(25)
48
+
49
+ | 组件 | 中文名 | 用途 | 文档路径 |
50
+ | --- | --- | --- | --- |
51
+ | `<re-calendar>` | 日历 | 日历组件,用于选择日期或日期范围,支持单选、多选、范围选择,支持弹窗和内联模式 | `docs/components/calendar.md` |
52
+ | `<re-cascader>` | 级联选择器 | 级联选择器(README);1.0.5 起支持 `lazy` 懒加载、模板内直接渲染列 | `docs/components/cascader.md` |
53
+ | `<re-checkbox>` + `<re-checkbox-group>` | 多选框 | 多选框(README:re-checkbox 多选框) | `docs/components/checkbox.md` |
54
+ | `<re-color-picker>` | 颜色选择器 | 参照 TDesign 的颜色选择器面板实现,支持基础色板、完整调色板和弹窗模式。 | `docs/components/color-picker.md` |
55
+ | `<re-date-time-picker>` | 日期时间选择器 | 日期时间选择器组件,支持多种选择模式 | `docs/components/date-time-picker.md` |
56
+ | `<re-form>` + `<re-form-item>` | 表单 | 对齐 TDesign 交互的表单容器,负责字段注册、校验、重置和首个错误滚动 | `docs/components/form.md` |
57
+ | `<re-input>` | 输入框 | 对齐 TDesign 交互的输入框组件,支持状态、前后缀、清除按钮、竖排布局和表单联动 | `docs/components/input.md` |
58
+ | `<re-picker>` | 选择器 | 选择器(README:re-picker 选择器) | `docs/components/picker.md` |
59
+ | `<re-radio>` + `<re-radio-group>` | 单选框 | 单选框组件,用于在一组选项中选择单个值,需配合 re-radio-group 使用 | `docs/components/radio.md` |
60
+ | `<re-rate>` | 评分 | 评分组件,用于星级评价,支持半星选择和自定义文案 | `docs/components/rate.md` |
61
+ | `<re-search>` | 搜索框 | 搜索框组件,用于内容检索,支持清除、操作按钮和不同形状 | `docs/components/search.md` |
62
+ | `<re-slider>` | 滑动选择器 | 滑动选择器组件,用于在一定范围内选择数值 | `docs/components/slider.md` |
63
+ | `<re-stepper>` | 步进器 | 步进器组件,通过 +/- 按钮调整数值,支持范围、步长和整数限制 | `docs/components/stepper.md` |
64
+ | `<re-switch>` | 开关 | 开关(README:re-switch 开关) | `docs/components/switch.md` |
65
+ | `<re-textarea>` | 多行文本框 | 多行文本输入组件,支持自适应高度、字数统计和最大长度限制 | `docs/components/textarea.md` |
66
+ | `<re-tree-select>` | 树形选择 | 树形选择(README:re-tree-select 树形选择) | `docs/components/tree-select.md` |
67
+ | `<re-upload>` | 上传 | 文件上传组件,支持图片预览、多选、大小限制和上传前钩子 | `docs/components/upload.md` |
68
+ | `<re-code-input>` | 验证码输入 | 多位验证码逐格输入,支持密码遮罩 | `docs/components/code-input.md` |
69
+ | `<re-number-keyboard>` | 数字键盘 | 弹出式数字输入面板,支持随机按键和标题 | `docs/components/number-keyboard.md` |
70
+ | `<re-short-password>` | 短密码输入 | 网格状密码输入,常用于支付密码 | `docs/components/short-password.md` |
71
+ | `<re-signature>` | 签名 | 手写签名画板,支持确认和清除 | `docs/components/signature.md` |
72
+ | `<re-address>` | 地址选择 | 省市区三级联动地址选择器 | `docs/components/address.md` |
73
+ | `<re-time-select>` + `<re-time-pannel>` + `<re-time-detail>` | 时间段选择 | 时间段选择(README:re-time-select 时间段选择(含 re-time-pannel、re-time-detail)) | `docs/components/time-select.md` |
74
+ | `<re-time-picker>` | 时间选择器 | 底部弹层式时间滚轮选择器,支持时分、时分秒、范围限制与步长设置 | `docs/components/time-picker.md` |
75
+ | `<re-invoice>` | 发票 | 发票(README:re-invoice 发票) | `docs/components/invoice.md` |
76
+
77
+ ## 数据展示 Data Display(29)
78
+
79
+ | 组件 | 中文名 | 用途 | 文档路径 |
80
+ | --- | --- | --- | --- |
81
+ | `<re-avatar>` + `<re-avatar-group>` | 头像 | 参考 TDesign Avatar 的图片、图标、文字、角标和头像组能力,适配 uni-app x 组件写法 | `docs/components/avatar.md` |
82
+ | `<re-badge>` | 徽章 | 参考 TDesign badge 的样式与形状能力,支持数字、文字、红点、角标展示 | `docs/components/badge.md` |
83
+ | `<re-cell>` + `<re-cell-group>` | 单元格 | 单元格组件,用于列表项展示,支持标题、描述、图标、箭头、链接跳转等 | `docs/components/cell.md` |
84
+ | `<re-collapse>` + `<re-collapse-panel>` | 折叠面板 | 折叠面板组件,可展开/收起内容区域 | `docs/components/collapse.md` |
85
+ | `<re-count-down>` | 倒计时 | 倒计时组件,支持自定义格式化 | `docs/components/count-down.md` |
86
+ | `<re-empty>` | 空状态 | 空状态组件,用于展示无数据时的占位,支持空数据、错误、网络异常等场景 | `docs/components/empty.md` |
87
+ | `<re-footer>` | 页脚 | 页脚组件,用于页面底部展示版权信息、链接等 | `docs/components/footer.md` |
88
+ | `<re-grid>` + `<re-grid-item>` | 宫格 | 宫格组件,用于展示多个等宽的宫格内容 | `docs/components/grid.md` |
89
+ | `<re-image>` | 图片 | 图片组件,支持懒加载、自定义形状、加载状态等 | `docs/components/image.md` |
90
+ | `<re-image-viewer>` | 图片预览 | 图片预览组件,支持全屏查看、滑动切换、删除等 | `docs/components/image-viewer.md` |
91
+ | `<re-progress>` | 进度条 | 进度条组件,用于展示任务进度 | `docs/components/progress.md` |
92
+ | `<re-qrcode>` | 二维码 | 二维码生成组件,支持自定义颜色、尺寸、中心图标 | `docs/components/qrcode.md` |
93
+ | `<re-result>` | 结果 | 结果(README:re-result 结果) | `docs/components/result.md` |
94
+ | `<re-segmented>` | 分段控制器 | 分段控制器(README:re-segmented 分段控制器) | `docs/components/segmented.md` |
95
+ | `<re-skeleton>` | 骨架屏 | 骨架屏(README:re-skeleton 骨架屏) | `docs/components/skeleton.md` |
96
+ | `<re-sticky>` | 吸顶 | 吸顶(README:re-sticky 吸顶) | `docs/components/sticky.md` |
97
+ | `<re-swiper>` | 轮播 | 轮播(README:re-swiper 轮播) | `docs/components/swiper.md` |
98
+ | `<re-table>` | 表格 | 表格(README:re-table 表格) | `docs/components/table.md` |
99
+ | `<re-tag>` + `<re-check-tag>` | 标签 | 标签(README:re-tag 标签(含 re-check-tag)) | `docs/components/tag.md` |
100
+ | `<re-watermark>` | 水印 | 水印(README:re-watermark 水印) | `docs/components/watermark.md` |
101
+ | `<re-card>` | 商品卡片 | 商品卡片,支持图片、价格、店铺信息与自定义插槽 | `docs/components/card.md` |
102
+ | `<re-circle-progress>` | 环形进度条 | 以圆环形式展示进度,支持自定义颜色、大小、方向 | `docs/components/circle-progress.md` |
103
+ | `<re-comment>` | 商品评论 | 展示评论信息,支持评论详情、图片/视频、追评与操作栏 | `docs/components/comment.md` |
104
+ | `<re-count-up>` | 数字滚动 | 数字从起始值滚动到目标值的动画效果,支持缓动 | `docs/components/count-up.md` |
105
+ | `<re-price>` | 价格展示 | 商品价格格式化展示,支持货币符号、小数位、千分位、删除线 | `docs/components/price.md` |
106
+ | `<re-trend-arrow>` | 趋势箭头 | 展示涨/跌趋势箭头及百分比,支持自定义颜色和文案 | `docs/components/trend-arrow.md` |
107
+ | `<re-barrage>` | 弹幕 | 弹幕(README:re-barrage 弹幕) | `docs/components/barrage.md` |
108
+ | `<re-video>` | 视频播放器 | 视频播放器(README:re-video 视频播放器) | `docs/components/video.md` |
109
+ | `<re-avatar-cropper>` | 头像裁剪 | 图片裁剪交互,用于头像裁剪,支持旋转、缩放 | `docs/components/avatar-cropper.md` |
110
+
111
+ ## 反馈 Feedback(15)
112
+
113
+ | 组件 | 中文名 | 用途 | 文档路径 |
114
+ | --- | --- | --- | --- |
115
+ | `<re-action-sheet>` | 动作面板 | 动作面板(README:re-action-sheet 动作面板) | `docs/components/action-sheet.md` |
116
+ | `<re-drawer>` | 抽屉 | 抽屉组件,从屏幕边缘滑出的浮层面,支持 v-model:visible 双向绑定。支持推拉手势关闭,模态层过渡动画。 | `docs/components/drawer.md` |
117
+ | `<re-dialog>` | 对话框 | 用于显示重要信息或需要用户确认操作的模态对话框 | `docs/components/dialog.md` |
118
+ | `<re-dropdown-menu>` + `<re-dropdown-item>` | 下拉菜单 | 下拉菜单(README:re-dropdown-menu 下拉菜单) | `docs/components/dropdown-menu.md` |
119
+ | `<re-guide>` | 引导 | 用于引导用户了解产品功能的气泡提示组件 | `docs/components/guide.md` |
120
+ | `<re-loading>` | 加载 | 用于页面或数据加载状态展示的动画组件 | `docs/components/loading.md` |
121
+ | `<re-message>` + `<re-message-item>` | 消息通知 | 用于全局展示通知提醒信息,支持多种主题 | `docs/components/message.md` |
122
+ | `<re-notice-bar>` | 公告栏 | 用于循环播放公告信息,支持滚动和操作区域 | `docs/components/notice-bar.md` |
123
+ | `<re-overlay>` | 遮罩层 | 创建一个遮罩层,用于强调页面特定内容 | `docs/components/overlay.md` |
124
+ | `<re-popover>` | 气泡弹出框 | 点击或悬停在元素上时弹出的气泡式信息卡片 | `docs/components/popover.md` |
125
+ | `<re-popup>` | 弹出层 | 从顶部、底部、左侧、右侧或中心弹出的浮层组件 | `docs/components/popup.md` |
126
+ | `<re-pull-down-refresh>` | 下拉刷新 | 提供下拉刷新交互的容器组件 | `docs/components/pull-down-refresh.md` |
127
+ | `<re-swipe-cell>` | 滑动单元格 | 滑动单元格(README:re-swipe-cell 滑动单元格) | `docs/components/swipe-cell.md` |
128
+ | `<re-toast>` | 轻提示 | 轻量级消息提示组件,支持多种状态和位置 | `docs/components/toast.md` |
129
+ | `<re-loading-page>` | 全屏加载页 | 全屏加载页(README:re-loading-page 全屏加载页) | `docs/components/loading-page.md` |
130
+
131
+ ## 列表与布局 List & Layout(8)
132
+
133
+ | 组件 | 中文名 | 用途 | 文档路径 |
134
+ | --- | --- | --- | --- |
135
+ | `<re-infinite-loading>` | 无限加载 | 是否还有更多数据(滚动触底触发 `load-more`,`hasMore` / `threshold` 控制) | `docs/components/infinite-loading.md` |
136
+ | `<re-list>` | 虚拟列表 | 虚拟列表(README);`data` / `itemHeight` / `bufferCount` / `keyField` 控制渲染窗口 | `docs/components/list.md` |
137
+ | `<re-indicator>` | 轮播指示器 | 轮播指示器(README:re-indicator 轮播指示器) | `docs/components/indicator.md` |
138
+ | `<re-animate>` | 动画 | 动画(README:re-animate 动画) | `docs/components/animate.md` |
139
+ | `<re-transition>` | 过渡动画 | 过渡动画(README:re-transition 过渡动画) | `docs/components/transition.md` |
140
+ | `<re-drag>` | 拖拽 | 拖拽排序组件,长按拖动列表项进行排序 | `docs/components/drag.md` |
141
+ | `<re-safe-area>` | 安全区域 | 安全区域(README:re-safe-area 安全区域) | `docs/components/safe-area.md` |
142
+ | `<re-address-list>` | 地址列表 | 展示和管理收货地址列表,支持选择、新增、编辑、删除 | `docs/components/address-list.md` |
143
+
144
+ ## 营销 Marketing(11)
145
+
146
+ | 组件 | 中文名 | 用途 | 文档路径 |
147
+ | --- | --- | --- | --- |
148
+ | `<re-square-nine>` | 九宫格 | 九宫格(README:re-square-nine 九宫格) | `docs/components/square-nine.md` |
149
+ | `<re-scratch-card>` | 刮刮卡 | 刮刮卡(README:re-scratch-card 刮刮卡) | `docs/components/scratch-card.md` |
150
+ | `<re-gift-box>` | 礼物盒 | 礼物盒(README:re-gift-box 礼物盒) | `docs/components/gift-box.md` |
151
+ | `<re-lotto-roll>` | 摇奖机 | 摇奖机(README:re-lotto-roll 摇奖机) | `docs/components/lotto-roll.md` |
152
+ | `<re-guess-gift>` | 猜礼物 | 猜礼物(README:re-guess-gift 猜礼物) | `docs/components/guess-gift.md` |
153
+ | `<re-hit-eggs>` | 砸金蛋 | 砸金蛋(README:re-hit-eggs 砸金蛋) | `docs/components/hit-eggs.md` |
154
+ | `<re-gift-rain>` | 红包雨 | 红包雨(README:re-gift-rain 红包雨) | `docs/components/gift-rain.md` |
155
+ | `<re-luck-shake>` | 摇一摇 | 摇一摇(README:re-luck-shake 摇一摇) | `docs/components/luck-shake.md` |
156
+ | `<re-marquee>` | 跑马灯抽奖 | 跑马灯抽奖(README:re-marquee 跑马灯抽奖) | `docs/components/marquee.md` |
157
+ | `<re-shake-dice>` | 摇骰子 | 摇骰子(README:re-shake-dice 摇骰子) | `docs/components/shake-dice.md` |
158
+ | `<re-turntable>` | 大转盘 | 大转盘(README:re-turntable 大转盘) | `docs/components/turntable.md` |
159
+
160
+ ## 业务 Business(14)
161
+
162
+ | 组件 | 中文名 | 用途 | 文档路径 |
163
+ | --- | --- | --- | --- |
164
+ | `<re-ecard>` | 电子卡券 | 电子卡券(README:re-ecard 电子卡券) | `docs/components/ecard.md` |
165
+ | `<re-sku>` | 商品规格选择 | 商品规格弹层,支持规格联动、数量调整、不可售态与自定义底部操作 | `docs/components/sku.md` |
166
+ | `<re-submit-bar>` | 提交订单栏 | 底部固定的订单提交栏,展示合计金额和提交按钮,支持优惠券选择入口 | `docs/components/submit-bar.md` |
167
+ | `<re-coupon>` | 优惠券选择器 | 优惠券选择器(README:re-coupon 优惠券选择器) | `docs/components/coupon.md` |
168
+ | `<re-share-sheet>` | 分享面板 | 底部分享选择面板,支持单行滚动、分页展示和取消回调等分享场景 | `docs/components/share-sheet.md` |
169
+ | `<re-floating-panel>` | 浮动面板 | 底部可拖拽的浮动面板,支持多锚点停靠,拖拽条控制面板展开/收起高度 | `docs/components/floating-panel.md` |
170
+ | `<re-cart-bar>` | 购物车栏 | 购物车栏(README:re-cart-bar 购物车栏) | `docs/components/cart-bar.md` |
171
+ | `<re-goods-filter>` | 商品筛选 | 商品筛选(README:re-goods-filter 商品筛选) | `docs/components/goods-filter.md` |
172
+ | `<re-quick-enter>` | 快捷入口 | 快捷入口(README:re-quick-enter 快捷入口) | `docs/components/quick-enter.md` |
173
+ | `<re-search-history>` | 搜索历史 | 搜索历史(README);1.0.5 起 `suggestData` 联想关键词走虚拟渲染(`suggestMaxHeight`) | `docs/components/search-history.md` |
174
+ | `<re-product-feed>` | 商品 Feed 流 | 商品 Feed 流(README:re-product-feed 商品 Feed 流) | `docs/components/product-feed.md` |
175
+ | `<re-order-cancel-panel>` | 订单取消面板 | 订单取消面板(README:re-order-cancel-panel 订单取消面板) | `docs/components/order-cancel-panel.md` |
176
+ | `<re-order-remark>` | 订单备注 | 订单备注(README:re-order-remark 订单备注) | `docs/components/order-remark.md` |
177
+ | `<re-login>` | 登录 | 登录(README:re-login 登录) | `docs/components/login.md` |
178
+
179
+ ## 全局配置 Config(1)
180
+
181
+ | 组件 | 中文名 | 用途 | 文档路径 |
182
+ | --- | --- | --- | --- |
183
+ | `<re-config-provider>` | 全局配置 | 全局配置组件,用于统一管理主题、国际化语言和全局z-index | `docs/components/config-provider.md` |
184
+
185
+ ## 有文档页但未收入 sidebar(2)
186
+
187
+ | 组件 | 中文名 | 用途 | 文档路径 |
188
+ | --- | --- | --- | --- |
189
+ | `<re-chat>` + `<re-chat-*>` | 智能对话 | 基于 uni-app x 实现的聊天列表业务组件,支持左右角色气泡、头像、时间、状态与底部输入区插槽。 | `docs/components/chat.md` |
190
+ | `<re-indexes-anchor>` | 索引锚点 | 用于配合 `re-indexes` 自定义索引分组标题与吸顶锚点展示。既可用于 `anchor` 作用域插槽,也可直接作为 `re-indexes` 默认插槽中的锚点子组件。 | `docs/components/indexes-anchor.md` |
191
+
192
+ > `re-chat` 在 `README.md` 的「业务(15个)」清单里,但 `sidebar.ts` 的「业务 Business」只有 14 项;`re-indexes-anchor` 两侧都未单列(它是 `re-indexes` 的配套锚点组件,源码目录为 `re-indexes-anchor/`,**没有 readme.md**)。
193
+
194
+ ## 存在于 uni_modules、但没有独立文档页的组件(3)
195
+
196
+ | 组件 | 说明 | 来源 |
197
+ | --- | --- | --- |
198
+ | `re-common` | 基础模块:类型定义、样式转换、单位补全、唯一 ID、边界值处理等底层工具(`type.uts`、`re-common.uvue`) | `uni_modules/reglow-review/components/re-common/readme.md`、`docs/guide/introduction.md` |
199
+ | `re-theme` | 基础模块:把 `--re-*` 设计令牌注入当前作用域,支持暗色与局部主题覆盖 | `uni_modules/reglow-review/components/re-theme/readme.md`、`docs/guide/theme.md` |
200
+ | `re-slide-captcha` | 滑动验证组件,1.0.2 新增;`pages/input/slide-captcha` 有演示页,但 `docs/components/` 无对应文档页 | `uni_modules/reglow-review/components/re-slide-captcha/readme.md`、`CHANGELOG.md` 1.0.2 |
201
+
202
+ ## 常见选型对照
203
+
204
+ | 需求 | 选它 | 不要选 / 注意 |
205
+ | --- | --- | --- |
206
+ | 表单输入 + 校验 | `<re-form>` + `<re-form-item>` + `<re-input>` / `<re-textarea>` | 不要自己写校验;`re-form` 已含字段注册、校验、重置与首个错误滚动 |
207
+ | 省市区三级选择 | `<re-address>`(`provinces` 传数据;大数据量用 `lazy` + `level-select`) | 自定义多级联动/非行政区层级 → `<re-cascader>`(`options` + `lazy`) |
208
+ | 树形数据选择 | `<re-tree-select>` | 层级型联选用 `<re-cascader>`,两者数据结构不同 |
209
+ | 时间选择 | 单点时间 → `<re-time-picker>`;时间段 → `<re-time-select>`;日期/日期时间 → `<re-date-time-picker>` / `<re-calendar>` | 不要把 `re-calendar`(面板/弹窗形态)当输入框用 |
210
+ | 长列表 | `<re-list>`(固定行高虚拟列表);分页追加 → `<re-infinite-loading>` | 两者都是 `scroll-view` 容器,**不要互相嵌套** |
211
+ | 下拉刷新 | `<re-pull-down-refresh>` | 与 `re-infinite-loading` 的分工:一个管顶部刷新、一个管底部加载 |
212
+ | 轻量浮层 / 模态 | 轻提示 `<re-toast>`、全局通知 `<re-message>`、确认对话框 `<re-dialog>`、通用浮层 `<re-popup>`、侧滑面板 `<re-drawer>`、底部动作列表 `<re-action-sheet>` | 都用 `visible` + `update:visible` 控制显隐,注意各组件文档的 Props 差异 |
213
+ | 图标 | `<re-icon>`(内置 svg / 图片地址 / 文本三种渲染方式) | 不要额外引图标字体 |
214
+ | 主题与暗色 | `<re-config-provider>`(全局)/ `<re-theme>`(局部) | 多数组件读 `--re-*`,但 `re-form` / `re-input` / `re-radio` / `re-switch` / `re-avatar` / `re-form-item` 内部用 `--td-*`,见 `BEST_PRACTICES.md` §6 |
215
+ | 营销玩法 | 大转盘 `<re-turntable>`、砸金蛋 `<re-hit-eggs>`、九宫格 `<re-square-nine>`、摇骰子 `<re-shake-dice>`、红包雨 `<re-gift-rain>`、跑马灯 `<re-marquee>` 等(见「营销 Marketing」分类) | 各玩法组件的 props/事件以 `docs/components/<name>.md` 与源码为准 |
216
+ | 电商业务组件 | 规格 `<re-sku>`、提交栏 `<re-submit-bar>`、购物车栏 `<re-cart-bar>`、优惠券 `<re-coupon>`、分享 `<re-share-sheet>`、搜索历史 `<re-search-history>`、商品流 `<re-product-feed>` | 这些组件偏业务耦合,接入前先确认其数据入参结构(部分文档 Props 表为空,需读源码) |
@@ -0,0 +1,138 @@
1
+ ---
2
+ name: review-components
3
+ description: ReView(reglow-review)uni-app x 移动端组件库的检索、选型、用法示例、主题定制、国际化与排障技能。当用户提到 ReView 组件、reglow-review、re-button、re-input、re-config-provider、uni-app x 组件库、uts/uvue 组件、uvue 组件、easycom 的 re-* 标签,或需要为 uni-app x 项目挑选组件、查询组件 props/事件、生成 uvue 用法代码、配置 CSS 变量主题(--re-*)、接入 zh-CN/zh-TW/en-US 语言包时使用。
4
+ ---
5
+
6
+ # ReView 组件库技能(review-components)
7
+
8
+ ## 1. 技能定位
9
+
10
+ 让 AI 在「用 ReView 写 uni-app x 代码」时**只依据真实文档与源码作答**,不凭记忆编造组件名、props、事件、插槽或导入路径。
11
+
12
+ - 组件库:`reglow-review`(uni-app x + uts/uvue,参考 TDesign 设计风格)
13
+ - 组件前缀:全部为 `re-*`,模板里用 easycom 标签直接用(如 `<re-button>`、`<re-cascader>`)
14
+ - 发布形态:`uni_modules/reglow-review/`(聚合发布目录,含 `components/`、`utssdk/`、`package.json`、`readme.md`、`changelog.md`)
15
+ - 事实来源优先级:**review-mcp 工具 → `docs/components/*.md` 与 `docs/guide/*.md` → `uni_modules/reglow-review/components/re-*/`(源码与 readme)→ `CHANGELOG.md`**
16
+ - 仓库内文档:`review/README.md`(安装/平台/运行/组件清单)、`review/docs/`(VitePress 站,含 `guide/introduction.md`、`guide/theme.md`、`guide/locale.md`、`guide/changelog.md`)、`review/CHANGELOG.md`、`review/docs/.vitepress/sidebar.ts`(组件分类权威来源)
17
+
18
+ ## 2. 触发场景
19
+
20
+ | 用户意图 | 走哪里 |
21
+ | ---------------------------------------------------------- | ------------------------------------------------------------------------ |
22
+ | 「有没有 XX 组件 / 该用哪个组件」 | `get_review_document`(不传 `component` 得总览)、本目录 `COMPONENTS.md` |
23
+ | 「XX 组件怎么用 / 有哪些 props 和事件」 | `get_review_document` + `get_review_code_examples` |
24
+ | 「给我一段可复制的 uvue 代码」 | `get_review_code_examples` |
25
+ | 「这个组件内部怎么实现的 / 文档没写 props」 | `list_component_files` → `get_file_code` → `get_function_code` |
26
+ | 「哪里用到了 XX / 关键词排查」 | `search_review_docs` |
27
+ | 安装、easycom、主题、i18n、平台差异、运行方式 | `get_review_guide` |
28
+ | 业务代码里引入组件、切主题、切语言、踩坑规避 | 本目录 `BEST_PRACTICES.md` |
29
+ | 具体任务怎么做(新增组件、上滑加载、级联选择、表单、排障) | 本目录 `WORKFLOWS.md` |
30
+
31
+ ## 3. 组件库关键事实(决定了 AI 怎么答)
32
+
33
+ ### 3.1 技术栈与运行方式
34
+
35
+ | 事项 | 事实 | 来源 |
36
+ | -------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------ |
37
+ | 技术栈 | uni-app x,使用 **uts 强类型语法** + **uvue 组件**开发(不是 Vue SFC 的普通 web 写法) | `README.md`、`docs/index.md` |
38
+ | 编译运行 | **uni-app x 项目不支持 npm CLI 方式开发**,编译运行全部通过 HBuilderX 内置编译器;需 HBuilderX 3.99+ | `README.md` |
39
+ | npm 用途 | `package.json` 的脚本仅用于文档站与自动化测试(`docs:dev`、`test:h5` 等),**不是**项目编译入口 | `README.md`、`package.json` |
40
+ | 组件规模 | `docs/components/*.md` 共 **121 篇组件文档**;`uni_modules/reglow-review/components/` 下 **122 个含 `readme.md` 的组件目录**(含基础模块 `re-common`/`re-theme`、以及未单独建文档页的 `re-slide-captcha`) | 实测目录;`README.md` 顶部口径为「124+ 组件」、`docs/index.md` 口径为「65+ 组件」,**以实测 121 篇文档为准** |
41
+ | 分类 | 9 个分类:基础 Basic / 导航 Navigation / 输入 Input / 数据展示 Data Display / 反馈 Feedback / 列表与布局 List & Layout / 营销 Marketing / 业务 Business / 全局配置 Config | `docs/.vitepress/sidebar.ts` |
42
+
43
+ ### 3.2 支持的平台(以 README 为准)
44
+
45
+ - **uni-app x 全平台**:H5、App-Android、App-iOS、Harmony(鸿蒙)、微信小程序。
46
+ - 插件包声明(`uni_modules/reglow-review/package.json`):`uni_modules.platforms.client.uni-app-x` 下 web(safari/chrome)、app(android/ios/harmony)、mp(weixin) 均为 `√`;engines 要求 `HBuilderX ^5.07`、`uni-app-x ^5.07`。
47
+ - **平台差异是真实存在的**,写代码前先看 `BEST_PRACTICES.md` §4 与 `CHANGELOG.md`(如微信小程序 WebView 渲染器不支持原生 sticky,`re-indexes` 在小程序端回退 `scroll-view`)。
48
+
49
+ ### 3.3 安装与引入
50
+
51
+ | 方式 | 写法 | 来源 |
52
+ | ----------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------- | -------------------------------- |
53
+ | DCloud 插件市场 | HBuilderX 中搜索并导入 `reglow-review` | `README.md` |
54
+ | 手动复制 | 把 `uni_modules/reglow-review/` 复制到项目 `uni_modules/` | `README.md` |
55
+ | easycom 自动扫描(README 推荐) | `pages.json` 里 `{"easycom":{"autoscan":true}}`;组件位于 `uni_modules/reglow-review/components/`,无需再配 `easycom.custom` | `README.md`、`review/pages.json` |
56
+ | easycom 显式正则(`docs/guide/introduction.md` 写法) | `"custom": { "^re-(.*)": "@/uni_modules/reglow-review/components/re-$1/re-$1.uvue" }` | `docs/guide/introduction.md` |
57
+ | 手动 import(个别不建 easycom 的场景) | `import ReInput from '@/uni_modules/reglow-review/components/re-input/re-input'` | `re-input/readme.md` |
58
+
59
+ > ⚠️ **安装口径冲突,以 README 为准**:`README.md` 明确写「组件通过 DCloud 插件市场或 uni_modules 方式安装,**不支持 npm 安装**」;`docs/guide/introduction.md` 中出现过 `npm install @reglow/review` 的说法,二者不一致时按 README 处理。
60
+
61
+ ### 3.4 主题与国际化
62
+
63
+ - **主题**:基于 CSS 变量的主题系统,令牌前缀为 `--re-*`(`docs/guide/theme.md` 列出 `--re-color-primary`、`--re-text-color-primary`、`--re-radius-*` 等);通过 `re-config-provider` 的 `theme="dark"` 切暗色、`themeVars` 覆盖变量;只想作用于局部时用 `re-theme`(`theme` + `themeVars`)。
64
+ - **注意**:部分组件的内部样式仍沿用 TDesign 的 `--td-*` 变量名(实测 `re-form` 的 `--td-form-bg-color`、`re-avatar`、`re-input`、`re-radio`、`re-switch`、`re-form-item` 共 6 个组件、75 处),所以「覆盖变量改主题」时优先用组件文档给出的 `customStyle` / 颜色类 prop,而不是假设所有组件都读 `--re-*`。
65
+ - **国际化**:内置 `zh-CN` / `zh-TW` / `en-US`,语言包为 **uts 文件**:`uni_modules/reglow-review/utssdk/re-config-provider/locale/{zh-CN,zh-TW,en-US}.uts`;通过 `re-config-provider` 的 `locale` 切换、`localeConfig` 覆盖文案(`docs/guide/locale.md`)。**组件源码中未使用 `vue-i18n`**(实测 `uni_modules` 下无 `vue-i18n` 引用),故不要把 `vue-i18n` 的 `useI18n()` 写法套到 ReView 上。
66
+
67
+ ### 3.5 版本
68
+
69
+ - 当前版本 **1.0.5(2026-09-14)**(`CHANGELOG.md`、`docs/guide/changelog.md`、`uni_modules/reglow-review/package.json` 的 `version`)。
70
+ - 最近两版的关键行为变化(排障必读):1.0.5 重构了 `re-cascader` 列渲染与 `re-address` 懒加载、增强 `re-search-history`(联想关键词虚拟渲染);1.0.4 批量修复了模板 `v-for` 索引被推断成 `number | string | symbol` 的 HBuilderX 编译告警,并重构 `re-indexes` 吸顶实现。
71
+
72
+ ## 4. 核心工作流(配合 review-mcp)
73
+
74
+ ### 4.1 四步基础查询
75
+
76
+ 1. **定位组件**:`get_review_document`(可传 `category`)→ 拿到组件名与一句话说明。
77
+ 2. **取完整文档**:`get_review_document` 传 `component`(如 `component: "button"`)→ 文档正文 + API 表格 + 示例说明。
78
+ 3. **取可运行代码**:`get_review_code_examples` 传同一个 `component` → 可直接复制的 uvue/uts 片段。
79
+ 4. **确认不够再下钻**:`list_component_files` → `get_file_code`(指定行号区间)→ `get_function_code`(按符号名取实现)。
80
+
81
+ ### 4.2 硬性规则
82
+
83
+ - **不猜 API**:任何 prop / event / slot / 子组件标签必须来自工具返回的文档或源码;工具查不到就说「文档未提供」,并给出下钻方案(见 `WORKFLOWS.md` 示例 6)。
84
+ - **文档表格可能为空**:`docs/components/*.md` 的部分组件 Props 表为 `-`(实测 `input`、`cascader`、`form`、`picker` 等),此时必须用 `get_file_code` 读 `.uvue` 里的 `Props` 类型或 `withDefaults`,**不要用「应该支持」补齐**。
85
+ - **标签用 `re-*`**:easycom 只认组件目录名,例:组件文档 `image-viewer` → 标签 `<re-image-viewer>`;`layout` 组件的标签是 `<re-row>` / `<re-col>`。
86
+ - **先读后写**:生成组件代码前,至少调用一次 `get_review_document` 或 `get_review_code_examples`。
87
+ - **uvue 不是浏览器 Vue**:不要写 `document`/`window`、DOM 查询、`ul/li/div`、CSS 选择器式的复杂样式;uvue 在 App 端仅支持 flex 布局(`uni.scss` 顶部注释)。
88
+
89
+ ## 5. MCP 工具清单(@reglow/review-mcp)
90
+
91
+ | 工具 | 用途 |
92
+ | -------------------------- | --------------------------------------------------------------------------- |
93
+ | `get_review_document` | 组件完整文档(不传 `component` 返回按分类的组件总览,可传 `category` 过滤) |
94
+ | `get_review_code_examples` | 提取文档中的可复制 uvue/uts 示例 |
95
+ | `list_component_files` | 列组件源码文件清单(路径 / 行数 / 大小) |
96
+ | `get_file_code` | 读组件内具体文件内容(支持行号区间) |
97
+ | `get_function_code` | 取某个函数 / 常量 / 组件定义的完整实现 |
98
+ | `search_review_docs` | 跨文档与源码关键词检索 |
99
+ | `get_review_guide` | 库级指南(安装、easycom、主题、i18n、平台、约定等 topic) |
100
+
101
+ 工具的参数、判断标准与 6 个完整任务示例见 `WORKFLOWS.md`。
102
+
103
+ ## 6. 文件导航(同目录)
104
+
105
+ | 文件 | 内容 | 何时读 |
106
+ | ------------------- | ------------------------------------------------------------------------------------------- | ----------------------------------------- |
107
+ | `WORKFLOWS.md` | review-mcp 工具概览 + 四步查询流程 + 6 个完整任务示例(含真实代码与判断标准) | 需要查文档 / 示例代码、或照着做具体任务前 |
108
+ | `BEST_PRACTICES.md` | 安装与目录约定、easycom、平台差异与条件编译、主题与样式定制、i18n、性能、常见陷阱与错误速查 | 写业务代码前后对照 |
109
+ | `COMPONENTS.md` | 按 `sidebar.ts` 真实分类的全量组件清单(121 个:组件标签 + 用途 + 文档路径)+ 选型提示 | 组件选型、确认组件是否存在 |
110
+
111
+ ## 7. 在 Trae / CodeBuddy / Qoder 中启用(MCP + Skills)
112
+
113
+ 一条命令同时写好 MCP 配置并把本技能装进对应目录(默认就是这三个工具):
114
+
115
+ ```bash
116
+ npx -y -p @reglow/review-mcp review-setup --tools trae,codebuddy,qoder
117
+ # 可选:--scope user(用户级)|--dry-run(仅预览)|--force(覆盖已有 Skills)
118
+ ```
119
+
120
+ | 工具 | Skills 目录(项目级) | MCP 配置(项目级) | 仍需手动完成 |
121
+ | --------- | --------------------- | ---------------------------------------- | ----------------------------------------------------------------------------------- |
122
+ | Trae | `.trae/skills/` | `.trae/mcp.json` | 设置 → MCP 打开「启用项目级 MCP」开关 |
123
+ | CodeBuddy | `.codebuddy/skills/` | `.mcp.json` | IDE 需在对话面板 CodeBuddy Settings → MCP → Add MCP 粘贴同一条目;CLI 直接生效 |
124
+ | Qoder | `.qoder/skills/` | `.mcp.json`(或 `.qoder/settings.json`) | 项目级 MCP 默认需批准(或设 `mcp.enableAllProjectMcpServers: true`);`/mcp reload` |
125
+
126
+ - MCP 条目:`{"command":"npx","args":["-y","@reglow/review-mcp"]}`;CodeBuddy / Qoder 额外带 `type: "stdio"` 与 `description`。
127
+ - 排查:`npx -y @reglow/review-mcp --check`(知识源与组件数)、`npx -y @reglow/review-mcp --list-tools`(各工具路径)。
128
+ - 配置完成后重载 AI 工具(Qoder 还需 `/skills reload`),再让它「用 re-button 和 re-form 写一个登录页」验证工具被调用。
129
+ - 上述包名 / 命令名与同构的 `reui/mcp` 实现(`@reglow/reui-mcp` + bin `reui-setup`)保持一致;若 `review/mcp` 实际发布的 bin 命名不同,以该目录 `package.json` 的 `bin` 字段为准。
130
+
131
+ ## 8. 常见红线
132
+
133
+ 1. 不编造组件名、props、events、slots、子组件标签;`docs/components/` 里没有的组件名一律先 `search_review_docs` 复核。
134
+ 2. 不把 `vue-i18n` 的 `useI18n()` / `t()` 写法搬到 ReView:组件文案走 `re-config-provider` 的 `locale` / `localeConfig`。
135
+ 3. 不写浏览器 API(`window` / `document` / DOM 查询)与非 flex 布局;uvue 在 App 端仅支持 flex。
136
+ 4. 不用 `npm install` 安装本组件库,也不用 npm CLI 编译 uni-app x 项目(README 明确不支持)。
137
+ 5. 文档表格为空时不要臆造 props,必须读源码确认。
138
+ 6. 不修改 `mcp/` 下的代码与 `package.json` 等非文档文件;本技能只负责文档。