更新记录
1.0.12(2026-09-06)
- 2026-09-06:补充 Android 远程图标集接口的具体参数类型导出和示例回调类型,修复 uni-app x 页面编译时参数类型不可见的问题。
- 新增
previewRemoteIconSetUpdate,可在同步前只读查看当前与候选版本、图标和别名增改删、安装冲突与明细截断;预览不会修改注册表、同步状态或回滚槽。 - 新增
rollbackRemoteIconSet与9030011,为每个远程图标集保存一个上一稳定版本,并以原子事务交换当前/上一清单;回滚后可再次回滚撤销。 - 仅真实更新覆盖有效旧清单时推进回滚槽;首次安装、304、缓存降级和失败同步保持原快照,状态查询增加上一版本与快照时间。
- Android 使用具体对象桥接,iOS 复用可回滚安装适配器与安全回调派发,Web/微信/支付宝提供同语义轻量实现;Harmony 明确返回不支持。
- 更新 uni-app、uni-app x 示例和客户文档,推荐“先预览、确认同步、必要时回滚”的发布流程。
- 本版本不新增原生依赖、权限或 Manifest,但公开 UTS 导出与 App 生成代码变化;Android/iOS 发布前需重新原生联编并使用匹配的新自定义基座验证。
1.0.10(2026-06-17)
- 复修 iOS 云打包
CGFloat/NSNumber类型冲突:iOS 组件移除对this.opacity的直接访问,避免生成物继续和DCUniComponent.opacity桥接混用。 - 保留
1.0.9的数组可变性、可空数组解包和统计字段NSNumber兼容修复;本版本只做 iOS 组件透明度冲突收口。 - 本版本仅修改
utssdk/app-ios平台实现和发布资料,不修改公共接口、Android、Harmony、web/mp/app-plus 实现或 uni-app 示例。 - 发布前建议重新提交 iOS 云打包自定义基座或正式包复验。
1.0.9(2026-06-16)
- 修复 iOS 云打包 SwiftCompile:批量注册、缓存预加载和失败明细收集中会追加元素的数组统一使用可变数组,避免 Swift 生成物对不可变数组执行追加。
- 修复 iOS 可空数组桥接:图标集、失败明细和预加载结果遍历前统一解包或兜底为空数组,避免可空数组直接参与循环。
- 修复 iOS 端长度与统计字段:数组长度统一通过 helper 转为
NSNumber兼容值,避免Int -> NSNumber参数不匹配。 - 保留
registerIconSetJson、registerIconSetJsonDirect、failResults、durationMs等 1.0.8 接入增强能力,本轮只做 iOS 云打包兼容收口。 - 增强 iOS 云打包回归守卫;本版本需重新提交 iOS 云打包验证。
平台兼容性
uni-app(5.07)
| Vue2 | Vue3 | Chrome | Safari | app-vue | app-nvue | Android | iOS | 鸿蒙 |
|---|---|---|---|---|---|---|---|---|
| √ | √ | √ | √ | √ | √ | √ | √ | √ |
| 微信小程序 | 支付宝小程序 | 抖音小程序 | 百度小程序 | 快手小程序 | 京东小程序 | 鸿蒙元服务 | QQ小程序 | 飞书小程序 | 小红书小程序 | 快应用-华为 | 快应用-联盟 |
|---|---|---|---|---|---|---|---|---|---|---|---|
| √ | √ | × | × | × | × | × | × | × | × | × | × |
uni-app x(5.07)
| Chrome | Safari | Android | iOS | 鸿蒙 | 微信小程序 |
|---|---|---|---|---|---|
| √ | √ | √ | √ | √ | √ |
lizhao-icon-pro
lizhao-icon-pro 是一个面向 uni-app / uni-app x 的 UTS SVG 图标组件插件。它把图标展示、SVG 文本解析、主题、状态、徽标、动画、缓存、图标搜索和诊断能力放在一个组件里,适合做 App 首页、工作台、商城、后台管理、设备控制台等需要大量业务图标的页面。
从简单到复杂
| 接入场景 | 推荐用法 | 适合阶段 |
|---|---|---|
| 只显示一个内置图标 | 直接使用 <lizhao-icon-pro name="dashboard" /> |
1 分钟跑通 |
| 显示业务 SVG | 给组件传 svgText 或 src |
接入真实页面 |
| 统一管理业务图标 | 使用 registerIconSet 或 registerIconSetJsonDirect 注册业务图标集 |
多页面复用 |
| 后台统一下发图标 | 使用 syncRemoteIconSet 同步带版本的 HTTPS 图标集清单 |
多环境资产发布 |
| 大列表或首页提速 | 使用 preloadIcons / preloadIconsDirect,读取 failResults 排查失败项 |
性能优化 |
| 售前验收和上线交付 | 使用诊断、画像、配置快照、主题包和验收计划 API | 商业交付 |
适合做什么
- 用
<lizhao-icon-pro />显示内置图标、业务图标和 SVG 文本。 - 给图标配置主题、状态、徽标、旋转、透明度和动画。
- 注册自己的业务图标集,让图标可搜索、可预加载、可缓存。
- 从设计平台、CMS 或业务后台同步带版本的远程图标集,网络失败时保留当前可用版本。
- 给旧项目图标名配置别名,降低迁移成本。
- 查看缓存统计、SVG 兼容体检、运行诊断和配置快照。
支持平台
| 平台 | 是否支持 | 说明 |
|---|---|---|
| Android App | 是 | 核心支持平台,支持原生组件、SVG 安全子集解析、动画、缓存、诊断和远程图标集同步 |
| iOS App | 是 | 核心支持平台,支持原生组件和远程图标集同步,能力与 Android App 尽量保持一致 |
| Harmony | 部分支持 | 当前提供 API 轻量降级和演示页可见兜底图形,已在 Harmony 真机验证页面与按钮;不作为完整 component-uts 原生图标引擎卖点 |
| Web / H5 | 部分支持 | 支持远程清单同步、列表和搜索;受浏览器 CORS 限制,不承诺 App 原生动画能力 |
| 微信小程序 | 部分支持 | 支持远程清单同步、列表和搜索;请求域名必须加入业务域名白名单 |
| 支付宝小程序 | 部分支持 | 复用小程序远程同步和轻量展示能力 |
| 其他小程序 / 快应用 | 否 | 未内置对应平台目录,不在 package.json 中声明完整支持;需要时应按目标平台单独适配 |
安装与引入
插件类型是 component-uts,组件标签为:
<lizhao-icon-pro />
API 从插件根目录引入:
import { preloadIcons, searchIcons } from "@/uni_modules/lizhao-icon-pro";
App 端建议在 .nvue 或 uni-app x 页面中使用原生组件。普通 .vue 页面在部分环境里可能把原生组件当作普通标签解析,导致渲染或生命周期不符合预期。
权限说明
| 项目 | 说明 |
|---|---|
| 本地图标 | 不需要额外系统权限 |
| SVG 文本 | 不需要额外系统权限 |
| HTTPS 网络 SVG | 需要网络访问能力 |
| 远程图标集同步 | 需要访问客户配置的 HTTPS 清单地址 |
自定义基座说明
| 项目 | 说明 |
|---|---|
| 三方 SDK | 当前版本不引入 Android / iOS 三方 SDK |
| 自定义基座 | 不新增三方依赖;但首次使用远程同步新 API 时需要重新原生联编,旧基座未包含新导出时需重新制作并安装自定义基座 |
商业能力摘要
- App 端支持
disk / memory-disk真实持久缓存,getIconCacheStats可查看缓存统计,configureIconCache可配置maxEntries / ttlMs。 - 支持业务偏好持久化:收藏和最近使用重启后保留,业务别名重启后保留,业务图标集持久化适合多业务线统一管理。
- App 缓存事件可通过
diskFallback=false判断是否命中真实持久缓存,网络 SVG 下载建议在自定义基座中完成真机验证。 - 提供商业诊断快照、图标库画像报告、性能画像报告、使用洞察报告、客户接入向导、品牌主题设计令牌、主题视觉质检、客户验收计划、品牌主题交付包、图标迁移计划、智能预加载计划。
- 使用洞察报告包含采纳评分、风险评分等运营指标,方便判断客户图标体系是否需要继续治理。
- 支持业务别名、业务资产审计、运行事件日志、售后诊断包、上线交付报告、配置快照、商业自检和 SVG 兼容体检。
- 支持兜底图标策略,旧项目图标名或业务别名无法命中时可返回明确建议,不会静默伪造成功。
- HTTPS 网络 SVG 可用于真机下载验证;复杂 SVG 真实路径解析以 SVG 安全子集为边界,描边宽度会影响安全子集图层边框。
- 运行期事件日志只保留运行期内存日志,组件错误会明确返回中文说明,避免出现
Cannot read properties of null这类难以排查的空错误。
快速使用
显示内置图标
<template>
<lizhao-icon-pro
icon-id="homeIcon"
name="dashboard"
theme="brand"
status="normal"
:size="64"
@tap="onIconTap"
/>
</template>
<script>
export default {
methods: {
onIconTap() {
console.log("点击了图标");
}
}
};
</script>
显示 SVG 文本
<template>
<lizhao-icon-pro
icon-id="customSvg"
name=""
:svg-text="svgText"
:size="72"
:colors="['#0F766E', '#F97316', '#111827']"
/>
</template>
<script>
export default {
data() {
return {
svgText: "<svg viewBox=\"0 0 64 64\"><rect x=\"12\" y=\"16\" width=\"40\" height=\"30\"/><circle cx=\"45\" cy=\"24\" r=\"7\"/><path d=\"M18 48h28\"/></svg>"
};
}
};
</script>
预加载常用图标
import { preloadIcons } from "@/uni_modules/lizhao-icon-pro";
preloadIcons({
names: ["dashboard", "commerce", "secure"],
cachePolicy: "memory-disk",
success(res) {
console.log("预加载完成", res.loaded, res.failed, res.failResults);
},
fail(err) {
console.log("预加载失败", err);
}
});
远程图标集同步
当图标由设计平台、CMS 或业务后台统一维护时,可以让插件直接同步一份带版本的 HTTPS 清单。插件会保存服务端返回的 ETag / Last-Modified,后续请求通过 If-None-Match / If-Modified-Since 判断是否需要更新。
建议在应用启动或业务图标入口采用“先预览、确认后同步”的接入顺序:先调用 previewRemoteIconSetUpdate 查看版本和图标/别名增改删,该调用绝不注册图标或写同步状态;用户或业务规则确认后再调用 syncRemoteIconSet。服务端返回 304 时,插件会重新校验本地有效清单并恢复运行期注册表,因此应用重启后不需要重复下载完整清单。
新清单会先完成大小、协议、图标名称、HTTPS 资源和 SVG 安全检查,通过后才替换当前图标集。网络或 HTTP 失败时可以回退最近一次有效清单,并明确返回 cacheFallback=true 和 warnings;不会把缓存回退伪装成在线更新成功。
清单格式
{
"schemaVersion": 1,
"setId": "commerce",
"displayName": "商城图标集",
"version": "2026.07.28.1",
"icons": [
{
"name": "commerce:cart",
"svgText": "<svg viewBox=\"0 0 64 64\"><path d=\"M12 18h40v30H12z\"/></svg>",
"category": "商城",
"keywords": ["购物车", "订单"],
"color": "#0F766E"
}
],
"aliases": [
{
"alias": "legacy-cart",
"target": "commerce:cart"
}
]
}
| 参数 | 类型 | 必填 | 说明 | 默认值 | 可选参数 |
|---|---|---|---|---|---|
schemaVersion |
number | 是 | 远程清单协议版本 | 无 | 1 |
setId |
string | 是 | 图标集唯一 ID,同一 URL 后续不能改变 | 无 | 字母、数字、点、下划线、短横线 |
displayName |
string | 否 | 客户界面展示名称 | setId |
无 |
version |
string | 是 | 服务端版本字符串,只判断是否相等 | 无 | 长度 1~64 |
icons |
array | 是 | 图标定义数组 | 无 | 每项至少包含 name 和 svgText / HTTPS src |
aliases |
array | 否 | 随清单安装的业务别名,target 只能指向同一清单内图标 |
[] |
alias / target / fallback / descriptionText |
uni-app 示例
import {
getRemoteIconSetStatus,
previewRemoteIconSetUpdate,
rollbackRemoteIconSet,
syncRemoteIconSet
} from "@/uni_modules/lizhao-icon-pro";
// 先预览候选版本;预览不修改当前图标集、同步状态或回滚槽。
previewRemoteIconSetUpdate({
url: "https://static.example.com/icons/commerce.json",
expectedSetId: "commerce",
detailLimit: 100,
success(res) {
console.log("版本", res.currentVersion, "->", res.candidateVersion);
console.log("图标差异", res.iconDiff, "别名差异", res.aliasDiff);
console.log("是否允许安装", res.installable, res.blockingReason);
}
});
// 确认后同步;失败不会覆盖当前有效版本。
syncRemoteIconSet({
url: "https://static.example.com/icons/commerce.json",
expectedSetId: "commerce",
fallbackToCache: true,
success(res) {
console.log(
"同步结果",
res.status,
res.version,
res.iconCount,
res.cacheFallback,
res.warnings
);
},
fail(err) {
console.log("同步失败", err.errCode, err.errMsg);
},
complete() {
console.log("远程同步流程结束");
}
});
// 状态查询只读本地记录,不会再次请求网络。
getRemoteIconSetStatus({
setId: "commerce",
success(res) {
console.log("当前同步状态", res.items);
}
});
// 仅在 hasRollbackSnapshot=true 时调用;回滚后仍可再次调用来撤销本次回滚。
rollbackRemoteIconSet({
setId: "commerce",
success(res) {
console.log("回滚完成", res.fromVersion, "->", res.toVersion);
}
});
uni-app x 示例
import {
IconProRemoteIconSetSyncResult,
previewRemoteIconSetUpdate,
rollbackRemoteIconSet,
syncRemoteIconSet
} from "@/uni_modules/lizhao-icon-pro";
// uni-app x 使用同一公开合同,回调保留强类型结果。
syncRemoteIconSet({
url: "https://static.example.com/icons/commerce.json",
expectedSetId: "commerce",
success: (res: IconProRemoteIconSetSyncResult) => {
console.log("同步状态:" + res.status + ",版本:" + res.version);
},
fail: (err) => {
console.log("同步失败:" + err.errCode.toString());
},
complete: () => {
console.log("远程同步流程结束");
}
});
previewRemoteIconSetUpdate(options) 参数
| 参数 | 类型 | 必填 | 说明 | 默认值 | 可选参数 |
|---|---|---|---|---|---|
options |
object | 是 | 只读预览参数 | 无 | 下列字段 |
options.url |
string | 是 | 候选清单 HTTPS 地址 | 无 | HTTPS URL |
options.expectedSetId |
string | 否 | 约束候选 setId | 无 | 合法 setId |
options.timeoutMs |
number | 否 | 请求超时毫秒数 | 10000 |
1000~30000 |
options.maxIcons |
number | 否 | 允许的最大图标数 | 1000 |
1~5000 |
options.maxPayloadBytes |
number | 否 | 最大 UTF-8 响应体 | 1048576 |
1024~4194304 |
options.detailLimit |
number | 否 | 每类差异返回的名称上限,0 仅返回统计 | 100 |
0~500 |
options.success |
function | 否 | 校验和差异计算成功时触发 | 无 | 无 |
options.fail |
function | 否 | 参数、网络、协议或安全校验失败时触发 | 无 | 无 |
options.complete |
function | 否 | 成功或失败后触发一次 | 无 | 无 |
预览结果包含 currentVersion / candidateVersion、当前和候选数量、iconDiff / aliasDiff、installable / blockingReason。每个 diff 提供排序后的 added / changed / removed、完整数量、未变化数量和截断标记;运行期 lastUsedAt 不作为图标内容变化。
rollbackRemoteIconSet(options) 参数
| 参数 | 类型 | 必填 | 说明 | 默认值 | 可选参数 |
|---|---|---|---|---|---|
options |
object | 是 | 单槽回滚参数 | 无 | 下列字段 |
options.setId |
string | 是 | 需要回滚的远程图标集 ID | 无 | 已同步 setId |
options.expectedCurrentVersion |
string | 否 | 校验页面看到的当前版本,防止误回滚 | 无 | 当前版本字符串 |
options.success |
function | 否 | 原子回滚成功时触发 | 无 | 无 |
options.fail |
function | 否 | 无快照、版本冲突、校验或持久化失败时触发 | 无 | 无 |
options.complete |
function | 否 | 成功或失败后触发一次 | 无 | 无 |
插件只保存一个上一稳定版本。成功回滚后,回滚前版本会成为新的上一版本,因此可以再次回滚撤销操作;首次安装、304、缓存降级和失败同步不会覆盖已有回滚槽。
syncRemoteIconSet(options) 参数
| 参数 | 类型 | 必填 | 说明 | 默认值 | 可选参数 |
|---|---|---|---|---|---|
options |
object | 是 | 远程同步参数 | 无 | 下列字段 |
options.url |
string | 是 | 远程清单 HTTPS 地址 | 无 | HTTPS URL |
options.expectedSetId |
string | 否 | 约束服务端 setId,防止地址配置错误 | 无 | 合法 setId |
options.timeoutMs |
number | 否 | 请求超时毫秒数 | 10000 |
1000~30000 |
options.maxIcons |
number | 否 | 本次允许的最大图标数 | 1000 |
1~5000 |
options.maxPayloadBytes |
number | 否 | 本次允许的最大 UTF-8 响应体 | 1048576 |
1024~4194304 |
options.fallbackToCache |
boolean | 否 | 网络或 HTTP 失败时是否使用最近有效清单 | true |
true / false |
options.success |
function | 否 | 更新、304 或有效缓存回退时触发 | 无 | 无 |
options.fail |
function | 否 | 参数、网络且无缓存、协议或安全校验失败时触发 | 无 | 无 |
options.complete |
function | 否 | 成功或失败后触发一次 | 无 | 无 |
返回值
| 字段 | 类型 | 说明 |
|---|---|---|
setId |
string | 已同步图标集 ID |
version |
string | 当前远端版本 |
status |
string | updated / not-modified / cache-fallback |
iconCount |
number | 图标数量 |
aliasCount |
number | 别名数量 |
cacheFallback |
boolean | 是否使用缓存清单降级 |
warnings |
string[] | 缓存降级或平台限制提示 |
etag |
string | 最近 ETag |
lastModified |
string | 最近 Last-Modified |
syncedAt |
number | 最近确认或安装时间 |
Web 使用时,清单服务需要允许浏览器 CORS;微信和支付宝小程序需要把清单域名加入业务域名白名单。远程同步只下载 JSON 清单,不会在一次调用中并发下载每个网络 SVG;需要预热网络 SVG 时继续调用 preloadIcons。
常用功能精简示例
下面这些片段适合直接复制到 .nvue 或 uni-app x 页面中快速接入。完整销售演示源码仍放在 uni_modules/lizhao-icon-pro/examples/iconPro.nvue,这一节只保留客户最常用的能力。
1. 内置图标、主题、状态和徽标
<template>
<view class="icon-row">
<lizhao-icon-pro
icon-id="dashboardIcon"
name="dashboard"
theme="brand"
status="normal"
:size="64"
color="#0F766E"
@tap="onIconTap"
/>
<lizhao-icon-pro
icon-id="orderIcon"
name="commerce"
theme="commerce"
status="selected"
badge="9"
:size="64"
:colors="['#F97316', '#FDBA74', '#111827']"
/>
</view>
</template>
<script>
export default {
methods: {
onIconTap() {
console.log("图标被点击");
}
}
};
</script>
2. SVG 文本、Base64 和网络 SVG
<template>
<view class="icon-row">
<lizhao-icon-pro
icon-id="sourceSvgIcon"
name=""
:svg-text="sourceSvgText"
:size="72"
:colors="['#0F766E', '#F97316', '#2563EB']"
cache-policy="memory"
/>
<lizhao-icon-pro
icon-id="base64SvgIcon"
name=""
:src="base64SvgSource"
:size="72"
cache-policy="memory-disk"
/>
<lizhao-icon-pro
icon-id="networkSvgIcon"
name=""
src="https://cdn.jsdelivr.net/npm/lucide-static@0.468.0/icons/cloud.svg"
:size="72"
cache-policy="memory-disk"
@load="onNetworkLoad"
@error="onNetworkError"
/>
</view>
</template>
<script>
export default {
data() {
return {
sourceSvgText: "<svg viewBox=\"0 0 64 64\"><rect x=\"12\" y=\"18\" width=\"32\" height=\"24\"/><circle cx=\"46\" cy=\"20\" r=\"7\"/><path d=\"M18 50h28\"/></svg>",
base64SvgSource: "data:image/svg+xml;base64,PHN2ZyB2aWV3Qm94PSIwIDAgNjQgNjQiPjxyZWN0IHg9IjE0IiB5PSIyMCIgd2lkdGg9IjM2IiBoZWlnaHQ9IjI0Ii8+PC9zdmc+"
};
},
methods: {
onNetworkLoad() {
console.log("网络 SVG 已加载");
},
onNetworkError(err) {
console.log("网络 SVG 加载失败", err);
}
}
};
</script>
3. 注册业务图标集并搜索
import { registerIconSet, searchIcons } from "@/uni_modules/lizhao-icon-pro";
registerIconSet({
setName: "crm",
displayName: "CRM 业务图标",
override: true,
icons: [
{
name: "crm:customer",
svgText: "<svg viewBox=\"0 0 64 64\"><circle cx=\"32\" cy=\"22\" r=\"10\"/><path d=\"M16 52c4-12 28-12 32 0\"/></svg>",
category: "客户",
color: "#0F766E",
keywords: ["customer", "user", "客户"]
}
],
success(res) {
console.log("业务图标集已注册", res.count);
}
});
searchIcons({
keyword: "客户",
limit: 10,
success(res) {
console.log("搜索命中", res.total, res.icons);
}
});
4. 批量导入业务图标集
如果业务图标来自后台配置、设计资产导出或旧项目迁移,可以直接传 JSON 字符串。JSON 支持两种格式:数组,或包含 icons 字段的对象。
import { registerIconSetJsonDirect } from "@/uni_modules/lizhao-icon-pro";
const crmIconJson = JSON.stringify({
icons: [
{
name: "crm:lead",
svgText: "<svg viewBox=\"0 0 64 64\"><path d=\"M14 20h36v26H14z\"/><path d=\"M22 30h20M22 38h14\"/></svg>",
category: "客户",
color: "#2563EB",
keywords: ["lead", "线索"]
},
{
name: "crm:deal",
svgText: "<svg viewBox=\"0 0 64 64\"><circle cx=\"24\" cy=\"28\" r=\"10\"/><path d=\"M36 22h14v24H22v-8\"/></svg>",
category: "交易",
color: "#F97316",
keywords: ["deal", "商机"]
}
]
});
const result = registerIconSetJsonDirect("crm-json", "CRM JSON 图标集", crmIconJson, true, false);
console.log("批量导入业务图标集", result.count, result.failed, result.failResults);
5. 缓存预加载与缓存统计
import {
configureIconCache,
preloadIconsDirect,
getIconCacheStatsDirect
} from "@/uni_modules/lizhao-icon-pro";
configureIconCache({
cachePolicy: "memory-disk",
maxEntries: 128,
ttlMs: 600000
});
const preloadResult = preloadIconsDirect("dashboard,commerce,secure,not-exists", "", "memory-disk");
console.log("预加载结果", preloadResult.loaded, preloadResult.failed, preloadResult.cacheHits);
console.log("预加载失败明细", preloadResult.failResults);
const cacheStats = getIconCacheStatsDirect(true);
console.log("缓存统计", cacheStats.memoryCount, cacheStats.diskCount, cacheStats.hitRate);
6. 收藏、最近使用和批量状态
import {
setIconFavoriteDirect,
listRecentIcons,
applyIconStateBatchDirect
} from "@/uni_modules/lizhao-icon-pro";
setIconFavoriteDirect("dashboard", true);
listRecentIcons({
limit: 5,
success(res) {
console.log("最近使用", res.names);
}
});
applyIconStateBatchDirect("dashboardIcon,orderIcon", "selected");
7. 创建上下文控制动画和主题
<template>
<lizhao-icon-pro
icon-id="motionIcon"
name="spark"
theme="brand"
status="normal"
:size="72"
/>
</template>
<script>
import { createIconProContext } from "@/uni_modules/lizhao-icon-pro";
export default {
onReady() {
const iconContext = createIconProContext("motionIcon", this);
iconContext.playAnimation("pulse");
iconContext.setTheme("commerce");
iconContext.setStatus("success");
},
onUnload() {
const iconContext = createIconProContext("motionIcon", this);
iconContext.stopAnimation();
}
};
</script>
组件属性
| 参数 | 类型 | 必填 | 说明 | 默认值 | 可选参数 |
|---|---|---|---|---|---|
| iconId | string | 否 | 图标实例 ID,用于组件控制和事件识别 | lizhao-icon-pro |
无 |
| name | string | 否 | 内置或已注册图标名称 | dashboard |
dashboard / commerce / secure / spark / cloud-sync |
| src | string | 否 | SVG 地址或 data URI,适合网络 SVG 和外部资源 | 空字符串 | 无 |
| svgText | string | 否 | SVG 源文本,优先级高于 src |
空字符串 | path / rect / circle 安全子集 |
| size | number | 否 | 图标尺寸,单位 px | 56 |
无 |
| color | string | 否 | 单色图标颜色 | 空字符串 | CSS 颜色值 |
| colors | string[] | 否 | 多色图标色槽,按 SVG 图层顺序映射 | [] |
无 |
| strokeWidth | number | 否 | 描边宽度 | 2 |
1 - 8 |
| rotate | number | 否 | 静态旋转角度 | 0 |
无 |
| opacity | number | 否 | 透明度 | 1 |
0 - 1 |
| iconDisabled | boolean | 否 | 是否禁用点击和高亮 | false |
true / false |
| loading | boolean | 否 | 是否展示加载态 | false |
true / false |
| badge | string | 否 | 右上角徽标文本 | 空字符串 | 无 |
| status | string | 否 | 图标业务状态 | normal |
normal / active / selected / disabled / loading / error / success / warning |
| theme | string | 否 | 图标主题 | brand |
light / dark / brand / commerce / system |
| animated | string | 否 | 动画预设 | none |
none / spin / pulse / breathe / bounce / shake / draw |
| cachePolicy | string | 否 | 缓存策略 | memory |
memory / disk / memory-disk / none |
组件事件
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
| @ready | function | 否 | 组件初始化完成 |
| @load | function | 否 | 图标内容解析并展示完成 |
| @error | function | 否 | 图标加载或参数处理失败 |
| @tap | function | 否 | 图标点击 |
| @animationstart | function | 否 | 动画开始 |
| @animationend | function | 否 | 动画结束 |
| @cachehit | function | 否 | 缓存命中 |
常用 API
| API | 用途 |
|---|---|
| registerIconSet | 注册业务图标集 |
| registerIconSetJson | 通过 JSON 字符串批量导入业务图标集 |
| syncRemoteIconSet | 同步带版本的 HTTPS 远程图标集 |
| getRemoteIconSetStatus | 查询最近同步版本、缓存和错误状态 |
| listIconSets | 查询已注册图标集 |
| searchIcons | 搜索内置和业务图标 |
| registerIconAliases | 注册旧图标名或业务别名 |
| resolveIconAlias | 解析别名对应的真实图标 |
| preloadIcons | 预加载图标,减少首屏闪烁 |
| configureIconCache | 配置缓存策略、容量和过期时间 |
| getIconCacheStats | 查看缓存数量、命中率和缓存 key |
| clearIconCache | 清理缓存 |
| registerIconTheme | 注册业务主题 |
| applyIconStateBatch | 批量切换图标状态 |
| inspectIconSvg | 检查 SVG 是否适合当前安全子集解析 |
| auditIconProAssets | 检查业务页面图标配置是否完整 |
| runIconProSelfTest | 运行插件自检 |
| getIconProDiagnostics | 导出运行诊断信息 |
| exportIconProConfig / importIconProConfig | 导出和导入图标配置 |
带 Direct 后缀的 API 是直连接口,适合 App 页面按钮、演示页面和自动化冒烟测试。它们通常使用字符串、数字、布尔值等标量参数,不依赖回调对象。
常用 API 说明
registerIconSet(options)
注册业务图标集。注册后,图标可以参与搜索、预加载、缓存统计和诊断。
| 参数 | 类型 | 必填 | 说明 | 默认值 | 可选参数 |
|---|---|---|---|---|---|
| options | IconProRegisterIconSetOptions | 是 | 注册参数 | 无 | setName / displayName / icons / override / success / fail / complete |
| options.setName | string | 是 | 图标集唯一名称 | 无 | 无 |
| options.displayName | string | 否 | 图标集展示名称 | 无 | 无 |
| options.icons | IconProDefinition[] | 是 | 图标定义列表 | 无 | 无 |
| options.override | boolean | 否 | 是否覆盖同名图标集 | false |
true / false |
| options.success | function | 否 | 成功回调 | 无 | 无 |
| options.fail | function | 否 | 失败回调 | 无 | 无 |
| options.complete | function | 否 | 完成回调 | 无 | 无 |
返回值:
| 字段 | 类型 | 说明 |
|---|---|---|
| setName | string | 图标集名称 |
| count | number | 注册图标数量 |
| overridden | boolean | 是否覆盖已有图标集 |
示例:
import { registerIconSet } from "@/uni_modules/lizhao-icon-pro";
registerIconSet({
setName: "business",
displayName: "业务图标",
override: true,
icons: [
{
name: "business:ticket",
svgText: "<svg viewBox=\"0 0 64 64\"><path d=\"M12 20h40v24H12z\"/></svg>",
color: "#F97316",
category: "订单",
keywords: ["ticket", "coupon", "order"]
}
]
});
registerIconSetJson(options)
批量导入业务图标集。适合后台下发、设计工具导出或旧项目迁移。非法图标会写入 failResults,默认跳过非法项继续注册合法项;如果希望出现任意非法项就整体失败,可传 failOnInvalid: true。
| 参数 | 类型 | 必填 | 说明 | 默认值 | 可选参数 |
|---|---|---|---|---|---|
| options | IconProRegisterIconSetJsonOptions | 是 | JSON 导入参数 | 无 | setName / displayName / iconsJson / override / failOnInvalid / success / fail / complete |
| options.setName | string | 是 | 图标集唯一名称 | 无 | 无 |
| options.displayName | string | 否 | 图标集展示名称 | 无 | 无 |
| options.iconsJson | string | 是 | 图标数组 JSON,或包含 icons 数组字段的对象 JSON |
无 | 无 |
| options.override | boolean | 否 | 是否覆盖同名图标集 | false |
true / false |
| options.failOnInvalid | boolean | 否 | 是否遇到非法图标就中止 | false |
true / false |
| options.success | function | 否 | 成功回调 | 无 | 无 |
| options.fail | function | 否 | 失败回调 | 无 | 无 |
| options.complete | function | 否 | 完成回调 | 无 | 无 |
返回值:
| 字段 | 类型 | 说明 |
|---|---|---|
| setName | string | 图标集名称 |
| total | number | 输入图标数量 |
| count | number | 成功注册数量 |
| failed | number | 失败或跳过数量 |
| overridden | boolean | 是否覆盖已有图标集 |
| failResults | IconProBatchImportFailureItem[] | 失败明细,包含 index / name / reason |
| message | string | 中文结果说明 |
示例:
import { registerIconSetJsonDirect } from "@/uni_modules/lizhao-icon-pro";
const result = registerIconSetJsonDirect(
"crm-json",
"CRM JSON 图标集",
JSON.stringify({ icons: [{ name: "crm:lead", svgText: "<svg viewBox=\"0 0 64 64\"><path d=\"M12 20h40v24H12z\"/></svg>" }] }),
true,
false
);
console.log("批量导入业务图标集", result.count, result.failResults);
searchIcons(options)
搜索内置图标、业务图标、收藏图标或最近使用图标。
| 参数 | 类型 | 必填 | 说明 | 默认值 | 可选参数 |
|---|---|---|---|---|---|
| options | IconProSearchOptions | 否 | 搜索参数 | null |
keyword / setName / category / favoritesOnly / recentFirst / limit / success / fail / complete |
| options.keyword | string | 否 | 搜索关键字 | 空字符串 | 无 |
| options.setName | string | 否 | 限定图标集 | 空字符串 | 无 |
| options.category | string | 否 | 限定分类 | 空字符串 | 无 |
| options.favoritesOnly | boolean | 否 | 是否只看收藏 | false |
true / false |
| options.recentFirst | boolean | 否 | 是否按最近使用排序 | false |
true / false |
| options.limit | number | 否 | 最大返回数量,0 表示不限制 | 0 |
无 |
返回值:
| 字段 | 类型 | 说明 |
|---|---|---|
| total | number | 命中数量 |
| icons | IconProDefinition[] | 图标列表 |
preloadIcons(options)
预加载常用图标,适合列表页、工作台、首页进入前调用。
| 参数 | 类型 | 必填 | 说明 | 默认值 | 可选参数 |
|---|---|---|---|---|---|
| options | IconProPreloadOptions | 否 | 预加载参数 | null |
names / sources / cachePolicy / success / fail / complete |
| options.names | string[] | 否 | 图标名称列表 | [] |
无 |
| options.sources | string[] | 否 | SVG 地址或 data URI 列表 | [] |
无 |
| options.cachePolicy | string | 否 | 缓存策略 | memory |
memory / disk / memory-disk / none |
返回值:
| 字段 | 类型 | 说明 |
|---|---|---|
| total | number | 请求预加载数量 |
| loaded | number | 成功预加载数量 |
| failed | number | 失败或跳过数量 |
| cacheHits | number | 命中缓存数量 |
| failResults | IconProPreloadFailureItem[] | 失败明细,包含 sourceType / input / errCode / errMsg |
| durationMs | number | 本次预加载耗时,单位毫秒 |
configureIconCache(options)
配置图标缓存策略。App 端可使用 disk 或 memory-disk 做持久缓存。
| 参数 | 类型 | 必填 | 说明 | 默认值 | 可选参数 |
|---|---|---|---|---|---|
| options | IconProConfigureCacheOptions | 否 | 缓存配置 | null |
cachePolicy / maxEntries / ttlMs / success / fail / complete |
| options.cachePolicy | string | 否 | 全局缓存策略 | memory |
memory / disk / memory-disk / none |
| options.maxEntries | number | 否 | 最大缓存条目数 | 128 |
最小 8 |
| options.ttlMs | number | 否 | 缓存过期时间,单位毫秒;0 表示不过期 | 0 |
无 |
返回值:
| 字段 | 类型 | 说明 |
|---|---|---|
| cachePolicy | string | 实际使用的缓存策略 |
| maxEntries | number | 最大缓存条目数 |
| ttlMs | number | 缓存过期时间 |
| diskFallback | boolean | 是否发生持久缓存降级 |
| memoryCount | number | 当前内存缓存数量 |
| evicted | number | 因容量或过期被清理的数量 |
inspectIconSvg(options)
检查 SVG 是否适合当前组件解析。它不会执行 SVG 脚本,也不会主动下载网络 SVG。
| 参数 | 类型 | 必填 | 说明 | 默认值 | 可选参数 |
|---|---|---|---|---|---|
| options | IconProSvgInspectionOptions | 否 | SVG 检查参数 | null |
name / src / svgText / success / fail / complete |
| options.name | string | 否 | 内置或业务图标名称 | 空字符串 | 无 |
| options.src | string | 否 | SVG 地址或 data URI | 空字符串 | 无 |
| options.svgText | string | 否 | SVG 源文本 | 空字符串 | 无 |
完整示例页面
完整演示源码已放在插件目录内,下载插件后可以直接查看:
uni_modules/lizhao-icon-pro/examples/iconPro.nvue
这个示例文件展示首屏真实组件展示、3 分钟接入、主题与批量状态、图标墙、Motion 动画控制、多源 SVG 渲染和常用 API 演示。复制到项目页面时建议保留 nvue 承载方式,并从插件根目录引入 API:
import { getIconProCapabilities } from '@/uni_modules/lizhao-icon-pro';
示例默认隐藏内部诊断工具、兜底绘制层和额外调试按钮。需要排查运行细节时,可以在页面参数中开启:
| 参数 | 类型 | 必填 | 说明 | 默认值 | 可选参数 |
|---|---|---|---|---|---|
| iconProTools | string | 否 | 是否显示收藏、事件日志、更多内部操作按钮 | 0 |
0 / 1 |
| iconProFallback | string | 否 | 是否显示页面兜底图形,用于排查基座未刷新时的视觉问题 | 0 |
0 / 1 |
| iconProMotionBadges | string | 否 | 是否显示 Motion 状态徽标和动画徽标 | 0 |
0 / 1 |
完整 API 索引
公开 API 名称索引:
- 图标集与搜索:
syncRemoteIconSet、getRemoteIconSetStatus、registerIconSet、registerIconSetDirect、registerIconSetJson、registerIconSetJsonDirect、listIconSets、searchIcons。 - 收藏、最近和状态:
setIconFavorite、setIconFavoriteDirect、listRecentIcons、applyIconStateBatch、applyIconStateBatchDirect。 - 主题与缓存:
registerIconTheme、getIconTheme、preloadIcons、preloadIconsDirect、clearIconCache、configureIconCache、getIconCacheStats、getIconCacheStatsDirect。 - 诊断与报告:
getIconProDiagnostics、getIconProDiagnosticsDirect、getIconProLibraryReport、getIconProLibraryReportDirect、getIconProPerformanceReport、getIconProPerformanceReportDirect、getIconProUsageInsights、getIconProUsageInsightsDirect。 - 迁移、预热和 SVG:
createIconProMigrationPlan、createIconProMigrationPlanDirect、createIconProPreloadPlan、createIconProPreloadPlanDirect、inspectIconSvg、inspectIconSvgDirect、runIconProSelfTest、runIconProSelfTestDirect。 - 业务别名与资产:
registerIconAliases、registerIconAliasesDirect、resolveIconAlias、resolveIconAliasDirect、auditIconProAssets、auditIconProAssetsDirect。 - 事件与交付:
getIconProEventLog、getIconProEventLogDirect、clearIconProEventLog、clearIconProEventLogDirect、exportIconProSupportBundle、exportIconProSupportBundleDirect、exportIconProDeliveryReport、exportIconProDeliveryReportDirect。 - 客户接入和主题包:
createIconProOnboardingGuide、createIconProOnboardingGuideDirect、exportIconProDesignTokens、exportIconProDesignTokensDirect、inspectIconProTheme、inspectIconProThemeDirect、auditIconProAccessibility、auditIconProAccessibilityDirect、createIconProAcceptancePlan、createIconProAcceptancePlanDirect、exportIconProThemePackage、exportIconProThemePackageDirect。 - 配置与上下文:
exportIconProConfig、exportIconProConfigDirect、importLastIconProConfigDirect、getIconProCapabilities、createIconProContext。
| API | 说明 |
|---|---|
| registerIconSet / registerIconSetDirect | 注册业务图标集 |
| registerIconSetJson / registerIconSetJsonDirect | 通过 JSON 字符串批量导入业务图标集 |
| syncRemoteIconSet | 同步远程图标集清单 |
| getRemoteIconSetStatus | 查询远程图标集同步状态 |
| previewRemoteIconSetUpdate | 只读预览候选清单版本与增改删 |
| rollbackRemoteIconSet | 原子切换到上一稳定版本 |
| listIconSets | 查询图标集 |
| searchIcons | 搜索图标 |
| registerIconAliases / registerIconAliasesDirect | 注册业务别名 |
| resolveIconAlias / resolveIconAliasDirect | 解析业务别名 |
| createIconProMigrationPlan / createIconProMigrationPlanDirect | 生成旧图标迁移计划 |
| setIconFavorite / setIconFavoriteDirect | 设置收藏 |
| listRecentIcons | 查询最近使用 |
| registerIconTheme / registerIconThemeDirect | 注册主题 |
| getIconTheme | 查询主题 |
| applyIconStateBatch / applyIconStateBatchDirect | 批量切换状态 |
| preloadIcons / preloadIconsDirect | 预加载图标 |
| createIconProPreloadPlan / createIconProPreloadPlanDirect | 生成预加载计划 |
| configureIconCache | 配置缓存 |
| getIconCacheStats / getIconCacheStatsDirect | 查询缓存统计 |
| clearIconCache | 清理缓存 |
| inspectIconSvg / inspectIconSvgDirect | SVG 兼容体检 |
| auditIconProAssets / auditIconProAssetsDirect | 业务图标资产检查 |
| runIconProSelfTest / runIconProSelfTestDirect | 插件自检 |
| getIconProDiagnostics / getIconProDiagnosticsDirect | 运行诊断 |
| getIconProEventLog / getIconProEventLogDirect | 查询运行事件日志 |
| clearIconProEventLog / clearIconProEventLogDirect | 清理运行事件日志 |
| exportIconProConfig / exportIconProConfigDirect | 导出配置 |
| importIconProConfig / importLastIconProConfigDirect | 导入配置 |
| getIconProCapabilities | 查询当前平台能力 |
| createIconProContext | 创建组件控制上下文 |
| getIconProLibraryReport / getIconProLibraryReportDirect | 图标库画像报告 |
| getIconProPerformanceReport / getIconProPerformanceReportDirect | 性能画像报告 |
| getIconProUsageInsights / getIconProUsageInsightsDirect | 使用洞察报告 |
| auditIconProAccessibility / auditIconProAccessibilityDirect | 无障碍与合规质检 |
| createIconProOnboardingGuide / createIconProOnboardingGuideDirect | 客户接入向导 |
| exportIconProDesignTokens / exportIconProDesignTokensDirect | 品牌主题设计令牌 |
| inspectIconProTheme / inspectIconProThemeDirect | 主题视觉质检 |
| createIconProAcceptancePlan / createIconProAcceptancePlanDirect | 客户验收计划 |
| exportIconProThemePackage / exportIconProThemePackageDirect | 品牌主题交付包 |
| exportIconProSupportBundle | 售后诊断包 |
| exportIconProDeliveryReport | 上线交付报告 |
错误码
| 错误码 | 含义 | 说明 |
|---|---|---|
| 9030001 | unsupported | 当前平台暂不支持完整原生图标能力 |
| 9030002 | invalid params | 入参非法 |
| 9030003 | empty source | 图标资源为空 |
| 9030004 | icon set missing | 图标集未注册 |
| 9030005 | svg parse failed | SVG 内容解析失败 |
| 9030006 | network failed | 网络图标加载失败 |
| 9030007 | cache failed | 缓存读写失败 |
| 9030008 | context unavailable | 组件上下文不可用 |
| 9030009 | remote manifest invalid | 远程清单协议、字段、图标、别名或 SVG 安全校验失败 |
| 9030010 | remote payload rejected | 响应体、图标数量或调用限制超过安全上限 |
| 9030011 | rollback unavailable | 没有通过当前安全校验的上一稳定版本可供回滚 |
注意事项
svgText的优先级高于src,适合直接传入业务 SVG 文本。- 当前 SVG 解析聚焦安全子集,不执行 SVG 脚本,不承诺完整支持滤镜、渐变、mask、clipPath、symbol/use 等复杂 SVG 特性。
- 网络 SVG 只建议使用 HTTPS 地址;网络异常、响应不是 SVG 或解析失败时会进入错误回调。
disk / memory-disk在 App 端用于持久缓存;Web / 小程序为轻量降级能力。- 预加载结果会返回
failResults,可以直接展示预加载失败明细;网络 SVG 在preloadIconsDirect中不会同步下载,会提示改用preloadIcons或组件加载。 - 收藏、最近使用、业务图标集、业务别名和自定义主题在 App 端可持久化;降级平台不承诺同等持久化效果。
- 复杂页面建议先调用
preloadIcons或createIconProPreloadPlan,再渲染大批量图标。 - 同一远程 URL 的
setId不允许漂移,同一setId也不能由两个远程 URL 互相覆盖。 - 若后续接入三方 SVG parser、专用原生缓存目录或路径级动画,需要重新制作自定义基座。
作者系列 UTS 插件
以下为已在 DCloud 插件市场上架的作者系列 UTS 插件,可按业务场景组合使用。未列出的插件表示当前未确认公开市场页,后续上架后再补充。
| 插件 | 能力方向 | 插件市场 |
|---|---|---|
lizhao-nfc-pro |
NFC 标签读写、NDEF、IsoDep 与诊断 | 查看插件 |
lizhao-float-window |
悬浮窗、画中画、权限与诊断 | 查看插件 |
lizhao-device-id |
设备标识、隐私策略与诊断 | 查看插件 |
lizhao-scan-pro |
原生扫码、连续扫码、相册识别 | 查看插件 |
lizhao-choose-file |
原生文件选择、上传、进度与取消 | 查看插件 |
lizhao-bg-audio |
背景音频播放、队列、倍速与事件 | 查看插件 |
lizhao-smart-tts |
系统 TTS、云端合成、听书方案 | 查看插件 |
lizhao-share-plus |
系统分享、远程文件下载后分享 | 查看插件 |
lizhao-sqlite-pro |
原生 SQLite、迁移、备份与诊断 | 查看插件 |
lizhao-icon-pro |
SVG 图标组件、多主题与缓存 | 查看插件 |
lizhao-cast-screen |
DLNA 投屏、AirPlay 路由入口 | 查看插件 |
lizhao-call-kit |
电话、短信、通讯录原生能力 | 查看插件 |
lizhao-app-keepalive |
应用保活、唤醒、自愈与报告 | 查看插件 |
lizhao-doc-corrector |
文档扫描、矫正、增强与识别 | 查看插件 |
lizhao-emu-detect |
模拟器环境检测、风险评分与证据 | 查看插件 |
lizhao-gallery-pro |
相册媒体分页、筛选、缩略图与导出 | 查看插件 |
lizhao-video-thumb |
视频封面、批量取帧与 Base64 返回 | 查看插件 |
lizhao-ble |
BLE 扫描、连接、读写、通知与自动重连 | 查看插件 |
lizhao-sse-pro |
SSE、Line、JSONL 与 Raw 流式请求 | 查看插件 |
lizhao-pdf-pro |
PDF 阅读、签批、真实写回与页面处理 | 查看插件 |
lizhao-serial-port |
路径串口、USB 串口、多会话收发与诊断 | 查看插件 |
lizhao-wechat-kit |
微信登录、分享、支付、小程序与客服 | 查看插件 |
lizhao-video-editor |
视频裁剪、压缩、取帧与 FFmpeg/FFprobe | 查看插件 |
lizhao-vpn-pro |
企业 VPN、IKEv2、安全接入与脱敏诊断 | 查看插件 |

收藏人数:
购买源码授权版(
试用
赞赏(0)
下载 6486
赞赏 5
下载 12687822
赞赏 1956
赞赏
京公网安备:11010802035340号