pages

uni-app 通过 pages 节点配置应用由哪些页面组成,pages 节点接收一个数组,数组每个项都是一个对象,其属性值如下: Tips:

  • 应用中新增/减少页面,都需要对 pages 数组进行修改
  • 不需要写后缀,框架会自动寻找路径下的页面资源代码示例: 开发目录为:
    1. ┌─pages ├─index └─index.vue └─login └─login.vue ├─static ├─main.js ├─App.vue ├─manifest.json └─pages.json
    则需要在 pages.json 中填写
    1. { "pages": [ { "path": "pages/index/index", "style": { ... } }, { "path": "pages/login/login", "style": { ... } } ]}

    style

    用于设置每个页面的状态栏、导航条、标题、窗口背景色等。 globalStyle 中相同的配置项 代码示例:
    1. { "pages": [{ "path": "pages/index/index", "style": { "navigationBarTitleText": "首页",//设置页面标题文字 "enablePullDownRefresh":true//开启下拉刷新 } }, ... ]}

    自定义导航栏使用注意

    当navigationStyle设为custom或titleNView设为false时,原生导航栏不显示,此时要注意几个问题:
  • —status-bar-height,如果需要把状态栏的位置从前景部分让出来,可写一个占位div,高度设为css变量。
    1. <template> <view> <view class="status_bar"> <!-- 这里是状态栏 --> </view> <view> 状态栏下的文字 </view> </view></template> <style> .status_bar { height: var(--status-bar-height); width: 100%; }</style>
  • 自定义导航栏NavBar。这个前端导航栏自动处理了状态栏高度占位问题。
    • mescroll插件,但这样很容易产生性能问题。目前小程序平台自身没有提供更好的方案
  • circle样式,可以指定offset偏移量(pages.json的app-plus下配置),自定义下拉圈出现的位置。在hello uni-app的扩展组件中有示例。
  • 原生组件,滚动时会覆盖住导航栏
  • titleNView或subNVue,体验更好
    • titleNView
  • subNVue
  • plus.navigator.setStatusBarStyle设置。注意部分低端Android手机(4.4)自身不支持设置状态栏前景色。鉴于以上问题,在原生导航能解决业务需求的情况下,尽量使用原生导航。甚至有时需要牺牲一些不是很重要的需求。在App和H5下,uni-app提供了灵活的处理方案:titleNView、subNVue、或整页使用nvue。但在小程序下,因为其自身的限制,没有太好的方案。有必要的话,也可以用条件编译分端处理。

    app-plus

    WebviewStyles。 Tips
  • .nvue 页面仅支持 titleNView 配置,其它配置项暂不支持

    导航栏

    Tips
  • titleNView:false 来禁用原生导航栏。一旦禁用原生导航,请注意阅读自定义导航注意事项。
  • titleNView 不能设置 autoBackButtonhomeButton等属性
  • titleNViewtype 值为 transparent 时,导航栏为透明渐变导航栏
  • titleNView 配置 buttons 后,监听按钮的点击事件,vue 页面参考:onNavigationBarButtonTap、nvue 页面参考:uni.onNavigationBarButtonTap
  • titleNView 配置 searchInput 后,相关的事件监听参考:onNavigationBarSearchInputChanged 等
  • 导航栏开发指南
    自定义按钮
    按钮样式
    使用 type 值设置按钮的样式时,会忽略 fontSrc 和 text 属性。
    搜索框配置
    searchInput可以在titleNView的原生导航栏上放置搜索框。其宽度根据周围元素自适应。 searchInput Tips 页面生命周期。
  • uni-app动态修改App端导航栏常见titleNView配置代码示例
    1. { "pages": [{ "path": "pages/index/index", //首页 "style": { "app-plus": { "titleNView": false //禁用原生导航栏 } } }, { "path": "pages/log/log", //日志页面 "style": { "app-plus": { "bounce": "none", //关闭窗口回弹效果 "titleNView": { "buttons": [ //原生标题栏按钮配置, { "text": "分享" //原生标题栏增加分享按钮,点击事件可通过页面的 onNavigationBarButtonTap 函数进行监听 } ] } } } }, { "path": "pages/detail/detail", //详情页面 "style": { "navigationBarTitleText": "详情", "app-plus": { "titleNView": { "type": "transparent"//透明渐变导航栏 } } } }, { "path": "pages/search/search", //搜索页面 "style": { "app-plus": { "titleNView": { "type": "transparent",//透明渐变导航栏 "searchInput": { "backgroundColor": "#fff", "borderRadius": "6px", //输入框圆角 "placeholder": "请输入搜索内容", "disabled": true //disable时点击输入框不置焦,可以跳到新页面搜索 } } } } } ... ]}
    Tips
  • 详见
  • 文档。注意disable状态无法设置文字、placehold暂不支持动态设置 -

    原生子窗体

    subNVues 是 vue 页面的原生子窗体。用于解决 vue 页面中的层级覆盖和原生界面灵活自定义用的。 subNVues 开发指南 Tips
  • subNVuesid 是全局唯一的,不能重复
  • uni.getSubNVueById(‘id’) 获取 subNVues 的实例
  • subNVuespath 属性只能是 nvue 文件路径
    原生子窗体样式
    代码示例
    1. { "pages": [{ "path": "pages/index/index", //首页 "style": { "app-plus": { "titleNView": false , //禁用原生导航栏 "subNVues":[{//侧滑菜单 "id": "drawer", //subNVue 的 id,可通过 uni.getSubNVueById('drawer') 获取 "path": "pages/index/drawer.nvue", // nvue 路径 "style": { //webview style 子集,文档可暂时开放出来位置,大小相关配置 "position": "popup", //除 popup 外,其他值域参考 5+ webview position 文档 "width": "50%" } }, {//弹出层 "id": "popup", "path": "pages/index/popup", "style": { "position": "popup", "margin":"auto", "width": "150px", "height": "150px" } }, {//自定义头 "id": "nav", "path": "pages/index/nav", "style": { "position": "dock", "height": "44px" } }] } } }]}

    下拉刷新

    page->app-plus->pullToRefresh下拉刷新使用注意
  • enablePullDownRefreshpullToRefresh->support 同时设置时,后者优先级较高。
  • enablePullDownRefresh 属性为 true。
  • enablePullDownRefresh 属性,而是配置 pullToRefresh->support 为 true。
  • 代码示例
    1. { "pages": [ { "path": "pages/index/index", //首页 "style": { "app-plus": { "pullToRefresh": { "support": true, "color": "#ff3333", "style": "default", "contentdown": { "caption": "下拉可刷新自定义文本" }, "contentover": { "caption": "释放可刷新自定义文本" }, "contentrefresh": { "caption": "正在刷新自定义文本" } } } } } ]}

    h5

    配置编译到 H5 平台时的特定样式

    导航栏

    自定义按钮
    按钮样式
    使用 type 值设置按钮的样式时,会忽略 fontSrc 和 text 属性。

    下拉刷新

    h5 平台下拉刷新动画,只有 circle 类型。
    搜索框样式
    注意事项:
  • h5 节点没有配置,默认会使用 app-plus 下的配置。
  • h5 节点,则会覆盖 app-plus 下的配置。

    navigationBarShadow