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)显示正常