移動端開發基礎【20】pages.json的配置項pages


pages.json的配置項pages

uni-app項目是通過pages節點配置應用由哪些頁面組成,pages節點接收一個數組,數組每個項都是一個對象,其屬性值如下:

(1)  屬性:path

類型:String

描述:配置頁面路徑

(2)  屬性:style

類型:Object

描述:配置頁面窗口樣式

注意點:

(1)pages節點的第一項為應用入口頁(即首頁)

(2)應用中新增/減少頁面,都需要對 pages 數組進行修改

(3)文件名不需要寫后綴,框架會自動尋找路徑下的頁面資源

開發目錄為:

 

代碼示例:需要在pages.json中編寫

{

    "pages": [

        {

            "path": "pages/index/index",

            "style": { ... }

        }, {

            "path": "pages/login/login",

            "style": { ... }

        }

    ]

}

  1. style

用於設置每個頁面的狀態欄、導航條、標題、窗口背景色等。

頁面中配置項會覆蓋 globalStyle 中相同的配置項

 

 

屬性

類型

默認值

描述

平台差異說明

navigationBarBackgroundColor

HexColor

#000000

導航欄背景顏色(同狀態欄背景色),如"#000000"

 

navigationBarTextStyle

String

white

導航欄標題顏色及狀態欄前景顏色,僅支持 black/white

 

navigationBarTitleText

String

 

導航欄標題文字內容

 

navigationBarShadow

Object

 

導航欄陰影

 

navigationStyle

String

default

導航欄樣式,僅支持 default/custom。custom即取消默認的原生導航欄

微信小程序 7.0+、百度小程序、H5、App(2.0.3+)

backgroundColor

HexColor

#ffffff

窗口的背景色

微信小程序、百度小程序、字節跳動小程序

backgroundTextStyle

String

dark

下拉 loading 的樣式,僅支持 dark/light

 

enablePullDownRefresh

Boolean

false

是否開啟下拉刷新

 

以上是一些style的屬性,更多屬性可以去官網查看。

代碼示例:

{

              "pages": [{

             "path": "pages/index/index",

             "style": {

                 "navigationBarTitleText": "首頁",//設置頁面標題文字

                 "enablePullDownRefresh":true//開啟下拉刷新

           }

             },

    ...

  ]

}

  1. 自定義導航欄使用注意

當navigationStyle設為custom或titleNView設為false時,原生導航欄不顯示,此時要注意幾個問題:

(1)非H5端,手機頂部狀態欄區域會被頁面內容覆蓋。這是因為窗體是沉浸式的原因,即全屏可寫內容。uni-app提供了狀態欄高度的css變量--status-bar-height,如果需要把狀態欄的位置從前景部分讓出來,可寫一個占位div,高度設為css變量。

 

(2)如果原生導航欄不能滿足需求,推薦使用uni ui的自定義導航欄NavBar。這個前端導航欄自動處理了狀態欄高度占位問題。

(3)前端導航欄搭配原生下拉刷新時,會有問題,包括

  • 微信小程序下iOS需要拉更長才能看到下拉刷新的三個點,而Android是從屏幕頂部下拉,無法從導航欄下方下拉。如果一定要從前端導航欄下拉,小程序下只能放棄原生下拉刷新,純前端模擬,參考mescroll插件,但這樣很容易產生性能問題。目前小程序平台自身沒有提供更好的方案
  • App和H5下,原生下拉刷新提供了circle樣式,可以指定offset偏移量(pages.json的app-plus下配置),自定義下拉圈出現的位置。在hello uni-app的擴展組件中有示例。

(4)非H5端,前端導航蓋不住原生組件。如果頁面有video、map、textarea(僅小程序)等原生組件,滾動時會覆蓋住導航欄

如果是小程序下,可以使用cover-view來做導航欄,避免覆蓋問題

如果是App下,建議使用titleNView或subNVue,體驗更好

(5)前端組件在渲染速度上不如原生導航欄,原生導航可以在動畫期間渲染,保證動畫期間不白屏,但使用前端導航欄,在新窗體進入的動畫期間可能會整頁白屏,越低端的手機越明顯。

(6)以上討論的是前端自定義導航欄,但在App側,原生導航欄也提供了比小程序導航更豐富的自定義性

titleNView:給原生導航欄提供更多配置,包括自定義按鈕、滾動漸變效果、搜索框等。

subNView:使用nvue原生渲染,所有布局自己開發,具備一切自定義靈活度。

(7)頁面禁用原生導航欄后,想要改變狀態欄的前景字體樣式,仍可設置頁面的 navigationBarTextStyle 屬性(只能設置為 black或white)。如果想單獨設置狀態欄顏色,App端可使用plus.navigator.setStatusBarStyle設置。注意部分低端Android手機(4.4)自身不支持設置狀態欄前景色。

鑒於以上問題,在原生導航能解決業務需求的情況下,盡量使用原生導航。甚至有時需要犧牲一些不是很重要的需求。在App和H5下,uni-app提供了靈活的處理方案:titleNView、subNVue、或整頁使用nvue。但在小程序下,因為其自身的限制,沒有太好的方案。有必要的話,也可以用條件編譯分端處理。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM