全局配置
基础库 3.8.0 开始支持夜间主题(darkmode),低版本需做兼容处理
app.json
文件用来对bilibili小程序进行全局配置,决定页面文件的路径、窗口表现、设置网络超时时间、设置多 tab, 夜间主题等。
以下是一个包含了部分常用配置选项的app.json
:
{
"pages": [
{
"path": "/pages/index",
"hasNavigationBar": true,
"enableScrollEvent": true,
"navigationBarTitleText": "首页",
"navigationBarBackgroundColor": "#FB7299",
"navigationBarTextStyle": "white",
"backgroundColor": "#ffffff",
"enablePullDownRefresh": false,
"onReachBottomDistance": 50,
"disableScroll": false
},
{
"path": "/pages/detail"
}
],
// 以下属性值为默认值,可以被pages单个页面配置覆盖
"window": {
"hasNavigationBar": false,
"enableScrollEvent": false,
"navigationBarTitleText": "",
"navigationBarBackgroundColor": "#FB7299",
"navigationBarTextStyle": "white",
"backgroundColor": "#ffffff",
"enablePullDownRefresh": false,
"onReachBottomDistance": 50,
"disableScroll": false
},
"tabBar": {
"color": "#000000",
"selectedColor": "#FB7299",
"backgroundColor": "#ffffff",
"borderStyle": "",
"position": "bottom",
"list": [
{
"pagePath": "/pages/index",
"text": "首页",
"iconPath": "/static/icon.png",
"selectedIconPath": "/static/icon-selected.png"
},
{
"pagePath": "/pages/detail",
"text": "详情"
}
]
},
"networkTimeout": {
"request": 10000,
"downloadFile": 10000
},
"darkmode": true,
"darkConfig": {
"pages": [{
"path": "/pages/index",
"navigationBarBackgroundColor": "#531D11",
"navigationBarTextStyle": "white",
"backgroundColor": "#83BB1F",
"backgroundColorTop": "#1f1f1f",
"backgroundColorBottom": "#191919"
}],
"window": {
"navigationBarBackgroundColor": "#3cc51f",
"navigationBarTextStyle": "white",
"backgroundColor": "#efefef",
"backgroundColorTop": "#ffffff",
"backgroundColorBottom": "#1f1f1f"
},
"tabBar": {
"color": "#191919",
"selectedColor": "#eeeeee",
"backgroundColor": "#3cc51f",
"borderStyle": "white",
"list": [{
"pagePath": "/pages/index",
"iconPath": "/static/icon.png",
"selectedIconPath": "/static/icon-selected.png"
}]
}
}
}
app.json 配置项列表
属性 | 类型 | 必填 | 说明 | 版本 |
---|---|---|---|---|
pages | array | 是 | 页面路径列表以及页面级别配置信息 | |
window | object | 否 | 全局的默认窗口表现 | |
tabBar | object | 否 | TabBar的设置 | |
networkTimeout | object | 否 | 网络超时时间 | |
darkmode | boolean | 否 | 是否开启darkMode | 3.8.0 |
darkConfig | object | 否 | darkMode的配置 | 3.8.0 |
pages
用于指定小程序由哪些页面组成,每一项都对应一个页面的 路径+文件名 信息。按照约定,/pages/{pageName}/index.vue
,pageName
目录下的index.vue作为page的入口文件。(此处跟微信小程序有差异)
数组的第一项代表小程序的初始页面(首页)。小程序中新增/减少页面,都需要对 pages 数组进行修改。
如开发目录为:
├── app.js
├── app.json
├── app.less
├── pages
│ │── index
│ │ └── index.vue
│ └── logs
│ ├── index.vue
│ └── logs.js
则需要在 app.json 中写:(此处跟微信小程序有差异,页面路径以/
开头)
{
"pages": [
{
"path": "/pages/index"
},
{
"path": "/pages/logs"
}
]
}
window
全局设置小程序的状态栏、导航条、标题、窗口背景色等。
属性 | 类型 | 默认值 | 说明 | 版本 |
---|---|---|---|---|
hasNavigationBar | boolean | false | 页面是否有NavigationBar | |
enableScrollEvent | boolean | false | 是否触发页面滚动相关的事件,如onPageScroll 和onReachBottom | |
navigationBarBackgroundColor | string | #fb7299 | 导航栏背景颜色 | |
navigationBarTextStyle | string | white | 导航栏标题和状态栏文字颜色,仅支持 black / white | |
navigationBarTitleText | string | 导航栏标题文字内容 | ||
backgroundColor | string | #ffffff | 窗口的背景色 | |
enablePullDownRefresh | boolean | false | 是否全局开启下拉刷新。 | |
onReachBottomDistance | number | 50 | 页面上拉触底事件触发时距页面底部距离,单位为px。 | |
disableScroll | boolean | false | 设置为 true 则webview整体不能上下滚动,不考虑前端实现的滚动 |
注:以上属性也可配置在 pages
的每个对象里,只对配置的page页面生效,并会覆盖 window
下的对应的属性配置
tabBar
如果小程序是一个多 tab 应用(客户端窗口的底部或顶部有 tab 栏可以切换页面),可以通过 tabBar 配置项指定 tab 栏的表现,以及 tab 切换时显示的对应页面。
开发者注意:
tabBar承载的页面,一定有NavigationBar,且page中声明的设定除hasNavigationBar之外均有效,如果page中未声明NavigationBar的设定,则继承window中的声明。
tabBar只支持2-5个Tab,不足2个Tab,则不生成tabBar(相当于没有配置tabBar),超过5个,取tabBar的list前5个Tab展示。
需通过 bl.switchTab 才能跳转到TabBar中承载的页面,bl.navigateTo 不起作用。
属性 | 类型 | 必填 | 默认值 | 描述 | 版本 |
---|---|---|---|---|---|
color | string | 否 | #000000 | tab 上的文字默认颜色 | |
selectedColor | string | 否 | #fb7299 | tab 上的文字选中时的颜色 | |
backgroundColor | string | 否 | #ffffff | tabBar 的背景色 | |
borderStyle | string | 否 | black | tabbar边框的颜色,如果为空则无边框。如果position是bottom,边框在上,position是top,边框在下,需要支持HexColor和black/white两个特殊颜色配置。边框是1物理像素的细线。 | |
list | array | 是 | tab 的列表,详见 list 属性说明,最少2个、最多5个 tab,默认选中第一个tab | ||
position | string | 否 | bottom | tabBar的位置,仅支持 bottom/top。如果当前页面有navigationBar,position为top时,tabBar在navigationBar下方 |
其中 list 接受一个数组,只能配置最少2个、最多5个 tab。tab 按数组的顺序排序,每个项都是一个对象,其属性值如下:
属性 | 类型 | 必填 | 说明 | 版本 |
---|---|---|---|---|
pagePath | string | 是 | 页面路径,必须在 pages 中先定义 | |
text | string | 是 | tab 上按钮文字,超出显示范围截断 | |
iconPath | string | 否 | 图片路径,图片需放在根目录的static目录下,写法为'/static/path',icon 大小限制为40kb,建议尺寸为 81px * 81px,不支持网络图片。当 postion 为 top 时,不显示 icon。 | |
selectedIconPath | string | 否 | 选中时的图片路径,图片需放在根目录的static目录下,写法为'/static/path',icon 大小限制为40kb,建议尺寸为 81px * 81px,不支持网络图片。当 postion 为 top 时,不显示 icon。 |
networkTimeout
各类网络请求的超时时间,单位均为毫秒。
属性 | 类型 | 必填 | 默认值 | 说明 | 版本 |
---|---|---|---|---|---|
request | number | 否 | 60000 | bl.request 的超时时间,单位毫秒。 | |
uploadFile | number | 否 | 60000 | bl.uploadFile 的超时时间,单位毫秒。 | |
downloadFile | number | 否 | 60000 | bl.downloadFile 的超时时间,单位毫秒。 |
darkmode(3.8.0起支持)
通过配置 "darkmode": true
表示当前小程序可适配夜间主题,基础组件包括 xxxx、xxxx、均会根据 APP 主题展示对应主题的指定样式
darkConfig(3.8.0起支持)
夜间模式的详细配置。
属性 | 类型 | 必填 | 说明 | 版本 |
---|---|---|---|---|
pages | array | 否 | 夜间主题下页面路径列表以及页面级别配置信息 | 3.8.0 |
window | object | 否 | 夜间主题下全局的默认窗口表现 | 3.8.0 |
tabBar | object | 否 | 夜间主题下TabBar的设置 | 3.8.0 |
监听主题切换事件
- 可在
App.onThemeChange
回调中接收主题切换事件(只有 iOS 支持)。 - 通过
bl.onThemeChange
监听主题变化。 - 通过
bl.offThemeChange
取消监听。
Tips
- 如果 声明了
"darkmode":true
,bl.getSystemInfo
或bl.getSystemInfoSync
的返回结果中会包含theme
属性,值为light
或dark
,且navigationBarTextStyle
配置项在 APP 黑色主题下不生效。如果 未声明"darkmode":true
,则无法获取到theme
属性。 - 如果配置了
pages
,pages
的可配置属性包括:path
,navigationBarBackgroundColor
,navigationBarTextStyle
,backgroundColor
,backgroundColorTop
,backgroundColorBottom
。其中path
为必填。 - 如果配置了
window
,window
的可配置属性包括:navigationBarBackgroundColor
,navigationBarTextStyle
,backgroundColor
,backgroundColorTop
,backgroundColorBottom
。 - 如果配置了
tabBar
,tabBar
的可配置属性包括:color
,selectedColor
,backgroundColor
,borderStyle
,list
。如果配置了list
, 则list
的pagePath
为必填。