3、代码包规范:大小限制、文件结构与无用代码清理
说实话,代码包规范这事儿,我见过太多团队在审核时栽跟头了。
明明功能都做完了,结果提交审核,啪,被拒了。原因?代码包超了2MB限制。或者更冤的——包里塞了一堆没用的文件,审核员打开一看,直接判定代码质量不合格。
嗯,今天咱们就把这块彻底聊透。
3.1 代码包大小限制——2MB到底够不够?
微信小程序对代码包的限制是:主包不超过2MB,整个小程序不超过20MB。
你可能会问:2MB够干啥的?我随便写几个页面就超了吧?
其实不然。我刚开始做小程序时也这么想,后来发现,真正的问题不是2MB太小,而是我们往包里塞了太多不该塞的东西。
核心原则:代码包只放「运行时必须的代码和静态资源」。图片、视频、大字体文件,统统走CDN或云存储。
我个人的习惯是:
- 所有图片都压缩到WebP格式,能省30%-50%体积
- 图标用iconfont或SVG,不用PNG
- 超过100KB的静态资源,一律外链
举个例子,我之前接手过一个项目,代码包1.9MB,离2MB就差一点点。一查,发现assets目录下躺着一张1.2MB的启动图。我问团队为什么放本地?答曰:怕加载慢。我说:你放本地,审核都过不了,还谈什么加载?
小技巧:用微信开发者工具的「详情 -> 基本信息」里,可以实时看到代码包大小。开发过程中养成随手看一眼的习惯。
3.2 文件结构——别让审核员觉得你是个新手
代码包的文件结构,说白了就是你的「门面」。审核员打开你的包,一看目录乱七八糟,第一印象就差了。
我建议的标准结构是这样的:
miniprogram/
├── app.js
├── app.json
├── app.wxss
├── pages/ # 页面目录
│ ├── index/
│ │ ├── index.js
│ │ ├── index.wxml
│ │ ├── index.wxss
│ │ └── index.json
│ └── ...
├── components/ # 公共组件
│ ├── header/
│ └── footer/
├── utils/ # 工具函数
│ ├── api.js
│ └── format.js
├── assets/ # 静态资源(尽量少放)
│ └── icons/
└── styles/ # 全局样式
└── base.wxss
为什么要这么分?
- pages/:每个页面一个文件夹,命名清晰。我见过有人把所有页面js都扔在根目录,那叫一个乱。
- components/:组件单独管理,方便复用。别把组件和页面混在一起。
- utils/:公共函数放这里。api请求、日期格式化、数据校验,都归到这儿。
注意:不要用中文命名文件或文件夹。微信开发者工具虽然支持,但某些旧版本iOS真机上有概率报错。我踩过这个坑,排查了一下午才发现是中文路径的问题。
3.3 无用代码清理——别让垃圾拖累你
代码包超限,很多时候不是因为功能多,而是因为垃圾多。
我总结了几类最常见的「垃圾」:
- 未使用的页面:app.json里注册了10个页面,实际只用了5个。剩下的5个,代码还在包里躺着。
- 注释掉的代码:开发时注释掉的功能,上线前忘了删。尤其是大段的console.log和调试代码。
- 重复的依赖:两个组件引了不同版本的同一个库。比如lodash,一个用3.x,一个用4.x,全打包进去了。
- 无用的图片:设计稿里换了几版,旧图没删。一张图几百KB,几张下来就超了。
怎么清理?我分享几个实战方法:
- 用开发者工具的「代码依赖分析」:在工具里点「详情 -> 代码依赖分析」,能清楚看到每个文件的大小和引用关系。谁占地方大,一目了然。
- 全局搜索未引用的文件:比如搜一下某个图片文件名,如果整个项目里都没引用,直接删掉。
- 定期做「代码瘦身」:我习惯每个迭代结束后,花半小时专门清理无用代码。别等到审核前才慌。
避坑指南:我曾经因为一个未删除的console.log,导致审核被拒。审核员说「代码中包含调试信息,请清理后重新提交」。嗯,从那以后我上线前必做一次全局搜索console.log。
3.4 分包加载——2MB不够?那就拆
如果你的小程序确实功能多,2MB主包实在塞不下,那就用分包。
分包的核心思路是:主包只放首页和公共资源,其他页面按功能拆成子包,用户访问时才加载。
配置方式很简单,在app.json里加一个subPackages字段:
{
"pages": [
"pages/index/index",
"pages/login/login"
],
"subPackages": [
{
"root": "packageA",
"pages": [
"pages/category/category",
"pages/detail/detail"
]
},
{
"root": "packageB",
"pages": [
"pages/user/user",
"pages/setting/setting"
]
}
]
}
这样配置后,主包只包含首页和登录页,其他页面都在子包里。用户打开小程序时,只加载主包,速度飞快。
小提示:分包的总大小不能超过20MB。每个子包也不能超过2MB。嗯,这个限制其实挺宽松的,一般不会超。
3.5 实战检查清单
最后,我整理了一份检查清单。每次提交审核前,按这个过一遍:
| 检查项 | 说明 |
|---|---|
| 主包大小 | 是否小于2MB?如果接近,考虑分包 |
| 文件结构 | 是否按pages/components/utils分类? |
| 无用代码 | 是否删除了console.log、注释代码、未引用文件? |
| 静态资源 | 图片是否压缩?大文件是否外链? |
| 依赖管理 | 是否有重复的第三方库? |
| 分包配置 | 如果用了分包,配置是否正确? |
说实话,代码包规范这事儿,说难不难,说简单也不简单。关键是要养成习惯。你想想看,每次开发完都顺手清理一下,审核时就不会手忙脚乱。
好了,这一章就聊到这儿。下一章咱们聊聊「接口与数据安全」,那可是审核的重灾区。