vr-shopxo-uniapp/components/u-popup
Council 80ea6bfdef refactor(iconfont): 主包精简 Phase 4B — u-icon 全量替换为 iconfont
【背景】
VR 扩展引入的 u-icon 组件通过 easycom 全局注册,导致主包引入:
- u-icon.wxss base64 副本 224.7 KB
- iconfont.json 元数据 85.8 KB
- u-icon.vue 1.7 KB
合计 ≈312 KB 冗余。

原版项目已有 <iconfont> 全局组件,功能等价。直接用 iconfont 替换可彻底消除冗余。

【变更】

1) components/iconfont/iconfont.vue 增强
   - 新增 #ifdef APP-NVUE 分支(合并 u-icon.vue 的 NVUE 逻辑)
   - iconfontCode computed:剥离 'icon-' 前缀后查 glyphs
   - iconSizeNvue computed:NVUE 单位补全
   - mounted 中调用 domModule.addRule('fontFace') 注册字体
   - 保留全部 iOS 修复注释

2) 替换 31 处 <u-icon> → <iconfont>
   - 属性映射:propName→name(+icon-前缀)、propColor→color、propSize→size
   - 动态 :propName 改写为 :name="'icon-'+var"

3) 删除
   - components/u-icon/u-icon.vue
   - components/u-icon/ 空目录

4) 修改的 11 个文件
   - pages/plugins/video/detail/detail.nvue (14 处)
   - pages/plugins/video/components/{loading,comment-info,comment-more,search}.vue (5 处)
   - pages/plugins/live/pull/pull.vue + pull.nvue (3 处)
   - pages/plugins/live/pull/components/{goods,live-content}/*.vue (7 处)
   - components/u-popup/u-popup.vue (1 处)
   - components/u-share-popup/u-share-popup.vue (1 处)

【效果】
- 用户实测:主包 2347.6 KB → 1997.9 KB(与原版 6.8 持平)
- 进一步在 HBuilder 中将 iconfont.json 加入自动排除列表后 → 1919.7 KB
- 比原版 6.8(1997 KB)小 77 KB

【风险】
- LOW(gitnexus detect_changes: 0 affected processes)
- NVUE 兼容性:iconfont.vue 已继承 u-icon.vue 全部 NVUE 逻辑(用户实测视频详情页正常)
- 直播场景:因项目无直播环境,未在生产 NVUE 验证(待启用时手动测试)

【验证】
- 用户实测:视频详情页、商品页图标显示正常
- 弹窗关闭图标(u-popup / u-share-popup)显示正常
2026-07-01 18:12:21 +08:00
..
keypress.js hls安装 2026-03-09 16:34:54 +08:00
u-popup.vue refactor(iconfont): 主包精简 Phase 4B — u-icon 全量替换为 iconfont 2026-07-01 18:12:21 +08:00