更新记录

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、安全接入与脱敏诊断 查看插件

隐私、权限声明

1. 本插件需要申请的系统权限列表:

网络 SVG 预加载需要网络访问能力

2. 本插件采集的数据、发送的服务器地址、以及数据用途说明:

图标名称、SVG 文本、网络图标地址、主题色和缓存状态

3. 本插件是否包含广告,如包含需详细说明广告表达方式、展示频率:

无