162 lines
4.9 KiB
Markdown
162 lines
4.9 KiB
Markdown
|
|
# 主包体积进一步优化方案
|
|||
|
|
|
|||
|
|
## 当前状态
|
|||
|
|
- **优化前主包体积**: 2.74MB
|
|||
|
|
- **第一次优化后**: 2.19MB (已减少 550KB)
|
|||
|
|
- **目标**: < 1.5MB
|
|||
|
|
- **还需减少**: 约 690KB
|
|||
|
|
|
|||
|
|
## 已完成的优化 ✅
|
|||
|
|
|
|||
|
|
### 1. 删除未使用的大文件 (868KB)
|
|||
|
|
- ✅ `uni_modules/lime-echart/static/echarts.min.js` (567KB)
|
|||
|
|
- ✅ `lib/lunar-javascript@1.7.2.js` (301KB)
|
|||
|
|
|
|||
|
|
### 2. 移动 train 图片到分包 (预计 400-500KB)
|
|||
|
|
- ✅ 将 `static/images/train/` 目录移到 `packageB/static/images/train/`
|
|||
|
|
- ✅ 更新所有引用路径
|
|||
|
|
|
|||
|
|
**已减少总计**: 约 1.27MB - 1.37MB
|
|||
|
|
|
|||
|
|
## 进一步优化建议
|
|||
|
|
|
|||
|
|
### 方案一:优化图片资源(预计减少 200-300KB)
|
|||
|
|
|
|||
|
|
#### 1.1 压缩主包中的大图片
|
|||
|
|
需要压缩的图片文件:
|
|||
|
|
- `static/icon/background2.png` - 检查大小
|
|||
|
|
- `static/imgs/avatar.jpg` (48KB) → 目标: <25KB
|
|||
|
|
- `static/imgs/fristEntry.png` - 检查大小
|
|||
|
|
- 其他 `static/icon/` 目录下的图片
|
|||
|
|
|
|||
|
|
**工具推荐**:
|
|||
|
|
- [TinyPNG](https://tinypng.com/) - PNG压缩
|
|||
|
|
- [Squoosh](https://squoosh.app/) - 在线图片压缩
|
|||
|
|
- [ImageOptim](https://imageoptim.com/) - 批量压缩
|
|||
|
|
|
|||
|
|
#### 1.2 将非首屏必需图片移到分包
|
|||
|
|
- 将 `static/imgs/` 目录移到分包(如果只在特定页面使用)
|
|||
|
|
- 检查 `static/icon/` 中哪些图标可以移到分包
|
|||
|
|
|
|||
|
|
### 方案二:优化 Markdown 相关库(预计减少 296KB)
|
|||
|
|
|
|||
|
|
#### 2.1 当前情况
|
|||
|
|
- `lib/highlight/highlight-uni.min.js`: 203KB
|
|||
|
|
- `lib/markdown-it.min.js`: 93KB
|
|||
|
|
- 总计: 296KB
|
|||
|
|
|
|||
|
|
#### 2.2 使用范围
|
|||
|
|
- 主包: `pages/chat/chat.vue` (主包页面)
|
|||
|
|
- 分包: `packageA/pages/moreJobs/moreJobs.vue`
|
|||
|
|
- 组件: `components/md-render/md-render.vue`
|
|||
|
|
- Store: `stores/userChatGroupStore.js`
|
|||
|
|
|
|||
|
|
#### 2.3 优化方案
|
|||
|
|
**方案A**: 将 chat 页面移到独立分包(推荐)
|
|||
|
|
- 创建新分包 `packageChat`
|
|||
|
|
- 将 `pages/chat/` 移到分包
|
|||
|
|
- 将 markdown 相关库移到分包
|
|||
|
|
- **预计减少**: 296KB + chat页面代码体积
|
|||
|
|
|
|||
|
|
**方案B**: 使用更轻量的代码高亮库
|
|||
|
|
- 替换 `highlight-uni.min.js` 为更轻量的库
|
|||
|
|
- 或移除代码高亮功能(如果非必需)
|
|||
|
|
|
|||
|
|
**方案C**: 按需加载
|
|||
|
|
- 使用动态 import 按需加载 markdown 库
|
|||
|
|
- 只在需要时加载
|
|||
|
|
|
|||
|
|
### 方案三:检查并优化 components 目录
|
|||
|
|
|
|||
|
|
#### 3.1 检查组件使用情况
|
|||
|
|
需要检查的组件:
|
|||
|
|
- `components/md-render/` - 如果只在 chat 使用,可移到分包
|
|||
|
|
- `components/area-cascade-picker/` - 检查使用范围
|
|||
|
|
- 其他大型组件
|
|||
|
|
|
|||
|
|
#### 3.2 优化策略
|
|||
|
|
- 将只在分包使用的组件移到对应分包
|
|||
|
|
- 将大型组件按需加载
|
|||
|
|
|
|||
|
|
### 方案四:检查 pages 目录
|
|||
|
|
|
|||
|
|
#### 4.1 可以移到分包的页面
|
|||
|
|
检查以下页面是否可以移到分包:
|
|||
|
|
- `pages/complete-info/` - 补全信息相关(可能可以移到 packageA)
|
|||
|
|
- `pages/job/` - 发布岗位相关(可能可以移到 packageA)
|
|||
|
|
- `pages/demo/` - 演示页面(可以删除或移到测试分包)
|
|||
|
|
|
|||
|
|
#### 4.2 优化策略
|
|||
|
|
- 将非核心功能页面移到分包
|
|||
|
|
- 删除测试/演示页面
|
|||
|
|
|
|||
|
|
### 方案五:清理未使用的 uni_modules
|
|||
|
|
|
|||
|
|
#### 5.1 检查列表
|
|||
|
|
检查以下模块是否在主包使用:
|
|||
|
|
- `custom-waterfalls-flow`
|
|||
|
|
- `uni-data-select`
|
|||
|
|
- `uni-dateformat`
|
|||
|
|
- `uni-load-more`
|
|||
|
|
- `uni-popup`
|
|||
|
|
- `uni-steps`
|
|||
|
|
- `uni-swipe-action`
|
|||
|
|
- `uni-transition`
|
|||
|
|
|
|||
|
|
#### 5.2 优化策略
|
|||
|
|
- 如果只在分包使用,可以考虑移除主包引用
|
|||
|
|
- 使用 `easycom` 配置确保组件能正确加载
|
|||
|
|
|
|||
|
|
### 方案六:优化 common 目录
|
|||
|
|
|
|||
|
|
#### 6.1 检查文件
|
|||
|
|
- `common/vendor.js` - 如果存在,检查是否可以优化
|
|||
|
|
- `common/globalFunction.js` - 检查是否可以拆分
|
|||
|
|
- 其他 common 文件
|
|||
|
|
|
|||
|
|
## 推荐执行顺序
|
|||
|
|
|
|||
|
|
### 优先级1:立即执行(预计减少 300-400KB)
|
|||
|
|
1. ✅ 压缩主包中的大图片
|
|||
|
|
2. ✅ 将 `pages/demo/` 删除或移到测试分包
|
|||
|
|
3. ✅ 检查并清理未使用的 uni_modules
|
|||
|
|
|
|||
|
|
### 优先级2:中期执行(预计减少 296KB)
|
|||
|
|
1. 将 chat 页面移到独立分包(推荐方案A)
|
|||
|
|
2. 或使用更轻量的代码高亮库(方案B)
|
|||
|
|
|
|||
|
|
### 优先级3:长期优化
|
|||
|
|
1. 优化 components 目录
|
|||
|
|
2. 优化 pages 目录结构
|
|||
|
|
3. 优化 common 目录
|
|||
|
|
|
|||
|
|
## 预期效果
|
|||
|
|
|
|||
|
|
| 优化项 | 预计减少 | 优先级 |
|
|||
|
|
|--------|---------|--------|
|
|||
|
|
| 压缩图片 | 200-300KB | 🔴 高 |
|
|||
|
|
| 移动 chat 页面到分包 | 296KB+ | 🔴 高 |
|
|||
|
|
| 删除 demo 页面 | 50-100KB | 🟡 中 |
|
|||
|
|
| 清理 uni_modules | 100-200KB | 🟡 中 |
|
|||
|
|
| 优化 components | 50-150KB | 🟢 低 |
|
|||
|
|
|
|||
|
|
**总计预计减少**: 696KB - 1046KB
|
|||
|
|
|
|||
|
|
**优化后主包体积**: 约 1.14MB - 1.49MB ✅
|
|||
|
|
|
|||
|
|
## 注意事项
|
|||
|
|
|
|||
|
|
1. **备份**: 在执行优化前,请先备份项目
|
|||
|
|
2. **测试**: 每个优化步骤后都要进行完整测试
|
|||
|
|
3. **引用路径**: 确保所有文件引用路径正确更新
|
|||
|
|
4. **分包限制**: 注意微信小程序分包大小限制(单个分包不超过 2MB)
|
|||
|
|
5. **主包限制**: 主包大小必须控制在 1.5MB 以内
|
|||
|
|
|
|||
|
|
## 验证方法
|
|||
|
|
|
|||
|
|
1. 使用微信开发者工具上传代码,查看主包体积
|
|||
|
|
2. 使用代码依赖分析工具验证优化效果
|
|||
|
|
3. 测试各个功能模块确保正常工作
|
|||
|
|
4. 检查分包加载是否正常
|
|||
|
|
|