HBuilderX

HBuilderX

极客开发工具
uni-app

uni-app

开发一次,多端覆盖
uniCloud

uniCloud

云开发平台
HTML5+

HTML5+

增强HTML5的功能体验
MUI

MUI

上万Star的前端框架

HBuilderX CLI 容器化自动打包、下载、发布apk 大功搞成

打包日志如下:


容器启动,准备执行打包任务...
目标脚本路径: /opt/pack.sh
输出目录: /opt/apppack


开始执行打包脚本...
bash: warning: setlocale: LC_ALL: cannot change locale (zh_CN.UTF-8)
开始执行 HBuilderX 自动化构建和发布流程...
正在克隆代码仓库...
Cloning into 'lhz-app-shop'...
正在启动 HBuilderX CLI...
/usr/bin/bash: warning: setlocale: LC_ALL: cannot change locale (zh_CN.UTF-8)

正在打开项目...
正在导入项目...
项目导入成功

正在登录用户...
0:user login:OK
正在更新版本号...
当前 versionName: 1.1.3
新 versionName: 1.1.4
当前 versionCode: 113
新 versionCode: 114
manifest.json 文件已成功更新!
正在构建 APP 资源包...
19:22:50.743 项目 lhz_shop 开始导出...
19:22:51.280 5.07
19:22:51.329 正在编译中...
19:22:51.611 ​Browserslist: caniuse-lite is outdated. Please run:
19:22:51.612 npx update-browserslist-db@latest
19:22:51.613 Why you should do it regularly: https://github.com/browserslist/update-db#readme​
19:23:02.116 WARNING: Module Warning (from ./node_modules/postcss-loader/src/index.js):
19:23:02.117 Warning
19:23:02.117 (327:3) Gradient has outdated direction syntax. New syntax is like to left instead of right.
19:23:02.127 项目 lhz_shop 编译成功。
19:23:02.222 项目 lhz_shop 正在导出...
19:23:02.260 项目 lhz_shop 导出成功,路径为:/opt/lhz-app-shop/lhz_shop/unpackage/resources
19:23:02.260 本wgt文件由HBuilderX 5.07.2026041610-alpha 版本生成,运行的基座sdk也需配套相同版本,否则在手机端部分功能可能无法正常使用。详见 http://ask.dcloud.net.cn/article/35627

正在执行打包...
19:23:03.470 检查云端打包状态...
19:23:03.643 检查打包资源...
19:23:03.970 <ul style="margin-left: -30px; margin-top: -30px;"><li>[Warning] 为落实《网络安全法》《消费者权益保护法》的要求,有效治理App强制授权、过度索权、超范围收集个人信息等现象,保障个人信息安全,国内各大应用市场都加强了应用审核,要求应用必须符合相关政策才能上架,当前应用缺少相关配置,<a href="https://uniapp.dcloud.net.cn/tutorial/app-privacy-android">查看如何解决</a>。不上架国内应用市场无需处理。</li></ul>
19:23:03.971 正在编译打包资源...
19:23:03.982 项目 'lhz_shop' 开始编译...
19:23:04.511 5.07
19:23:04.512
19:23:04.564 正在编译中...
19:23:04.565
19:23:04.838 ​Browserslist: caniuse-lite is outdated. Please run:
19:23:04.838 npx update-browserslist-db@latest
19:23:04.839 Why you should do it regularly: https://github.com/browserslist/update-db#readme​
19:23:04.839
19:23:04.848
19:23:04.848
19:23:15.323 WARNING: Module Warning (from ./node_modules/postcss-loader/src/index.js):
19:23:15.324 Warning
19:23:15.324
19:23:15.324 (327:3) Gradient has outdated direction syntax. New syntax is like to left instead of right.
19:23:15.324
19:23:15.330 项目 'lhz_shop' 编译成功。
19:23:15.330
19:23:16.445 压缩打包资源...
19:23:17.664 向云端发送打包请求...
19:23:36.006 打包成功后会自动返回下载链接。 打包过程查询请点菜单发行-查看云打包状态。 周五傍晚等高峰期打包排队较长,请耐心等待。 如果是为了三方SDK调试,请使用自定义调试基座(菜单运行-手机或模拟器-制作自定义调试基座),不要反复打包。 项目 lhz_shop [UNI]已成功提交到云端,正在获取打包状态...
19:23:36.129 项目 lhz_shop [UNI
]的打包状态: 时间: 2026-04-24 19:23:35 类型: Android自有证书 队列中
19:23:40.671 项目 lhz_shop [UNI]的打包状态: 时间: 2026-04-24 19:23:35 类型: Android自有证书 队列中
19:24:34.261 项目 lhz_shop [UNI
]的打包状态: 时间: 2026-04-24 19:23:35 类型: Android自有证书 正在云端打包 [Output]预计 2-5 分钟完成打包,请稍等片刻。
19:25:30.381 项目 lhz_shop [UNI***]的打包状态: 时间: 2026-04-24 19:23:35 类型: Android自有证书 正在云端打包 [Output]预计 2-5 分钟完成打包,请稍等片刻。

加V:china-lsl 获取脚本haha:

1、镜像脚本
2、打包配置
3、下载apk脚本
4、修改版本号脚本
5、一键打包脚本

继续阅读 »

打包日志如下:


容器启动,准备执行打包任务...
目标脚本路径: /opt/pack.sh
输出目录: /opt/apppack


开始执行打包脚本...
bash: warning: setlocale: LC_ALL: cannot change locale (zh_CN.UTF-8)
开始执行 HBuilderX 自动化构建和发布流程...
正在克隆代码仓库...
Cloning into 'lhz-app-shop'...
正在启动 HBuilderX CLI...
/usr/bin/bash: warning: setlocale: LC_ALL: cannot change locale (zh_CN.UTF-8)

正在打开项目...
正在导入项目...
项目导入成功

正在登录用户...
0:user login:OK
正在更新版本号...
当前 versionName: 1.1.3
新 versionName: 1.1.4
当前 versionCode: 113
新 versionCode: 114
manifest.json 文件已成功更新!
正在构建 APP 资源包...
19:22:50.743 项目 lhz_shop 开始导出...
19:22:51.280 5.07
19:22:51.329 正在编译中...
19:22:51.611 ​Browserslist: caniuse-lite is outdated. Please run:
19:22:51.612 npx update-browserslist-db@latest
19:22:51.613 Why you should do it regularly: https://github.com/browserslist/update-db#readme​
19:23:02.116 WARNING: Module Warning (from ./node_modules/postcss-loader/src/index.js):
19:23:02.117 Warning
19:23:02.117 (327:3) Gradient has outdated direction syntax. New syntax is like to left instead of right.
19:23:02.127 项目 lhz_shop 编译成功。
19:23:02.222 项目 lhz_shop 正在导出...
19:23:02.260 项目 lhz_shop 导出成功,路径为:/opt/lhz-app-shop/lhz_shop/unpackage/resources
19:23:02.260 本wgt文件由HBuilderX 5.07.2026041610-alpha 版本生成,运行的基座sdk也需配套相同版本,否则在手机端部分功能可能无法正常使用。详见 http://ask.dcloud.net.cn/article/35627

正在执行打包...
19:23:03.470 检查云端打包状态...
19:23:03.643 检查打包资源...
19:23:03.970 <ul style="margin-left: -30px; margin-top: -30px;"><li>[Warning] 为落实《网络安全法》《消费者权益保护法》的要求,有效治理App强制授权、过度索权、超范围收集个人信息等现象,保障个人信息安全,国内各大应用市场都加强了应用审核,要求应用必须符合相关政策才能上架,当前应用缺少相关配置,<a href="https://uniapp.dcloud.net.cn/tutorial/app-privacy-android">查看如何解决</a>。不上架国内应用市场无需处理。</li></ul>
19:23:03.971 正在编译打包资源...
19:23:03.982 项目 'lhz_shop' 开始编译...
19:23:04.511 5.07
19:23:04.512
19:23:04.564 正在编译中...
19:23:04.565
19:23:04.838 ​Browserslist: caniuse-lite is outdated. Please run:
19:23:04.838 npx update-browserslist-db@latest
19:23:04.839 Why you should do it regularly: https://github.com/browserslist/update-db#readme​
19:23:04.839
19:23:04.848
19:23:04.848
19:23:15.323 WARNING: Module Warning (from ./node_modules/postcss-loader/src/index.js):
19:23:15.324 Warning
19:23:15.324
19:23:15.324 (327:3) Gradient has outdated direction syntax. New syntax is like to left instead of right.
19:23:15.324
19:23:15.330 项目 'lhz_shop' 编译成功。
19:23:15.330
19:23:16.445 压缩打包资源...
19:23:17.664 向云端发送打包请求...
19:23:36.006 打包成功后会自动返回下载链接。 打包过程查询请点菜单发行-查看云打包状态。 周五傍晚等高峰期打包排队较长,请耐心等待。 如果是为了三方SDK调试,请使用自定义调试基座(菜单运行-手机或模拟器-制作自定义调试基座),不要反复打包。 项目 lhz_shop [UNI]已成功提交到云端,正在获取打包状态...
19:23:36.129 项目 lhz_shop [UNI
]的打包状态: 时间: 2026-04-24 19:23:35 类型: Android自有证书 队列中
19:23:40.671 项目 lhz_shop [UNI]的打包状态: 时间: 2026-04-24 19:23:35 类型: Android自有证书 队列中
19:24:34.261 项目 lhz_shop [UNI
]的打包状态: 时间: 2026-04-24 19:23:35 类型: Android自有证书 正在云端打包 [Output]预计 2-5 分钟完成打包,请稍等片刻。
19:25:30.381 项目 lhz_shop [UNI***]的打包状态: 时间: 2026-04-24 19:23:35 类型: Android自有证书 正在云端打包 [Output]预计 2-5 分钟完成打包,请稍等片刻。

加V:china-lsl 获取脚本haha:

1、镜像脚本
2、打包配置
3、下载apk脚本
4、修改版本号脚本
5、一键打包脚本

收起阅读 »

关于HBuilder X的uni-agent自定义模型报错 2013问题

uni_ai

我现在使用的是Minimax coding plan
接入的时候 使用的是 openai的格式

UNI_AGENT_BASE_URL=https://api.minimaxi.com/v1
UNI_AGENT_API_KEY=你的_MINIMAX_TOKEN_PLAN_API_KEY
UNI_AGENT_PROVIDER=openai-compatible
UNI_AGENT_MODEL=openai-compatible/MiniMax-M2.7
UNI_AGENT_SMALL_FAST_MODEL=openai-compatible/MiniMax-M2.7

但是提示
❌ 错误: invalid params, invalid chat setting (2013)
使用Codex分析uniapp文档和Minimax文档 再提供Hbuilder X的路径后 Codex给出答复是

然后我切换为 anthropic 格式 Minimax支持anthropic

UNI_AGENT_BASE_URL=https://api.minimaxi.com/anthropic
UNI_AGENT_API_KEY=你的_MINIMAX_TOKEN_PLAN_API_KEY
UNI_AGENT_PROVIDER=anthropic
UNI_AGENT_MODEL=anthropic/MiniMax-M2.7
UNI_AGENT_SMALL_FAST_MODEL=anthropic/MiniMax-M2.7

这次提示的错误是
Model not found anthropic/MiniMax-M2.7
anthropic/MiniMax-M2.7 改为 MiniMax-M2.7 也是报错
再次使用Codex分析 给出的答复为
识别不到这个模型名

在 C:\Users\用户名\AppData\Roaming\HBuilder X\extensions\hbuilderx-ai-chat\uni-agent\config 这个路径下修改(没有则创建)
直接拷贝下面的内容 然后修改为你需要的模型ID即可 模型id无需前缀

{
"provider": {
"anthropic": {
"models": {
"你的模型ID": { "id": "你的模型ID", "name": "显示名" }
}
},
"openai-compatible": {
"models": {
"你的模型ID": { "id": "你的模型ID", "name": "显示名" }
}
}
}
}

然后我顺手问了一句Codex 现在能识别什么 答案是5.4

继续阅读 »

我现在使用的是Minimax coding plan
接入的时候 使用的是 openai的格式

UNI_AGENT_BASE_URL=https://api.minimaxi.com/v1
UNI_AGENT_API_KEY=你的_MINIMAX_TOKEN_PLAN_API_KEY
UNI_AGENT_PROVIDER=openai-compatible
UNI_AGENT_MODEL=openai-compatible/MiniMax-M2.7
UNI_AGENT_SMALL_FAST_MODEL=openai-compatible/MiniMax-M2.7

但是提示
❌ 错误: invalid params, invalid chat setting (2013)
使用Codex分析uniapp文档和Minimax文档 再提供Hbuilder X的路径后 Codex给出答复是

然后我切换为 anthropic 格式 Minimax支持anthropic

UNI_AGENT_BASE_URL=https://api.minimaxi.com/anthropic
UNI_AGENT_API_KEY=你的_MINIMAX_TOKEN_PLAN_API_KEY
UNI_AGENT_PROVIDER=anthropic
UNI_AGENT_MODEL=anthropic/MiniMax-M2.7
UNI_AGENT_SMALL_FAST_MODEL=anthropic/MiniMax-M2.7

这次提示的错误是
Model not found anthropic/MiniMax-M2.7
anthropic/MiniMax-M2.7 改为 MiniMax-M2.7 也是报错
再次使用Codex分析 给出的答复为
识别不到这个模型名

在 C:\Users\用户名\AppData\Roaming\HBuilder X\extensions\hbuilderx-ai-chat\uni-agent\config 这个路径下修改(没有则创建)
直接拷贝下面的内容 然后修改为你需要的模型ID即可 模型id无需前缀

{
"provider": {
"anthropic": {
"models": {
"你的模型ID": { "id": "你的模型ID", "name": "显示名" }
}
},
"openai-compatible": {
"models": {
"你的模型ID": { "id": "你的模型ID", "name": "显示名" }
}
}
}
}

然后我顺手问了一句Codex 现在能识别什么 答案是5.4

收起阅读 »

Wot UI 2.0 发布,我们带来了这些改变。

ui组件

大家好,我是不如摸鱼去,好久不见。

进入 2026 以来,大家可以感受到 wot-ui 的迭代速度明显放缓了,我们最近也接到了无数催更的消息。很多人以为我们是在偷懒或者放弃更新了,其实不是,我们是在偷偷写代码然后准备惊艳所有人!(其实是苦苦码了好几个月,来点点赞吧)

接下来看看我们带来了哪些东西吧!

V2

如今已经是 AI 编程时代了,Wot UI 的 slogan 也调整成了「轻量、美观、AI 友好」。我们的目标很直接,就是为大家带来更高效、更易用,也更适合和 AI 协作的 uni-app 开发实践。

主要变化

对比 v1,v2 这一版我们带来了不少更新:

  1. 全新的设计系统。
    在 v2 版本,我们基于基础变量、语义变量和组件变量三层 design token 搭建全新的设计系统,使修改组件样式和自定义主题变得随心所欲,同时升级了 UI 视觉体验。
  2. 简化 form 及相关组件
    我们简化了 form 相关组件的用法,提供基于 zod 的校验引擎以及支持自定义校验引擎,使用 form-item 替换 cell 作为表单项,优化各表单组件与非表单组件结合 form-item 使用的写法,不再区分「表单组件」和「非表单组件」。
  3. 优化文档体验
    重新整理文档结构,统一组件文档结构,将 @wot-ui/vitepress-theme 提取后发布为 vitepress 主题,统一多个 wot-ui 多个库的文档 UI,同时在每个组件文档中增加 css 变量的展示。
  4. 优化 AI 支持
    • 提供 cli 工具 @wot-ui/cli,其内部提供 cli 与 mcp,以优化 wot-ui 组件库的 AI 编程体验。
    • 提供多个 skills 与 LLMs.txt。
  5. 提供 Unocss 预设
    提供了 Unocss 预设 @wot-ui/unocss-preset,内置主题变量、语义色、间距、圆角、字重、透明度、描边和排版相关原子类规则,把 wot-ui 的设计 token 和主题变量映射成可直接使用的原子类。

CLI

很多同学在用 AI 写 wot-ui 页面时,问题其实不在于模型不会写,而在于它总爱“凭感觉”写。比如 props 名字记错了、事件猜错了、slot 用法写得像对的,结果一跑就炸。

所以在 v2 里,我们专门提供了 @wot-ui/cli。它不是一个单纯的脚手架工具,而是把 wot-ui v2 的组件知识整理成一套可查询、可校验、可给 AI 调用的能力。

你可以把它理解成一个本地离线知识库,既能给开发者自己查,也能给 AI 客户端通过 MCP 调用。常见能力包括:

  • 查询组件的 props、events、slots 和 CSS 变量
  • 查看组件 demo,减少 AI 瞎猜用法
  • 扫描本地项目,检查不合理或错误的组件写法
  • 通过 MCP 接入 AI 工具链,让 Agent 先查再写

比如以前你让 AI 写一个表单页,它可能先吐出一份“看起来很像 wot-ui”的代码。现在更合理的流程是,先查组件约束,再生成代码,最后再跑一遍检查。这样出来的结果会稳很多。

简单来说,@wot-ui/cli 想解决的不是“怎么让 AI 更会猜”,而是“怎么让 AI 少猜一点”。这也是我们这次把「AI 友好」放进 v2 里的一个重点。

Starter

如果说组件库解决的是“页面怎么写”,那 Starter 解决的就是“项目怎么开”。所以这次我们也没有把它当成一个单纯的 demo 仓库来维护,而是持续把它往一套更适合真实开发、也更适合 AI 协作的 uni-app 起手方案去打磨。

1.5 之后,Starter 先补上了 skills,开始把项目里常用的开发约定、页面结构和组件使用方式整理出来,让 AI 在这个模板里写代码时不再完全靠猜。到了 2.0,Starter 进一步完成了对 wot-ui v2 的适配,示例、主题能力、反馈组件文档以及整体开发链路也一起升级。

你可以把现在的 Starter 理解成:它不只是“集成了 wot-ui 的模板”,而是一个默认就站在 v2 体系上的起点。新项目拉下来之后,从主题定制、页面组织到后续和 AI 配合开发,整个体验都会比 1.x 时代更顺手一些。

CSS 插件

再往下一层看,组件和模板之外,样式这一层我们也往前推了一步,提供了 @wot-ui/unocss-preset。它本质上是一个基于 UnoCSS 的预设,用来把 wot-ui v2 的设计 token 直接映射成可用的原子类。

这件事的价值在于,你在写页面时不需要一边翻设计变量、一边手写一堆样式映射了。像颜色、间距、圆角、字重、排版这些能力,现在都可以直接通过统一的 wot- 前缀类名来组织,主题切换时也能更自然地跟着整套 token 体系走。对于喜欢原子化 CSS 的同学来说,这一层会让 wot-ui v2 真正从“组件好用”变成“整套样式开发都更顺手”。

VSCode 插件

如果说前面这些更多是在补工具链和工程体验,那再落回到日常写代码,我们也补上了 VS Code 插件这一层,也就是 VS Code 插件 wot-ui-intellisense

这个插件主要解决的是写页面时那些很碎、但又很烦的事情。比如组件名记不全、属性名老要回头翻文档、事件到底叫什么总要试一下。现在在 .vue.html 文件里,输入 <wd-、空格、:@ 这些常见场景时,都可以直接拿到补全提示。

除了补全之外,它还支持组件、属性、事件的悬停文档展示,以及一部分属性值校验和错误诊断。也就是说,很多以前要切出去查文档、或者运行后才发现的问题,现在在编辑器里就能先拦一层。

如果说 CLI 更像是给 AI 和工程化链路准备的,那 VS Code 插件就是给开发者日常写代码准备的。一个负责让模型少猜,一个负责让人少翻文档,配合起来,整个 wot-ui v2 的开发体验就会完整很多。

最后

回过头来看,这次 wot-ui v2 对我们来说并不只是一次常规升级。

它一边在补齐设计系统、表单体系、文档体验这些基础能力,一边也在认真回应这两年越来越明显的变化:大家写代码的方式,确实已经和以前不太一样了。

所以你会看到,这一版里不只有组件本身,也有 Starter、CLI、UnoCSS 预设、VS Code 插件这些围绕开发体验的配套。我们想做的,不只是一个“能用”的组件库,而是一套更顺手、更现代,也更适合和 AI 一起协作的 uni-app 开发方案。

v2 还有很多东西会在后面陆续展开,这篇文章先带大家看一个整体。如果你也在关注 wot-ui v2,或者也在想组件库怎么更好地拥抱 AI 编程,欢迎继续关注我们后面的更新。

参考资料

  • Wot UI 2.x 文档:https://wot-ui.cn/
  • Wot UI 仓库:https://github.com/wot-ui/wot-ui
  • @wot-ui/vitepress-theme:https://github.com/wot-ui/wot-ui/tree/main/packages/vitepress-theme
  • @wot-ui/cli / Open Wot:https://github.com/wot-ui/open-wot
  • Wot Starter:https://github.com/wot-ui/wot-starter
  • @wot-ui/unocss-preset:https://github.com/wot-ui/unocss-preset
  • wot-ui-intellisense 仓库:https://github.com/wot-ui/wot-ui-intellisense
  • wot-ui-intellisense 下载地址:https://marketplace.visualstudio.com/items?itemName=wot-ui.wot-ui-intellisense
继续阅读 »

大家好,我是不如摸鱼去,好久不见。

进入 2026 以来,大家可以感受到 wot-ui 的迭代速度明显放缓了,我们最近也接到了无数催更的消息。很多人以为我们是在偷懒或者放弃更新了,其实不是,我们是在偷偷写代码然后准备惊艳所有人!(其实是苦苦码了好几个月,来点点赞吧)

接下来看看我们带来了哪些东西吧!

V2

如今已经是 AI 编程时代了,Wot UI 的 slogan 也调整成了「轻量、美观、AI 友好」。我们的目标很直接,就是为大家带来更高效、更易用,也更适合和 AI 协作的 uni-app 开发实践。

主要变化

对比 v1,v2 这一版我们带来了不少更新:

  1. 全新的设计系统。
    在 v2 版本,我们基于基础变量、语义变量和组件变量三层 design token 搭建全新的设计系统,使修改组件样式和自定义主题变得随心所欲,同时升级了 UI 视觉体验。
  2. 简化 form 及相关组件
    我们简化了 form 相关组件的用法,提供基于 zod 的校验引擎以及支持自定义校验引擎,使用 form-item 替换 cell 作为表单项,优化各表单组件与非表单组件结合 form-item 使用的写法,不再区分「表单组件」和「非表单组件」。
  3. 优化文档体验
    重新整理文档结构,统一组件文档结构,将 @wot-ui/vitepress-theme 提取后发布为 vitepress 主题,统一多个 wot-ui 多个库的文档 UI,同时在每个组件文档中增加 css 变量的展示。
  4. 优化 AI 支持
    • 提供 cli 工具 @wot-ui/cli,其内部提供 cli 与 mcp,以优化 wot-ui 组件库的 AI 编程体验。
    • 提供多个 skills 与 LLMs.txt。
  5. 提供 Unocss 预设
    提供了 Unocss 预设 @wot-ui/unocss-preset,内置主题变量、语义色、间距、圆角、字重、透明度、描边和排版相关原子类规则,把 wot-ui 的设计 token 和主题变量映射成可直接使用的原子类。

CLI

很多同学在用 AI 写 wot-ui 页面时,问题其实不在于模型不会写,而在于它总爱“凭感觉”写。比如 props 名字记错了、事件猜错了、slot 用法写得像对的,结果一跑就炸。

所以在 v2 里,我们专门提供了 @wot-ui/cli。它不是一个单纯的脚手架工具,而是把 wot-ui v2 的组件知识整理成一套可查询、可校验、可给 AI 调用的能力。

你可以把它理解成一个本地离线知识库,既能给开发者自己查,也能给 AI 客户端通过 MCP 调用。常见能力包括:

  • 查询组件的 props、events、slots 和 CSS 变量
  • 查看组件 demo,减少 AI 瞎猜用法
  • 扫描本地项目,检查不合理或错误的组件写法
  • 通过 MCP 接入 AI 工具链,让 Agent 先查再写

比如以前你让 AI 写一个表单页,它可能先吐出一份“看起来很像 wot-ui”的代码。现在更合理的流程是,先查组件约束,再生成代码,最后再跑一遍检查。这样出来的结果会稳很多。

简单来说,@wot-ui/cli 想解决的不是“怎么让 AI 更会猜”,而是“怎么让 AI 少猜一点”。这也是我们这次把「AI 友好」放进 v2 里的一个重点。

Starter

如果说组件库解决的是“页面怎么写”,那 Starter 解决的就是“项目怎么开”。所以这次我们也没有把它当成一个单纯的 demo 仓库来维护,而是持续把它往一套更适合真实开发、也更适合 AI 协作的 uni-app 起手方案去打磨。

1.5 之后,Starter 先补上了 skills,开始把项目里常用的开发约定、页面结构和组件使用方式整理出来,让 AI 在这个模板里写代码时不再完全靠猜。到了 2.0,Starter 进一步完成了对 wot-ui v2 的适配,示例、主题能力、反馈组件文档以及整体开发链路也一起升级。

你可以把现在的 Starter 理解成:它不只是“集成了 wot-ui 的模板”,而是一个默认就站在 v2 体系上的起点。新项目拉下来之后,从主题定制、页面组织到后续和 AI 配合开发,整个体验都会比 1.x 时代更顺手一些。

CSS 插件

再往下一层看,组件和模板之外,样式这一层我们也往前推了一步,提供了 @wot-ui/unocss-preset。它本质上是一个基于 UnoCSS 的预设,用来把 wot-ui v2 的设计 token 直接映射成可用的原子类。

这件事的价值在于,你在写页面时不需要一边翻设计变量、一边手写一堆样式映射了。像颜色、间距、圆角、字重、排版这些能力,现在都可以直接通过统一的 wot- 前缀类名来组织,主题切换时也能更自然地跟着整套 token 体系走。对于喜欢原子化 CSS 的同学来说,这一层会让 wot-ui v2 真正从“组件好用”变成“整套样式开发都更顺手”。

VSCode 插件

如果说前面这些更多是在补工具链和工程体验,那再落回到日常写代码,我们也补上了 VS Code 插件这一层,也就是 VS Code 插件 wot-ui-intellisense

这个插件主要解决的是写页面时那些很碎、但又很烦的事情。比如组件名记不全、属性名老要回头翻文档、事件到底叫什么总要试一下。现在在 .vue.html 文件里,输入 <wd-、空格、:@ 这些常见场景时,都可以直接拿到补全提示。

除了补全之外,它还支持组件、属性、事件的悬停文档展示,以及一部分属性值校验和错误诊断。也就是说,很多以前要切出去查文档、或者运行后才发现的问题,现在在编辑器里就能先拦一层。

如果说 CLI 更像是给 AI 和工程化链路准备的,那 VS Code 插件就是给开发者日常写代码准备的。一个负责让模型少猜,一个负责让人少翻文档,配合起来,整个 wot-ui v2 的开发体验就会完整很多。

最后

回过头来看,这次 wot-ui v2 对我们来说并不只是一次常规升级。

它一边在补齐设计系统、表单体系、文档体验这些基础能力,一边也在认真回应这两年越来越明显的变化:大家写代码的方式,确实已经和以前不太一样了。

所以你会看到,这一版里不只有组件本身,也有 Starter、CLI、UnoCSS 预设、VS Code 插件这些围绕开发体验的配套。我们想做的,不只是一个“能用”的组件库,而是一套更顺手、更现代,也更适合和 AI 一起协作的 uni-app 开发方案。

v2 还有很多东西会在后面陆续展开,这篇文章先带大家看一个整体。如果你也在关注 wot-ui v2,或者也在想组件库怎么更好地拥抱 AI 编程,欢迎继续关注我们后面的更新。

参考资料

  • Wot UI 2.x 文档:https://wot-ui.cn/
  • Wot UI 仓库:https://github.com/wot-ui/wot-ui
  • @wot-ui/vitepress-theme:https://github.com/wot-ui/wot-ui/tree/main/packages/vitepress-theme
  • @wot-ui/cli / Open Wot:https://github.com/wot-ui/open-wot
  • Wot Starter:https://github.com/wot-ui/wot-starter
  • @wot-ui/unocss-preset:https://github.com/wot-ui/unocss-preset
  • wot-ui-intellisense 仓库:https://github.com/wot-ui/wot-ui-intellisense
  • wot-ui-intellisense 下载地址:https://marketplace.visualstudio.com/items?itemName=wot-ui.wot-ui-intellisense
收起阅读 »

开源UniApp可视化跨端低代码开发平台

uniapp


“让应用开发像搭积木一样简单”。平台融合UniApp实现可视化搭建跨端应用的能力,采用“所见即所得”的设计理念。无需编写复杂代码,通过拖拽组件即可生成可同时发布到微信小程序、H5页面和APP。
核心功能包括:可视化页面构建器、可视化工作流、组件库、UniApp页面渲染器组件支持等。平台后端采用分布式的Node.js微服务架构,保障服务的高可用性与可扩展性。

技术栈:平台前端为Vue2、UniApp、后端基于node进行开发

  • 零门槛开发
    采用可视化拖拽界面设计,无需编程基础即可快速构建uniApp应用。操作逻辑直观,降低传统开发的学习曲线。

  • 全端适配能力
    基于UniApp的编译机制,一套设计可同时输出小程序、H5和APP应用。不同终端间的数据和行为保持高度一致,大幅降低多端适配成本。

  • 高效资源管理
    集成腾讯云COS存储,提供图片、视频等多媒体资源的云端托管以及CDN加速能力。

  • 可视化逻辑编排
    独创节点式工作流系统,通过图形化连接实现复杂业务逻辑,支持实时调试与执行路径追踪,提升代码可维护性。

  • 多端数据统计
    记录用户访问路径、设备激活量、应用启动频次及单次使用时长等核心指标。数据采集覆盖小程序、H5及APP全端适配。

  • 实时预览调试
    创建项目即提供可访问的URL预览地址,并生成Web H5与小程序二维码,方便真机预览测试。

  • 企业级支持
    针对中小型企业级部署需求,猫拽提供UniApp版本页面渲染器组件(可先通过平台项目二维码预览效果)。企业自身的UniApp项目通过引入该组件源码,即可在自有项目中实现页面的实时修改与预览能力。(如有私有化部署或者平台源码交付需求可联系)

无论你是想要尝试低代码开发的开发者,还是正在寻找高效解决方案的产品负责人,都欢迎访问猫拽官网体验产品。技术的进步,始终是为了让创造变得更加简单。

线上平台

猫拽低代码平台

v2开源版本:https://github.com/M-topu/catpull-v2

继续阅读 »


“让应用开发像搭积木一样简单”。平台融合UniApp实现可视化搭建跨端应用的能力,采用“所见即所得”的设计理念。无需编写复杂代码,通过拖拽组件即可生成可同时发布到微信小程序、H5页面和APP。
核心功能包括:可视化页面构建器、可视化工作流、组件库、UniApp页面渲染器组件支持等。平台后端采用分布式的Node.js微服务架构,保障服务的高可用性与可扩展性。

技术栈:平台前端为Vue2、UniApp、后端基于node进行开发

  • 零门槛开发
    采用可视化拖拽界面设计,无需编程基础即可快速构建uniApp应用。操作逻辑直观,降低传统开发的学习曲线。

  • 全端适配能力
    基于UniApp的编译机制,一套设计可同时输出小程序、H5和APP应用。不同终端间的数据和行为保持高度一致,大幅降低多端适配成本。

  • 高效资源管理
    集成腾讯云COS存储,提供图片、视频等多媒体资源的云端托管以及CDN加速能力。

  • 可视化逻辑编排
    独创节点式工作流系统,通过图形化连接实现复杂业务逻辑,支持实时调试与执行路径追踪,提升代码可维护性。

  • 多端数据统计
    记录用户访问路径、设备激活量、应用启动频次及单次使用时长等核心指标。数据采集覆盖小程序、H5及APP全端适配。

  • 实时预览调试
    创建项目即提供可访问的URL预览地址,并生成Web H5与小程序二维码,方便真机预览测试。

  • 企业级支持
    针对中小型企业级部署需求,猫拽提供UniApp版本页面渲染器组件(可先通过平台项目二维码预览效果)。企业自身的UniApp项目通过引入该组件源码,即可在自有项目中实现页面的实时修改与预览能力。(如有私有化部署或者平台源码交付需求可联系)

无论你是想要尝试低代码开发的开发者,还是正在寻找高效解决方案的产品负责人,都欢迎访问猫拽官网体验产品。技术的进步,始终是为了让创造变得更加简单。

线上平台

猫拽低代码平台

v2开源版本:https://github.com/M-topu/catpull-v2

收起阅读 »

npx update-browserslist-db@latest

MAC电脑(apple芯片),编译的时候控制台提示:
npx update-browserslist-db@latest
[HBuilder] Why you should do it regularly: https://github.com/browserslist/update-db#readme​

【解决方案】
cd /Applications/HBuilderX.app/Contents/HBuilderX/plugins/uniapp-cli
rm -rf yarn.lock
npm install caniuse-lite@latest browserslist@latest

1、试了,重新安装最新版的HBuilderX也没用
2、注意你的node版本要>=18(我用的是22)

继续阅读 »

MAC电脑(apple芯片),编译的时候控制台提示:
npx update-browserslist-db@latest
[HBuilder] Why you should do it regularly: https://github.com/browserslist/update-db#readme​

【解决方案】
cd /Applications/HBuilderX.app/Contents/HBuilderX/plugins/uniapp-cli
rm -rf yarn.lock
npm install caniuse-lite@latest browserslist@latest

1、试了,重新安装最新版的HBuilderX也没用
2、注意你的node版本要>=18(我用的是22)

收起阅读 »

AI + 工作流驱动的跨平台 UniApp 低代码平台

一款AI + 工作流驱动的跨平台低代码,拖拽式搭建,一套设计多端输出,让开发效率直接起飞!

猫拽低代码是一款基于 Vue3 + TypeScript + Vite 构建的跨平台低代码平台,集成了可视化设计器工作流引擎AI 智能辅助三大核心能力,让你通过拖拽就能快速搭建小程序、H5 和 APP 应用。


1. 可视化设计器

猫拽的设计器是一个功能完备的可视化拖拽编辑器,核心亮点:

  • 拖拽式画布:从物料面板拖入组件,实时预览效果,选中、多选、对齐一气呵成
  • iframe 沙箱渲染:画布在独立沙箱中运行,组件渲染环境与设计器互不干扰,保证预览效果真实可靠
  • 插槽选择器:拖入容器组件时自动弹出插槽选择,精准控制子组件渲染位置

2. 工作流引擎

通过图形化节点连线,实现复杂业务逻辑:

  • 10+ 内置节点:条件分支、循环体、跳出循环、云函数、HTTP 请求、物料事件……覆盖绝大多数业务场景
  • 动态端口:条件分支和物料事件节点的端口数量不固定,根据配置自动生成,灵活应对多分支逻辑
  • 异常处理:云函数和 HTTP 请求节点支持三种异常策略——中断执行、返回默认值、走异常分支,保障业务健壮性
  • MCP 辅助:工作流画布同样支持 AI 辅助编辑,AI 帮你添加节点、连线、配置属性

3. 插件化架构

猫拽采用全插件化架构,所有设计器功能均以插件形式注册,当前内置 30+ 插件

类别 插件 能力
配置编辑 props、styles、tree、variable、datasource、script 属性编辑、样式可视化、大纲树导航、变量管理、数据源配置、云函数编辑
物料资源 materials、resource 物料组件面板、图片/视频/音频/图标资源管理
结构编辑 ast-schema、ast-workflow 页面 DSL 直接编辑、工作流 Schema 直接编辑
AI 能力 robot AI 智能助手,自然语言生成页面

4. 丰富物料库

内置组件库物料,覆盖 PC 端和移动端全场景:

  • UniApp —— 原生小程序组件
  • UniUI —— UniApp 扩展 UI 组件库

每个组件都有完整的元信息定义(属性、事件、插槽、默认值),拖入画布即可使用,属性面板自动生成配置表单。同时支持自定义物料扩展,满足个性化需求。

5. AI 智能辅助

猫拽集成了 AiMcp 智能辅助能力,支持通过自然语言描述需求生成页面。设计器画布和工作流画布均提供 MCP(Model Context Protocol)操作接口,AI 可以帮你:

  • 添加/删除/修改物料节点
  • 修改节点属性和样式
  • Vue SFC 源码转 DSL
  • 添加/删除工作流节点和连线
  • 获取页面 Schema 和组件列表

6. 全端适配

一套设计同步输出:

  • 小程序(微信小程序等 UniApp 跨端环境)
  • H5(移动端网页)
  • APP(通过 HBuilderX 云打包)

跨端渲染器(catpull-uni)包含自定义表达式解析器(兼容小程序沙箱限制)、节点处理器、上下文管理器,确保设计器产出的 DSL 在各端表现一致。


技术架构

猫拽采用 前端 pnpm Monorepo + 后端 Node.js 服务 架构,技术栈成熟可靠:

模块 技术栈 说明
设计器(catpull-designer) Vue3 + Vite 可视化拖拽编辑器主入口
跨端渲染器(catpull-uni) UniApp + Vue3 DSL 跨端运行时渲染
主服务器 Express + Sequelize + TypeScript API 接口、用户认证、项目管理
云函数服务 Express + vm2 沙箱环境执行用户自定义代码

画布沙箱运行时:设计器画布在 iframe 中独立运行,加载 Vue、UniApp 等预构建运行时依赖,通过 postMessage 与主窗口通信,确保渲染环境隔离且真实。


开放能力

提供完整的公有云开放 API,支持第三方平台集成:

  • AppKey 认证:通过 app_id + app_key 密钥认证,安全可靠
  • 项目管理:创建、删除、还原等
  • 设计器接入:获取带 JWT 签名的设计器访问地址,直接嵌入你的平台
  • 存储空间:查询 COS 存储使用情况

只需几行代码,就能把猫拽的可视化搭建能力嵌入到你的产品中!


为什么选择猫拽?

对比维度 传统开发 猫拽低代码
开发方式 手写代码 拖拽搭建 + 可视化配置
多端适配 每个端单独开发 一套设计多端输出
业务逻辑 编写复杂代码 工作流图形化编排
样式调整 改代码刷新看效果 可视化调整实时预览
AI 辅助 自然语言生成页面
上手门槛 需要专业前端技能 拖拽即可,低门槛高上限

立即体验

官网:猫拽低代码平台

继续阅读 »

一款AI + 工作流驱动的跨平台低代码,拖拽式搭建,一套设计多端输出,让开发效率直接起飞!

猫拽低代码是一款基于 Vue3 + TypeScript + Vite 构建的跨平台低代码平台,集成了可视化设计器工作流引擎AI 智能辅助三大核心能力,让你通过拖拽就能快速搭建小程序、H5 和 APP 应用。


1. 可视化设计器

猫拽的设计器是一个功能完备的可视化拖拽编辑器,核心亮点:

  • 拖拽式画布:从物料面板拖入组件,实时预览效果,选中、多选、对齐一气呵成
  • iframe 沙箱渲染:画布在独立沙箱中运行,组件渲染环境与设计器互不干扰,保证预览效果真实可靠
  • 插槽选择器:拖入容器组件时自动弹出插槽选择,精准控制子组件渲染位置

2. 工作流引擎

通过图形化节点连线,实现复杂业务逻辑:

  • 10+ 内置节点:条件分支、循环体、跳出循环、云函数、HTTP 请求、物料事件……覆盖绝大多数业务场景
  • 动态端口:条件分支和物料事件节点的端口数量不固定,根据配置自动生成,灵活应对多分支逻辑
  • 异常处理:云函数和 HTTP 请求节点支持三种异常策略——中断执行、返回默认值、走异常分支,保障业务健壮性
  • MCP 辅助:工作流画布同样支持 AI 辅助编辑,AI 帮你添加节点、连线、配置属性

3. 插件化架构

猫拽采用全插件化架构,所有设计器功能均以插件形式注册,当前内置 30+ 插件

类别 插件 能力
配置编辑 props、styles、tree、variable、datasource、script 属性编辑、样式可视化、大纲树导航、变量管理、数据源配置、云函数编辑
物料资源 materials、resource 物料组件面板、图片/视频/音频/图标资源管理
结构编辑 ast-schema、ast-workflow 页面 DSL 直接编辑、工作流 Schema 直接编辑
AI 能力 robot AI 智能助手,自然语言生成页面

4. 丰富物料库

内置组件库物料,覆盖 PC 端和移动端全场景:

  • UniApp —— 原生小程序组件
  • UniUI —— UniApp 扩展 UI 组件库

每个组件都有完整的元信息定义(属性、事件、插槽、默认值),拖入画布即可使用,属性面板自动生成配置表单。同时支持自定义物料扩展,满足个性化需求。

5. AI 智能辅助

猫拽集成了 AiMcp 智能辅助能力,支持通过自然语言描述需求生成页面。设计器画布和工作流画布均提供 MCP(Model Context Protocol)操作接口,AI 可以帮你:

  • 添加/删除/修改物料节点
  • 修改节点属性和样式
  • Vue SFC 源码转 DSL
  • 添加/删除工作流节点和连线
  • 获取页面 Schema 和组件列表

6. 全端适配

一套设计同步输出:

  • 小程序(微信小程序等 UniApp 跨端环境)
  • H5(移动端网页)
  • APP(通过 HBuilderX 云打包)

跨端渲染器(catpull-uni)包含自定义表达式解析器(兼容小程序沙箱限制)、节点处理器、上下文管理器,确保设计器产出的 DSL 在各端表现一致。


技术架构

猫拽采用 前端 pnpm Monorepo + 后端 Node.js 服务 架构,技术栈成熟可靠:

模块 技术栈 说明
设计器(catpull-designer) Vue3 + Vite 可视化拖拽编辑器主入口
跨端渲染器(catpull-uni) UniApp + Vue3 DSL 跨端运行时渲染
主服务器 Express + Sequelize + TypeScript API 接口、用户认证、项目管理
云函数服务 Express + vm2 沙箱环境执行用户自定义代码

画布沙箱运行时:设计器画布在 iframe 中独立运行,加载 Vue、UniApp 等预构建运行时依赖,通过 postMessage 与主窗口通信,确保渲染环境隔离且真实。


开放能力

提供完整的公有云开放 API,支持第三方平台集成:

  • AppKey 认证:通过 app_id + app_key 密钥认证,安全可靠
  • 项目管理:创建、删除、还原等
  • 设计器接入:获取带 JWT 签名的设计器访问地址,直接嵌入你的平台
  • 存储空间:查询 COS 存储使用情况

只需几行代码,就能把猫拽的可视化搭建能力嵌入到你的产品中!


为什么选择猫拽?

对比维度 传统开发 猫拽低代码
开发方式 手写代码 拖拽搭建 + 可视化配置
多端适配 每个端单独开发 一套设计多端输出
业务逻辑 编写复杂代码 工作流图形化编排
样式调整 改代码刷新看效果 可视化调整实时预览
AI 辅助 自然语言生成页面
上手门槛 需要专业前端技能 拖拽即可,低门槛高上限

立即体验

官网:猫拽低代码平台

收起阅读 »

uniapp人脸识别UTS API插件制作

活体检测 uts插件

人脸识别UTS API插件简介

1:1人脸识别,活体检测UTS API插件,支持iOS,Android,支持uniappX和uniapp(vue2&vue3)。
所有功能都是设备端侧AI能力可开飞行模式体验无需网络,无需后台API服务可完全离线运行,高性能无依赖

插件部分的代码: https://github.com/FaceAISDK/FaceAISDK_uniapp_UTS

一般制作插件需求具备uniapp,Android iOS 3种交叉知识储备,否则调试会非常的痛苦,验证效果自定义基座也很难受
当然你可以借助AI辅助编程工具能省事不少

快速体验完整人脸识别功能可以下载Android演示App:
<div align=center>
<img src="https://www.pgyer.com/app/qrcode/faceVerify" width = 15% alt="扫一扫下载Demo"/>
</div>

使用方法

如果你是第一次运行UTS插件工程/引入UTS API插件,你应先安装官方说明配置好基础环境 基础环境

开发调试阶段请开启调试模式,Android-manifest.json distribute配置 "debuggable" : true,

1. 下载最新Demo工程先跑通;熟悉半天后参考文档集成到主项目

2. 运行 -》 运行到手机或模拟器 -》制作自定义调试基座 -》打包 (期间不要修改原生代码)

.
制作自定义调试基座

3. 运行 -》运行到iOS/Android基座 -》使用自定义基座运行 -》本地基座 -》运行

.
运行到手机

4. 把插件引入到你的主项目(即 import {faceVerify,**等方法} from "@/uni_modules/FaceAISDK-Core";)

一定一定要先制作自定义调试基准,然后运行的时候使用自定义基准-本地基座,请看图片步骤引导说明

常见错误与解决方法

1.iOS 基座安装到手机后很久都是白屏/黑屏

   控制台输出  
   项目 [FaceAI_API_Plugin] 已启动。请点击手机/模拟器的运行基座App(uni-app x)查看效果。  
   如应用未更新,请在手机上杀掉基座进程重启  

老旧手机根据提示确保杀死基座进程,稍后重启App就可以了

2.炫彩活体提示光线太亮导致失败

这个基本上只能规避强光环境了,或引导用户用手遮住强烈光线,让手机彩色光能照到脸部
室外强光环境建议使用动作活体+静默活体检测

3.改动原生swift/kotlin 代码导致基座不能正常运行

只能重新制作自定义调试基座,UTS API插件使用方如果不需要修改插件底层实现尽量不用改原生代码

人脸识别,活体检测状态码

人脸识别,活体检测状态码含义

    let DEFAULT = 0                  // 0   初始化状态,流程没有开始  
    let VERIFY_SUCCESS = 1           // 1   人脸识别对比成功大于设置的threshold  
    let VERIFY_FAILED = 2            // 2   人脸识别对比识别小于设置的threshold  
    let MOTION_LIVENESS_SUCCESS = 3  // 3   动作活体检测成功(基本不用,还有后续动作)  
    let MOTION_LIVENESS_TIMEOUT = 4  // 4   动作活体超时  
    let NO_FACE_MULTI = 5            // 5   多次没有检测到人脸  
    let NO_FACE_FEATURE = 6          // 6   没有对应的人脸特征值  
    let COLOR_LIVENESS_SUCCESS = 7   // 7   炫彩活体成功  
    let COLOR_LIVENESS_FAILED = 8    // 8   炫彩活体失败  
    let COLOR_LIVENESS_LIGHT_TOO_HIGH = 9 // 9   炫彩活体失败,光线亮度过高  
    let ALL_LIVENESS_SUCCESS = 10    // 10  所有的活体检测完成(包括动作和炫彩)  
   let SILENT_LIVENESS_FAILED = 11  // 11  静默活体检测失败

人脸识别 目前插件部分的代码是开放修改的,底层SDK不开放。 欢迎提issues反馈问题

🌍: https://faceaisdk.github.io/index
📮:FaceAISDK.Service@gmail.com

继续阅读 »

人脸识别UTS API插件简介

1:1人脸识别,活体检测UTS API插件,支持iOS,Android,支持uniappX和uniapp(vue2&vue3)。
所有功能都是设备端侧AI能力可开飞行模式体验无需网络,无需后台API服务可完全离线运行,高性能无依赖

插件部分的代码: https://github.com/FaceAISDK/FaceAISDK_uniapp_UTS

一般制作插件需求具备uniapp,Android iOS 3种交叉知识储备,否则调试会非常的痛苦,验证效果自定义基座也很难受
当然你可以借助AI辅助编程工具能省事不少

快速体验完整人脸识别功能可以下载Android演示App:
<div align=center>
<img src="https://www.pgyer.com/app/qrcode/faceVerify" width = 15% alt="扫一扫下载Demo"/>
</div>

使用方法

如果你是第一次运行UTS插件工程/引入UTS API插件,你应先安装官方说明配置好基础环境 基础环境

开发调试阶段请开启调试模式,Android-manifest.json distribute配置 "debuggable" : true,

1. 下载最新Demo工程先跑通;熟悉半天后参考文档集成到主项目

2. 运行 -》 运行到手机或模拟器 -》制作自定义调试基座 -》打包 (期间不要修改原生代码)

.
制作自定义调试基座

3. 运行 -》运行到iOS/Android基座 -》使用自定义基座运行 -》本地基座 -》运行

.
运行到手机

4. 把插件引入到你的主项目(即 import {faceVerify,**等方法} from "@/uni_modules/FaceAISDK-Core";)

一定一定要先制作自定义调试基准,然后运行的时候使用自定义基准-本地基座,请看图片步骤引导说明

常见错误与解决方法

1.iOS 基座安装到手机后很久都是白屏/黑屏

   控制台输出  
   项目 [FaceAI_API_Plugin] 已启动。请点击手机/模拟器的运行基座App(uni-app x)查看效果。  
   如应用未更新,请在手机上杀掉基座进程重启  

老旧手机根据提示确保杀死基座进程,稍后重启App就可以了

2.炫彩活体提示光线太亮导致失败

这个基本上只能规避强光环境了,或引导用户用手遮住强烈光线,让手机彩色光能照到脸部
室外强光环境建议使用动作活体+静默活体检测

3.改动原生swift/kotlin 代码导致基座不能正常运行

只能重新制作自定义调试基座,UTS API插件使用方如果不需要修改插件底层实现尽量不用改原生代码

人脸识别,活体检测状态码

人脸识别,活体检测状态码含义

    let DEFAULT = 0                  // 0   初始化状态,流程没有开始  
    let VERIFY_SUCCESS = 1           // 1   人脸识别对比成功大于设置的threshold  
    let VERIFY_FAILED = 2            // 2   人脸识别对比识别小于设置的threshold  
    let MOTION_LIVENESS_SUCCESS = 3  // 3   动作活体检测成功(基本不用,还有后续动作)  
    let MOTION_LIVENESS_TIMEOUT = 4  // 4   动作活体超时  
    let NO_FACE_MULTI = 5            // 5   多次没有检测到人脸  
    let NO_FACE_FEATURE = 6          // 6   没有对应的人脸特征值  
    let COLOR_LIVENESS_SUCCESS = 7   // 7   炫彩活体成功  
    let COLOR_LIVENESS_FAILED = 8    // 8   炫彩活体失败  
    let COLOR_LIVENESS_LIGHT_TOO_HIGH = 9 // 9   炫彩活体失败,光线亮度过高  
    let ALL_LIVENESS_SUCCESS = 10    // 10  所有的活体检测完成(包括动作和炫彩)  
   let SILENT_LIVENESS_FAILED = 11  // 11  静默活体检测失败

人脸识别 目前插件部分的代码是开放修改的,底层SDK不开放。 欢迎提issues反馈问题

🌍: https://faceaisdk.github.io/index
📮:FaceAISDK.Service@gmail.com

收起阅读 »

解决 使用uni-agent 购买 订阅套餐 提示无法访问

考虑系统防火墙的情况。把防火墙关闭试一下。

内部会启动一个服务,占用端口127.0.0.1:4096

防火墙阻止了这个服务访问。

考虑系统防火墙的情况。把防火墙关闭试一下。

内部会启动一个服务,占用端口127.0.0.1:4096

防火墙阻止了这个服务访问。

【2026全民国家安全教育日】筑牢网络安全防线,DCloud 开发者在行动!

网络安全

各位 DCloud 社区的开发者小伙伴们,大家好!👋

今天(4月15日)是第十一个全民国家安全教育日。提到“国家安全”,很多人的第一反应可能是军事防御、防谍保密等宏观层面的内容。但实际上,在数字化、智能化的今天,网络安全和数据安全已经成为国家安全体系中至关重要的一环!

作为在这个时代浪潮中冲浪的开发者,我们敲下的每一行代码、设计的每一个业务逻辑,其实都与“安全”息息相关。

🛡️ 开发者与国家安全的距离有多近?

在日常的 uni-app 开发、前端构建或后端接口对接中,我们不仅是产品的创造者,更是用户数据和网络安全的“守门员”:

  1. 数据安全与隐私保护:我们的 App/小程序是否合规收集用户数据?是否在本地存储了未加密的敏感信息?防范数据泄露,不仅是保护用户,更是维护国家数据安全底线。
  2. 抵御网络攻击:无论是 XSS、CSRF,还是各类接口越权访问,不规范的代码随时可能成为黑客攻击系统的突破口。
  3. 开源组件的安全:引入第三方插件或 SDK 时,是否关注过其安全性?供应链安全目前也是网络安全防范的重中之重。

💡 我们能做些什么?

在2026年的今天,网络空间已成为大国博弈的“第五空间”。为了响应全民国家安全教育日的号召,我们在此向社区的每一位开发者发出倡议:

  • 增强安全意识:主动学习《网络安全法》、《数据安全法》、《个人信息保护法》等相关法律法规,让“合规”成为开发的第一原则。
  • 践行安全开发(DevSecOps):在需求设计、代码编写、测试发布的每一个环节,都把安全因素考虑进去。拒绝“先上线再修补”的侥幸心理。
  • 保护用户隐私:严格落实 App 隐私合规要求,遵循“最小必要”原则获取用户权限,妥善加密敏感数据。

💬 社区互动:你的项目是如何做安全防护的?

国家安全,人人有责;网络安全,代码为基。

欢迎大家在评论区分享:在日常的开发中,你遇到过哪些安全大坑?或者你在项目中使用了哪些好用的安全防护手段/插件?

让我们一起交流学习,共同构建更安全、更可靠的应用生态!👇


【活动说明】
本文为响应2026年第十一个全民国家安全教育日主题宣传活动所发。维护网络空间清朗,需要你我共同参与!

继续阅读 »

各位 DCloud 社区的开发者小伙伴们,大家好!👋

今天(4月15日)是第十一个全民国家安全教育日。提到“国家安全”,很多人的第一反应可能是军事防御、防谍保密等宏观层面的内容。但实际上,在数字化、智能化的今天,网络安全和数据安全已经成为国家安全体系中至关重要的一环!

作为在这个时代浪潮中冲浪的开发者,我们敲下的每一行代码、设计的每一个业务逻辑,其实都与“安全”息息相关。

🛡️ 开发者与国家安全的距离有多近?

在日常的 uni-app 开发、前端构建或后端接口对接中,我们不仅是产品的创造者,更是用户数据和网络安全的“守门员”:

  1. 数据安全与隐私保护:我们的 App/小程序是否合规收集用户数据?是否在本地存储了未加密的敏感信息?防范数据泄露,不仅是保护用户,更是维护国家数据安全底线。
  2. 抵御网络攻击:无论是 XSS、CSRF,还是各类接口越权访问,不规范的代码随时可能成为黑客攻击系统的突破口。
  3. 开源组件的安全:引入第三方插件或 SDK 时,是否关注过其安全性?供应链安全目前也是网络安全防范的重中之重。

💡 我们能做些什么?

在2026年的今天,网络空间已成为大国博弈的“第五空间”。为了响应全民国家安全教育日的号召,我们在此向社区的每一位开发者发出倡议:

  • 增强安全意识:主动学习《网络安全法》、《数据安全法》、《个人信息保护法》等相关法律法规,让“合规”成为开发的第一原则。
  • 践行安全开发(DevSecOps):在需求设计、代码编写、测试发布的每一个环节,都把安全因素考虑进去。拒绝“先上线再修补”的侥幸心理。
  • 保护用户隐私:严格落实 App 隐私合规要求,遵循“最小必要”原则获取用户权限,妥善加密敏感数据。

💬 社区互动:你的项目是如何做安全防护的?

国家安全,人人有责;网络安全,代码为基。

欢迎大家在评论区分享:在日常的开发中,你遇到过哪些安全大坑?或者你在项目中使用了哪些好用的安全防护手段/插件?

让我们一起交流学习,共同构建更安全、更可靠的应用生态!👇


【活动说明】
本文为响应2026年第十一个全民国家安全教育日主题宣传活动所发。维护网络空间清朗,需要你我共同参与!

收起阅读 »

小程序包体积分析利器 -- vite-plugin-component-insight

体积优化 支付宝小程序 分包 分包异步化 微信小程序

背景

微信小程序支持分包异步化 跨分包自定义组件引用,但是,很多业务项目往往都比较复杂,组件使用情况也不容易看清,开发中很容易遇到这些问题:

  • 无法快速获悉某个组件到底被哪些页面使用
  • 不清楚一个组件在项目里出现了多少次
  • 做分包优化时,不知道组件放在主包还是分包更合适

于是,我写了一个插件 vite-plugin-component-insight 来简化这一过程。

特性

  • 开箱即用,配置简单
  • 统计组件的使用次数和调用情况
  • 结合主包和分包关系输出组件划分建议
  • 支持生成 markdown 报告,方便查看更加详细的信息
  • 支持 hx 项目和 cli 项目
  • 支持 uni-app 和 uni-app-x (vue3)

使用指南

安装

npm install @uni_toolkit/vite-plugin-component-insight -D  
# 或  
pnpm add @uni_toolkit/vite-plugin-component-insight -D  
# 或  
yarn add @uni_toolkit/vite-plugin-component-insight -D

配置插件

vite.config.js 中使用:

import { defineConfig } from 'vite';  
import uni from '@dcloudio/vite-plugin-uni';  
import componentInsight from '@uni_toolkit/vite-plugin-component-insight';  

export default defineConfig({  
  plugins: [  
    uni(),  
    componentInsight(), // 在 uni 之后调用  
  ],  
});

Tips

插件默认不会生成文件,而是在控制台直接输出分析结果。效果参考附件1

如果需要生成 markdown 报告,可以这样配置:

componentInsight({  
  reportMarkdownPath: 'logs/component-insight-report.md',  
})

如果只想生成 markdown,不输出控制台日志,可以这样配置:

componentInsight({  
  logToConsole: false,  
  reportMarkdownPath: 'logs/component-insight-report.md',  
})

完整配置项

interface VitePluginComponentInsightOptions {  
  reportMarkdownPath?: string;  
  logToConsole?: boolean;  
  exclude?: ReadonlyArray<string | RegExp> | string | RegExp | null;  
  include?: ReadonlyArray<string | RegExp> | string | RegExp | null;  
}
选项 说明
reportMarkdownPath 自定义 Markdown 报告输出路径,不传则不生成 Markdown
logToConsole 是否输出控制台日志,默认开启
exclude 指定过滤的文件,默认过滤 node_modules 和 uni_modules
include 指定包含的文件,默认为空

交流群

如果你有其他 uniapp 或者 uniappx 的问题想要咨询,可以扫描附件中的微信二维码进群

继续阅读 »

背景

微信小程序支持分包异步化 跨分包自定义组件引用,但是,很多业务项目往往都比较复杂,组件使用情况也不容易看清,开发中很容易遇到这些问题:

  • 无法快速获悉某个组件到底被哪些页面使用
  • 不清楚一个组件在项目里出现了多少次
  • 做分包优化时,不知道组件放在主包还是分包更合适

于是,我写了一个插件 vite-plugin-component-insight 来简化这一过程。

特性

  • 开箱即用,配置简单
  • 统计组件的使用次数和调用情况
  • 结合主包和分包关系输出组件划分建议
  • 支持生成 markdown 报告,方便查看更加详细的信息
  • 支持 hx 项目和 cli 项目
  • 支持 uni-app 和 uni-app-x (vue3)

使用指南

安装

npm install @uni_toolkit/vite-plugin-component-insight -D  
# 或  
pnpm add @uni_toolkit/vite-plugin-component-insight -D  
# 或  
yarn add @uni_toolkit/vite-plugin-component-insight -D

配置插件

vite.config.js 中使用:

import { defineConfig } from 'vite';  
import uni from '@dcloudio/vite-plugin-uni';  
import componentInsight from '@uni_toolkit/vite-plugin-component-insight';  

export default defineConfig({  
  plugins: [  
    uni(),  
    componentInsight(), // 在 uni 之后调用  
  ],  
});

Tips

插件默认不会生成文件,而是在控制台直接输出分析结果。效果参考附件1

如果需要生成 markdown 报告,可以这样配置:

componentInsight({  
  reportMarkdownPath: 'logs/component-insight-report.md',  
})

如果只想生成 markdown,不输出控制台日志,可以这样配置:

componentInsight({  
  logToConsole: false,  
  reportMarkdownPath: 'logs/component-insight-report.md',  
})

完整配置项

interface VitePluginComponentInsightOptions {  
  reportMarkdownPath?: string;  
  logToConsole?: boolean;  
  exclude?: ReadonlyArray<string | RegExp> | string | RegExp | null;  
  include?: ReadonlyArray<string | RegExp> | string | RegExp | null;  
}
选项 说明
reportMarkdownPath 自定义 Markdown 报告输出路径,不传则不生成 Markdown
logToConsole 是否输出控制台日志,默认开启
exclude 指定过滤的文件,默认过滤 node_modules 和 uni_modules
include 指定包含的文件,默认为空

交流群

如果你有其他 uniapp 或者 uniappx 的问题想要咨询,可以扫描附件中的微信二维码进群

收起阅读 »

UniApp资深程序猿,八年全栈经验全职开发,主打uniCloud+uniapp全栈开发,可独立完成各类APP,小程序,H5的开发,效率高,成本低,全欢迎老板来咨询,微信同QQ:170842262

我的优势
1、精通uniCloud uniapp等技术栈,熟练使用 前后端分离开发 、拥有丰富的项目开发经验。
2、能够独立完成从项目的 分析 、设计 、 开发 、测试 、部署 到 维护与优化 的全过程,能 快速的对需求进行梳理并制定开发计划。
3、注重代码可维护性、可扩展性、性能优化等方面的工作。
4、汇聚多行业100 成熟项目案例 可供复用,效率倍增,快人一步。
如果您正在寻找一位高效、专业的开发者来完成您的项目,我非常愿意为您提供优质的服务,共同推动项目顺利进行。
如果您对我的技能与工作经验感兴趣,请通过微信联系我,我们可以进一步探讨您的具体项目需求,并且开展合作。
微信同QQ:170842262

继续阅读 »

我的优势
1、精通uniCloud uniapp等技术栈,熟练使用 前后端分离开发 、拥有丰富的项目开发经验。
2、能够独立完成从项目的 分析 、设计 、 开发 、测试 、部署 到 维护与优化 的全过程,能 快速的对需求进行梳理并制定开发计划。
3、注重代码可维护性、可扩展性、性能优化等方面的工作。
4、汇聚多行业100 成熟项目案例 可供复用,效率倍增,快人一步。
如果您正在寻找一位高效、专业的开发者来完成您的项目,我非常愿意为您提供优质的服务,共同推动项目顺利进行。
如果您对我的技能与工作经验感兴趣,请通过微信联系我,我们可以进一步探讨您的具体项目需求,并且开展合作。
微信同QQ:170842262

收起阅读 »

uniapp扩展组件uni-file-picker有安全漏洞,用云效部署后,会泄漏源代码

安全漏洞

我是h5项目,用uni-file-picker进行文件选择上传,然后用云效部署,发现在这个页面的js文件里,有我自己的云效账号密码token等,继而能找到阿里云仓库源代码,太神奇了。

我写的代码如下,刚开始不知道是哪里泄漏的,反复验证后,发现是这段代码,哪怕只留下limit,也会泄漏:

uni-file-picker v-if="userinfo.id" class="file-picker" ref="filePickerRef" v-model="state.uploadFile"  
            limit="1" file-mediatype="all" :auto-upload="false" title="" :sourceType="['album']" @select="fileSelect" ></uni-file-picker>

部分泄漏内容如下:
Re({
npm_command: "run-script",
privileged: "false",
KUBERNETES_SERVICE_PORT_HTTPS:
STEP_DOCUMENT_JSON:
TASK_DIR:
npm_config_userconfig:
runnerCacheMode:
KUBERNETES_SERVICE_PORT:
npm_config_cache:
operator:
invalidStepVersion:
NVM_INC:
NVM_IOJS_ORG_MIRROR:
NODEGROUP_TYPE:
npm_config_electron_mirror:
HOSTNAME:
npm_config_always_auth: LANGUAGE:

继续阅读 »

我是h5项目,用uni-file-picker进行文件选择上传,然后用云效部署,发现在这个页面的js文件里,有我自己的云效账号密码token等,继而能找到阿里云仓库源代码,太神奇了。

我写的代码如下,刚开始不知道是哪里泄漏的,反复验证后,发现是这段代码,哪怕只留下limit,也会泄漏:

uni-file-picker v-if="userinfo.id" class="file-picker" ref="filePickerRef" v-model="state.uploadFile"  
            limit="1" file-mediatype="all" :auto-upload="false" title="" :sourceType="['album']" @select="fileSelect" ></uni-file-picker>

部分泄漏内容如下:
Re({
npm_command: "run-script",
privileged: "false",
KUBERNETES_SERVICE_PORT_HTTPS:
STEP_DOCUMENT_JSON:
TASK_DIR:
npm_config_userconfig:
runnerCacheMode:
KUBERNETES_SERVICE_PORT:
npm_config_cache:
operator:
invalidStepVersion:
NVM_INC:
NVM_IOJS_ORG_MIRROR:
NODEGROUP_TYPE:
npm_config_electron_mirror:
HOSTNAME:
npm_config_always_auth: LANGUAGE:

收起阅读 »