介绍

page.json 文件用来对uni-app进行全局配置,决定页面文件的路径、窗口样式、原生导航栏、底部的原生tabBar。

以下是一些常用配置:

globalStyle

globalStyle用于设置应用的状态栏、导航条、标题、窗口背景颜色等,常用配置如下:

{
"pages": [
{
"path": "pages/index/index",
"style": {
"navigationBarTitleText": "test"
}
}],
"globalStyle": { // 设置默认页面的窗口表现
"navigationBarTextStyle": "white", // 只支持 白 white 黑 black
"navigationBarTitleText": "test", // 导航栏标题
"navigationBarBackgroundColor": "#F40", // 导航栏背景颜色 ———— 注意英文字母要大写!!! 在小程序中不可以写颜色的英文!!!
// "backgroundColor": "#808080" ,// 窗口的背景颜色 ???
// "navigationStyle":"custom" ,// 取消默认原生导航栏 (最好不要自定义导航栏,否则会出现一系列问题,比如原生组件覆盖导航栏情况··· ···)
"navigationStyle":"default" ,// 默认值,导航栏显示
"enablePullDownRefresh": true ,// 是否开启下拉刷新
"backgroundTextStyle":"light" ,// dark 下拉loading样式
"onReachBottomDistance": 50 , // 页面上拉触底事件触发时,距页面底部的距离,单位只支持px
// "titleImage" : "static/logo.png" // 导航栏图片地址,可替换当前导航栏文字 ,不支持微信小程序
"transparentTitle": "none"// 导航栏透明度设置 none不透明 always总是透明 auto滑动自适应 小程序不支持!!!
}
}

pages配置

pages节点中配置的是:应用由哪一些页面组成

"pages": [ //pages数组中第一项表示应用启动页
{
"path": "pages/index/index",
"style": {
"navigationBarTitleText": "test"
}
}
],

· pages 节点的第一项为应用入口页(首页)
· 应用中的新增/减少页面,都需要对pages数组进行修改(非应用页,不带tabBar页的页面也需要在pages中去定义)
所谓的应用中:就是有tarBar与之对应的页面,初学者这点很容易就忘掉了!
· pages 数组中的路径,不需要写后缀,框架会自动寻找

tabBar

通过tabBar可以配置tab栏,以及切换时显示的对应页。
TIPS
· position 为top时,将不会显示icon
· tabBar 中的list 是一个数组,只能配置最少2个、最多5个tab,tab按照数组的顺序排序。
· tabBar切换第一次加载时可能渲染不及时,,可以在每个tabBar对应的页面的onLoad生命周期里先弹出一个loading
· tabBar页面展现过一次将会保存在内存中,再次切换tabBar页面,只会触发每个页面对应的onShow生命周期,onLoad不会在触发。

{
"pages": [],
"globalStyle": {},
"tabBar": { // tabBar的全局配置
"color":"#2C405A", // tab上的文字默认颜色
"selectedColor":"#F0AD4E", // tab选中时的颜色
"backgroundColor":"#FFFFFF", // tab的背景颜色
"borderStyle":"black", // tabBar 上边框的颜色,仅支持black 和 white
"position":"bottom", // tabBar 默认的位置是在下边, top上边情况只有微信小程序支持
"fontSize":"10px", // 字体的默认大小
"iconWidth":"24px", // 图标的宽度 等比例缩放
"spacing":"3px", // 图标和文字之间的宽度
"height":"50px", // tabBar默认的高度
"midButton":{}, // 中间的按钮,仅在list项为偶数时有效
"list":[{ // tabBar的具体内容
"pagePath": "pages/index/index", // 页面路径,必须在pages中定义
"text":"bar1", // tabBar文字
"iconPath":"static/logo.png", //tab对应的图标,icon大小为40kb,position:top; 时无效!建议尺寸:81*81 不支持网络图片,不支持字体图标
"selectedIconPath":"static/logo.png" // 选中颜色的路径 ,规则同上
}, { // tabBar的具体内容
"pagePath": "pages/index1/new_file", // 页面路径,必须在pages中定义
"text":"bar1", // tabBar文字
"iconPath":"static/logo.png", //tab对应的图标,icon大小为40kb,position:top; 时无效!建议尺寸:81*81 不支持网络图片,不支持字体图标
"selectedIconPath":"static/logo.png" // 选中颜色的路径 ,规则同上
}]
}
}

常见问题
1、在代码中跳转到tabBar页面,api只能用uni.switchTab,不可以使用uni.navigateTo、uni.redirectTo ,使用navigator组件跳转时必须设置 open-type=“switchTab”
2、前端弹出遮罩层挡不住tabBar的问题,参考以下文章:
​​​https://ext.dcloud.net.cn/plugin?id=69​

subPackages 分包加载配置

类似于懒加载,此配置为小程序的分包加载机制。
subPackages 节点接收一个数组,数组每一项都是应用的子包,属性有2个:

root 子包的根目录 String类型
pages 子包由哪一些页面组成,参数与pages一样。

注意
1、subPackages 中的pages的路径是root下的相对路径,下边有例子。

目录假设为:
uni-app  page.json配置文件_导航栏

{
"pages":[],
"subPackages":[{
"root":"pageA",
"pages":[{
"path": "list/list",
"style": {···}
}]
}, {
"root":"pageB",
"pages":[{
"path":"detail/detail",
"style": {···}
}]
}]
}



condition

官方文档解释:启动模式配置,仅在开发期间生效。
其实配置condition主要解决了调试的问题,配置了此项,页面刷新一进来就是选中的页面。
2个属性:
current :当前激活的页面(官方叫模式),对应的是 list 节点的索引值。
list:启动模式列表,Array类型。
***list说明:***
name:启动页面的名称(这个名称是自定义的,与页面对应),String类型。
path:启动页面的路径,String类型。
query:启动参数,可在页面的onLoad生命周期函数中获取到。
实际开发中:
在实际开发中,可以把所有页面都配置在condition中,使用微信小程序可手动选择刷新后需要显示的页面,调试起来更加方便。
uni-app  page.json配置文件_微信小程序_02



原生组件

原生组件请单如下:

map 地图组件
video 视频组件
camera 照相组件(微信小程序、百度小程序支持)
canvas 在小程序和百度小程序表现为原生组件
input 输入框 仅在微信小程序、支付宝小程序、头条小程序、qq小程序中 且 聚焦时表现为原生组件。
textarea 文本域 仅在微信小程序、百度小程序、头条小程序表现为原生组件。
live-player 实时音视频播放,也叫:直播拉流 仅微信小程序、百度小程序支持。
live-pusher 实时音视频录制,也叫:直播推流 仅微信小程序、百度小程序、app-nvue支持。
cover-view 覆盖在原生组件上的文本视图。
解释
:小程序框架为了优化体验,部分组件如map、video、textarea、canvas通过原生控件实现,原生组件层级高于前端组件,为了能正常覆盖原生组件,设计了cover-view。
> cover-image** 覆盖在原生组件上的图片视图。