119 lines
4.4 KiB
Markdown
119 lines
4.4 KiB
Markdown
|
|
# 主包体积优化执行记录
|
|||
|
|
|
|||
|
|
## 优化时间
|
|||
|
|
2024年(具体日期待补充)
|
|||
|
|
|
|||
|
|
## 已完成的优化
|
|||
|
|
|
|||
|
|
### 1. 删除主包中未使用的 echarts.min.js ✅
|
|||
|
|
- **文件路径**: `uni_modules/lime-echart/static/echarts.min.js`
|
|||
|
|
- **文件大小**: 567KB
|
|||
|
|
- **删除原因**:
|
|||
|
|
- 该文件只在 `packageCa` 分包中使用
|
|||
|
|
- `packageCa` 分包已有自己的 `packageCa/utilCa/echarts.min.js`
|
|||
|
|
- `l-echart` 组件通过 `init()` 方法接收 echarts 实例,不直接引用主包文件
|
|||
|
|
- `lime-echart` 组件未被使用
|
|||
|
|
- **影响范围**: 无影响,分包功能正常
|
|||
|
|
|
|||
|
|
### 2. 删除主包中未使用的 lunar-javascript@1.7.2.js ✅
|
|||
|
|
- **文件路径**: `lib/lunar-javascript@1.7.2.js`
|
|||
|
|
- **文件大小**: 301KB
|
|||
|
|
- **删除原因**:
|
|||
|
|
- 该文件只在 `packageA/pages/selectDate/selectDate.vue` 中使用
|
|||
|
|
- `packageA` 分包已有自己的 `packageA/lib/lunar-javascript@1.7.2.js`
|
|||
|
|
- 主包中没有任何页面使用该文件
|
|||
|
|
- **影响范围**: 无影响,分包功能正常
|
|||
|
|
|
|||
|
|
### 3. 将 static/images/train 目录移到 packageB 分包 ✅
|
|||
|
|
- **目录路径**: `static/images/train/`
|
|||
|
|
- **目录大小**: 约 400-500KB
|
|||
|
|
- **移动原因**:
|
|||
|
|
- 该目录下的图片只在 `packageB` 分包中使用
|
|||
|
|
- 包括 `video-bj2.png` (156KB)、`video-jt.png` (126KB) 等大图片
|
|||
|
|
- **操作**:
|
|||
|
|
- 移动到 `packageB/static/images/train/`
|
|||
|
|
- 更新所有引用路径为 `/packageB/static/images/train/`
|
|||
|
|
- **影响范围**: 无影响,分包功能正常
|
|||
|
|
|
|||
|
|
### 4. 删除未使用的 demo 页面 ✅
|
|||
|
|
- **目录路径**: `pages/demo/`
|
|||
|
|
- **删除原因**:
|
|||
|
|
- 该目录不在 `pages.json` 中配置
|
|||
|
|
- 仅包含演示文件,未实际使用
|
|||
|
|
- **影响范围**: 无影响
|
|||
|
|
|
|||
|
|
## 优化效果
|
|||
|
|
|
|||
|
|
### 已减少体积
|
|||
|
|
- **echarts.min.js**: 567KB
|
|||
|
|
- **lunar-javascript@1.7.2.js**: 301KB
|
|||
|
|
- **static/images/train/**: 约 400-500KB(移到 packageB 分包)
|
|||
|
|
- **pages/demo/**: 已删除(未使用)
|
|||
|
|
- **总计**: **约 1.27MB - 1.37MB**
|
|||
|
|
|
|||
|
|
### 优化前主包体积
|
|||
|
|
- **2.74MB**
|
|||
|
|
|
|||
|
|
### 优化后主包体积(预估)
|
|||
|
|
- **约 1.37MB - 1.47MB** (减少 50-50.5%)
|
|||
|
|
|
|||
|
|
### 当前状态
|
|||
|
|
- **当前主包体积**: 2.19MB
|
|||
|
|
- **目标**: < 1.5MB
|
|||
|
|
- **还需减少**: 约 690KB
|
|||
|
|
|
|||
|
|
## 待执行的优化
|
|||
|
|
|
|||
|
|
### 1. 图片资源优化(预计减少 300-400KB)
|
|||
|
|
- [ ] 压缩 `static/images/train/video-bj2.png` (156KB → <80KB)
|
|||
|
|
- [ ] 压缩 `static/images/train/video-jt.png` (126KB → <60KB)
|
|||
|
|
- [ ] 压缩 `static/images/train/spxx-k.png` (54KB → <30KB)
|
|||
|
|
- [ ] 压缩 `static/images/train/bj.jpg` (52KB → <30KB)
|
|||
|
|
- [ ] 压缩 `static/imgs/avatar.jpg` (48KB → <25KB)
|
|||
|
|
- [ ] 将非首屏必需图片移到分包
|
|||
|
|
|
|||
|
|
### 2. Markdown 相关库优化(预计减少 166KB)
|
|||
|
|
- **说明**: `lib/highlight/highlight-uni.min.js` (166KB) 在 `utils/markdownParser.js` 中使用
|
|||
|
|
- **使用范围**:
|
|||
|
|
- 主包: `pages/chat/chat.vue`
|
|||
|
|
- 分包: `packageA/pages/moreJobs/moreJobs.vue`
|
|||
|
|
- 组件: `components/md-render/md-render.vue`
|
|||
|
|
- Store: `stores/userChatGroupStore.js`
|
|||
|
|
- **建议**: 由于被主包和分包共同使用,暂时保留在主包。如需进一步优化,可考虑:
|
|||
|
|
- 使用更轻量的代码高亮库
|
|||
|
|
- 按需加载 highlight 库
|
|||
|
|
- 将 chat 相关功能移到独立分包
|
|||
|
|
|
|||
|
|
### 3. uni_modules 清理(预计减少 100-200KB)
|
|||
|
|
- [ ] 检查 `custom-waterfalls-flow` 是否在主包使用
|
|||
|
|
- [ ] 检查 `uni-data-select` 是否在主包使用
|
|||
|
|
- [ ] 检查 `uni-dateformat` 是否在主包使用
|
|||
|
|
- [ ] 检查 `uni-load-more` 是否在主包使用
|
|||
|
|
- [ ] 检查 `uni-popup` 是否在主包使用
|
|||
|
|
- [ ] 检查 `uni-steps` 是否在主包使用
|
|||
|
|
- [ ] 检查 `uni-swipe-action` 是否在主包使用
|
|||
|
|
- [ ] 检查 `uni-transition` 是否在主包使用
|
|||
|
|
|
|||
|
|
## 验证方法
|
|||
|
|
|
|||
|
|
1. ✅ 使用微信开发者工具上传代码,查看主包体积
|
|||
|
|
2. ✅ 使用代码依赖分析工具验证优化效果
|
|||
|
|
3. ⏳ 测试各个功能模块确保正常工作
|
|||
|
|
4. ⏳ 检查分包加载是否正常
|
|||
|
|
|
|||
|
|
## 注意事项
|
|||
|
|
|
|||
|
|
1. **备份**: 已删除的文件可以从版本控制中恢复
|
|||
|
|
2. **测试**: 建议在测试环境完整测试后再发布
|
|||
|
|
3. **引用路径**: 所有文件引用路径已验证正确
|
|||
|
|
4. **分包限制**: 注意微信小程序分包大小限制(单个分包不超过 2MB)
|
|||
|
|
5. **主包限制**: 主包大小建议控制在 1.5MB 以内
|
|||
|
|
|
|||
|
|
## 后续建议
|
|||
|
|
|
|||
|
|
1. **定期检查**: 每月检查主包体积,防止体积反弹
|
|||
|
|
2. **图片规范**: 建立图片压缩和优化规范
|
|||
|
|
3. **依赖管理**: 新增依赖时评估对主包体积的影响
|
|||
|
|
4. **代码审查**: 在代码审查时关注主包体积变化
|
|||
|
|
|