页面 page

官网介绍:https://uniapp.dcloud.io/collocation/pages

pages.json 页面配置

image.png
image.png

原本Vue 中一般使用Vue Router 管理页面和路由跳转。

而 Uni-App 中的所有页面,是通过 src 下的 pages.json 进行管理的,默认跳转的就是里面数组的第一个元素所表示的页面:
image.png

页面规范

按照规范,所有的页面 .vue 文件要放到 src下的 pages 文件夹。

新建一个文件夹,名字为页面的名字(如用户管理,可以起名user),这个页面的主vue文件,一般用 组件名称.vue(src/pages/user/user.vue),当然由你自己决定。

新增页面

只需要右键点击pages,点击新建页面即可。
image.png
可以选页面模板
image.png

创建好后会帮你增加文件夹和对应的.vue文件
image.png

同时帮你在 pages.json 里面注册
image.png

=====================

页面结构说明

image.png

顶部导航栏 navigationBar

主体页面

样式

页面背景色

  1. page{
  2. background-color:#ddd;
  3. }

底部导航 TabBar

底部导航就是几个按钮,主要用于切换主体页面要显示的内容。

官网说明:https://uniapp.dcloud.io/collocation/pages?id=tabbar

这里分两种:
1、小程序原生的
2、自定义的

1、小程序原生

原生的tabbar有且只有一个且在首页(pages.json 里的 pages 数组第一个页面就是首页)

官方说明,用原生的tabBar性能更优,除非满足不了需求,否则建议优先用原生的

开启

直接在 pages.json 里面新增一个”tabBar” 属性即可开启原生的。
image.png

配置按钮/样式

然后配置list,这个就是显示的按钮和对应跳转的页面。

image.png

只能配置最少2个、最多5个,按钮按数组的顺序排序。

还可以通过API动态设置tabBar功能,查看:https://uniapp.dcloud.io/api/ui/tabbar

生命周期

tabbar 的页面展现过一次后就保留在内存中,再次切换 tabbar 页面,只会触发每个页面的onShow,不会再触发onLoad

2、自定义

官方说明,除了H5端,自定义tabBar的性能体验会低于原生tabBar。App和小程序端非必要不要自定义

H5端

H5端不存在原生tabBar性能更高的概念,并且宽屏下常见的tabBar在顶部而不是底部,此时可以使用 custom-tab-bar组件 来自定义
https://uniapp.dcloud.io/component/custom-tab-bar

它仍然读取 pages.json 里配置的tabBar信息,
支持 pages.json 中 tabBar 相关配置(不支持 borderStyle ),
支持所有 tabBar 相关 API,例如设置 tab 徽标、显示红点、以及 switchTab 等。

需要用这个组件自己写,可以自定义位置和显示样式

  1. <template>
  2. <view>
  3. <custom-tab-bar direction="horizontal" :show-icon="false" :selected="selected" @onTabItemTap="onTabItemTap" />
  4. </view>
  5. </template>

普通自定义

使用view自行绘制tabBar。

如果页面是多页方式,切换tabBar将无法保持底部tabBar一直显示,所以这种情况建议使用单页方式。

单页方式,如果是复杂页面,应用性能会下降明显,需减少页面复杂度。

如果是App端,nvue单页的性能会显著高于vue页面

微信小程序

微信提供一直基于webview自定义tabBar的方案。
该功能体验不佳,不太推荐使用。

如果要使用,参考微信文档:https://developers.weixin.qq.com/miniprogram/dev/extended/weui/tabbar.html

项目src目录下,创建 custom-tab-bar 目录,注意里边的代码是 .wxml、.wxss,不是 .vue,
uni-app编译器会直接拷贝该目录到微信小程序中。

二级页面

如需的tab,需自行编写view来实现。

一般二级页面更适合的导航是 segement组件,相当于web应用的标签页,查看 https://ext.dcloud.net.cn/plugin?id=54

=====================

页面栈

什么是栈?

就是往一个箱子里面放东西,先放进去的最后才能拿出来,你往箱子里面看,看到的永远是放在最上面的东西。

小程序也是一样,把页面当做东西,放在一个箱子里面,你永远看到的页面是最上层的,如下图。
image.png image.png
页面栈层数是有上限的,目前小程序最高是10层。

官网介绍:https://uniapp.dcloud.io/frame?id=%e9%a1%b5%e9%9d%a2%e6%a0%88
image.png

页面路由跳转

路由跳转有两种方式:
1、 组件跳转
2、API 方法跳转

1、 组件跳转

官方文档:https://uniapp.dcloud.io/component/navigator

2、API 方法跳转

官方文档:https://uniapp.dcloud.io/api/router?id=navigateto