3、项目结构解析:全局配置文件、页面配置文件、项目配置文件、sitemap配置
说实话,我刚接触小程序那会儿,最头疼的就是这一堆配置文件。每个文件管什么?哪个是必须的?哪个可以删?今天咱们就把这四个核心文件掰开揉碎了讲清楚。
3.1 全局配置文件(app.json)—— 小程序的「总管家」
app.json 是小程序的全局配置,说白了就是整个 App 的「总管家」。它决定了你的小程序长什么样、有哪些页面、能做什么事。
我个人习惯,每次新建项目第一件事就是打开 app.json,先把页面路径配好。为什么?因为小程序的路由系统全靠它来注册。
核心配置项一览
| 配置项 | 说明 | 是否必填 |
|---|---|---|
| pages | 页面路径列表,第一项为首页 | 是 |
| window | 全局的默认窗口表现 | 否 |
| tabBar | 底部 tab 栏配置 | 否 |
| networkTimeout | 网络超时时间 | 否 |
| debug | 是否开启调试模式 | 否 |
来看一个实际项目中的 app.json 示例:
{
"pages": [
"pages/index/index",
"pages/logs/logs",
"pages/detail/detail"
],
"window": {
"navigationBarBackgroundColor": "#ffffff",
"navigationBarTitleText": "我的小程序",
"navigationBarTextStyle": "black",
"backgroundColor": "#f5f5f5"
},
"tabBar": {
"color": "#999999",
"selectedColor": "#07c160",
"list": [
{
"pagePath": "pages/index/index",
"text": "首页",
"iconPath": "images/home.png",
"selectedIconPath": "images/home_active.png"
},
{
"pagePath": "pages/logs/logs",
"text": "日志",
"iconPath": "images/log.png",
"selectedIconPath": "images/log_active.png"
}
]
}
}
我的经验:pages 数组的顺序很重要。第一项就是小程序的首页。我曾经把首页写在了第二位,结果一打开 App 直接跳到了日志页,用户一脸懵。嗯,这个坑踩过一次就记住了。
3.2 页面配置文件(page.json)—— 每个页面的「私人定制」
每个页面都可以有自己的 page.json,用来覆盖全局配置。你想想看,如果所有页面都用一样的导航栏颜色,那多单调?
page.json 能配置什么?说白了就是 window 里的那些属性,外加一些页面专属的配置。
{
"navigationBarBackgroundColor": "#07c160",
"navigationBarTitleText": "商品详情",
"navigationBarTextStyle": "white",
"enablePullDownRefresh": true,
"backgroundColor": "#ffffff"
}
这里有个细节要注意:page.json 里的配置会覆盖 app.json 中 window 的同名配置。但如果你没写,就继承全局的。
避坑指南:我曾经在 page.json 里只配了 navigationBarTitleText,结果发现导航栏颜色变成了默认的黑色。为什么?因为没写 navigationBarBackgroundColor,它不会继承全局配置,而是用默认值。所以要么全写,要么不写。
3.3 项目配置文件(project.config.json)—— 开发者的「工具箱」
这个文件是给开发者工具看的,跟小程序运行没关系。它记录了你的项目设置、编译选项、代码保护配置等。
我个人觉得,这个文件最实用的地方在于团队协作。你想想看,如果每个人打开项目都要重新配一遍工具设置,那多浪费时间?
{
"description": "项目配置文件",
"packOptions": {
"ignore": []
},
"setting": {
"urlCheck": true,
"es6": true,
"postcss": true,
"minified": true
},
"compileType": "miniprogram",
"libVersion": "3.0.0",
"projectname": "my-mini-program"
}
| 配置项 | 作用 |
|---|---|
| setting.urlCheck | 是否检查安全域名 |
| setting.es6 | 是否启用 ES6 转 ES5 |
| setting.minified | 是否压缩代码 |
| libVersion | 基础库版本 |
我的习惯:开发时把 urlCheck 设为 false,不然每次调试都要配域名,太麻烦。但上线前一定要改回 true,否则真机测试会报错。
3.4 sitemap 配置 —— 小程序的「搜索引擎优化」
sitemap 配置是微信小程序特有的,用来告诉微信搜索你的小程序里哪些页面可以被索引。说白了,就是让用户能在微信里搜到你的内容。
这个文件叫 sitemap.json,放在项目根目录。它的结构很简单:
{
"rules": [
{
"action": "allow",
"page": "pages/index/index"
},
{
"action": "disallow",
"page": "pages/logs/logs"
}
]
}
规则就两个动作:allow(允许索引)和 disallow(禁止索引)。默认情况下,所有页面都是允许索引的。
重要提醒:sitemap 配置只影响微信搜索的收录,不影响小程序本身的运行。但如果你想让自己的小程序被更多人搜到,这个文件就很重要了。
我记得有一次,客户说他的小程序在微信里搜不到。我一看,sitemap.json 里把首页给 disallow 了。嗯,这种低级错误,犯过一次就记住了。
3.5 四个文件的协作关系
最后咱们总结一下这四个文件的关系:
- app.json:全局配置,所有页面共享
- page.json:页面级配置,覆盖全局
- project.config.json:开发工具配置,跟运行无关
- sitemap.json:搜索索引配置,跟用户搜索有关
你想想看,这四个文件各司其职,缺一不可。app.json 是骨架,page.json 是血肉,project.config.json 是工具,sitemap.json 是门面。理解了它们,你就掌握了小程序项目结构的核心。
最后一个小技巧:如果你发现某个页面样式不对,先检查 page.json 有没有覆盖全局配置。如果发现工具编译报错,先看 project.config.json 的 setting 配置。排查问题要有顺序,别瞎猜。