小程序配置
全局配置
app.json
是小程序的全局配置文件,用来配置页面文件的路径、窗口样式、网络超时时间、多 tab 等属性的表现。app.json
示例如下:{ "pages": ["pages/index/index", "pages/logs/logs"], "window": { "navigationBarTitleText": "Demo" }, "tabBar": { "list": [ { "pagePath": "pages/index/index", "text": "首页" }, { "pagePath": "pages/logs/logs", "text": "日志" } ] }, "permission": { "scope.userLocation": { "desc": "用于提供个性化服务及体验" } }, "networkTimeout": { "request": 60000, "connectSocket": 60000, "uploadFile": 60000, "downloadFile": 60000 }, "cookie": { "enableStore": true }, "skeleton": { "page": { "pages/index/index": "pages/index/index.sk" }, "config": { "timeout": 1500 } } }
配置项说明
属性 | 类型 | 必填 | 描述 | 最低支持版本 |
entryPagePath | string | 否 | 小程序默认启动首页 | |
pages | string[] | 是 | 配置页面路径 | |
window | object | 否 | 配置默认页面的窗口表现 | |
tabBar | object | 否 | 配置底部 tab 的表现 | |
navigateToMiniProgramAppIdList | array | 否 | 1.15.0 | |
permission | object | 否 | 配置部分授权弹窗的副标题 | |
networkTimeout | object | 否 | 网络超时时间 | |
subpackages | array | 否 | 分包结构配置 | 1.88.0 |
preloadRule | object | 否 | 分包预下载规则 | 1.88.0 |
component2 | boolean | 否 | 支持在 created 生命周期中修改自定义组件初始数据,开启后,自定义组件将在 created 生命周期执行完成后开始渲染。从而解决当初始数据依赖计算逻辑时,自定义组件展示数据由默认值到真正数据切换时的闪动问题。注意:不涉及初始渲染数据的逻辑放到其他生命周期中,避免影响整体渲染耗时 | 2.45.0 |
cookie | object | 否 | Cookie 机制配置 | 2.45.0 |
skeleton | object | 否 | 框架骨架屏配置 | 2.47.0 |
workers | string | 否 | Worker 代码放置的目录或单个文件路径 | 2.78.0 |
referrerPolicy | object | 否 | 支持开发者自定义配置网络资源添加 referer 请求头,详情可见:网络资源请求添加 referer 规则 | 3.16.0 |
usePrivacyCheck | boolean | 否 | 启用隐私相关功能,详情可见:小程序隐私协议开发指南 | 3.19.0 |
publishVideoHookPriorityList | string[] | 否 | 配置 openType="uploadDouyinVideo" 以外的其他「视频发布和挂载」场景,使用 Page.onShareAppMessage 还是 Page.onShareAppMessage 钩子函数,详见 publishVideoHookPriorityList | 3.2.0 |
说 明:
- •小程序仅支持竖屏,不支持横屏配置;不支持配置窗口大小。
- •配置 navigationStyle: custom 需要在“小程序开发者平台-功能管理-页面结构自定义”申请权限,否则会阻碍代码包上传,2022 年 5 月 23 日会强制变动。但是 custom 即使申请通过了白名单,能力也会受到限制,主要体现在左上角按钮(新增样式,于 5 月 23 日上线)部分不能定制化。如果要获取左上角按钮位置信息可以参考 getCustomButtonBoundingClientRect。
entryPagePath
指定小程序的默认启动路径(首页)。如果不填,默认为 pages 列表的第一项。不支持带页面路径参数。
{ "entryPagePath": "pages/index/index" }
pages
这个字段用于配置小程序用到的所有页面路径,配置每项是
路径 + 文件名
这个结构。配置项的第一个页面路径就是小程序启动展示的第一个页面。需要注意:保证单个页面的 .json、.js、.ttml、.ttss 资源都放在每个页面路径的首层。
如开发目录是:
|____app.ttss |____app.json |____project.config.json |____pages | |____index | | |____index.js | | |____index.json | | |____index.ttml | | |____index.ttss |____app.js
那么
app.json
应该这样配置:{ "pages": ["pages/index/index"] }
window
这个字段用于设置小程序的状态栏、导航条、标题、窗口背景色。
注意:这里的窗口是指由端上控制的页面,与开发者用代码绘制的页面不是同一个概念。
因此对于
backgroundColor
这类配置项,与开发者在代码中编写的样式不会有优先级覆盖关系。属性 | 类型 | 默认值 | 描述 | 最低支持版本 |
navigationBarBackgroundColor | HexColor | #000000 | 导航栏背景颜色,如"#000000"; 不支持 alpha 值,如"#AABBCCDD"。 | |
navigationBarTextStyle | String | white | 导航栏标题颜色,仅支持 black/white,同时影响:标题颜色、右胶囊颜色、左返回箭头颜色。 | |
navigationBarTitleText | String | | 导航栏标题文字内容 | |
navigationStyle | String | default | | |
backgroundColor | HexColor | #ffffff | 窗口的背景色 | |
backgroundTextStyle | String | dark | 下拉 loading 的样式,仅支持 dark/light。 | |
backgroundColorTop | HexColor | 同 backgroundColor | 顶部窗口的背景色,仅 iOS 支持。 | |
backgroundColorBottom | HexColor | 同 backgroundColor | 底部窗口的背景色,仅 iOS 支持。 | |
enablePullDownRefresh | Boolean | false | 是否开启下拉刷新,详见页面相关事件处理函数。 | |
onReachBottomDistance | Number | 50 | 页面上拉触底事件触发时距页面底部距离,单位为 px。 | |
transparentTitle | String | N/A | 仅在 navigationStyle 为 default 时该字段生效,用来控制导航栏透明设置。支持:
默认为 none。 | |
skeleton | object | 否 | 框架骨架屏配置,仅支持配置 config 属性,优先级高于 app.json 。 | 2.47.0 |
tabBar
如果你的小程序包含多个 tab(客户端窗口的底部或顶部有 tab 栏可以切换页面),可以通过 tabBar 配置项指定 tab 栏的表现,以及 tab 切换时显示的对应页面。比如设置 tab 展示标题和 tab 颜色等。
属性 | 类型 | 必填 | 默认值 | 描述 |
color | HexColor | 是 | | tab 上的文字默认颜色 |
selectedColor | HexColor | 是 | | tab 上的文字选中时的颜色 |
backgroundColor | HexColor | 是 | | tab 的背景色 |
borderStyle | String | 否 | black | tabbar 上边框的颜色,仅支持 black/white。 |
list | Array | 是 | | tab 的列表,详见 list 属性说明,最少 2 个、最多 5 个 tab。 |
custom | Boolean | 否 | false |
其中 list 接受一个数组,数组中的每个项都是一个对象,其属性值如下:
属性 | 类型 | 必填 | 描述 |
pagePath | String | 是 | 页面路径,必须在 pages 中先定义。 |
text | String | 是 | tab 上按钮文字 |
iconPath | String | 否 | 图片路径,icon 大小限制为 40kb,建议尺寸为 81px * 81px。 注意:不支持网络图片路径。 |
selectedIconPath | String | 否 | 选中时的图片路径,icon 大小限制为 40kb,建议尺寸为 81px * 81px。 |
navigateToMiniProgramAppIdList
permission
部分授权弹窗的副标题支持开发者自定义,每次提审 后会审核该文案,如不通过,直接打回。
不可自定义副标题的权限是:个人信息、手机号。
副标题如下图所示:
如果开发者没有填写某个 scope,就使用该 scope 的默认文案,各 scope 的默认文案如下:
scope | 默认文案 |
scope.userLocation | 通过 GPS 或网络位置信息获取你的大致地理位置,用于向你推荐附近的服务。用于提供个性化服务及体验。 |
scope.address | 请求读取你在”抖音/抖音极速版/...“中的地址簿,帮助你填写地址信息。 |
scope.record | 用于录制音频,帮助你发布音视频内容,或使用其他需要使用此权限的功能。 |
scope.album | 用于读取相册中的图片、视频,或在相册中保存图片、视频。 |
scope.camera | 用于拍摄照片或视频,帮助你发布音视频内容,或使用其他需要使用此权限的功能。 |
networkTimeout
各类网络请求的超时时间,单位均为毫秒。