uni-app 路由
路由
uni-app頁面路由為框架統一管理,開發者需要在pages.json裡配置每個路由頁面的路徑和頁面樣式。類似的小程式在app.json中配置頁面路由相同。所以uni-app的路由用法與Vue Router不同,如仍希望採用Vue Router方式管理路由,可在外掛市場搜尋Vue-Router。
路由路由
uni-app有兩種頁面路由重定向方式:使用導航器元件擴充套件,呼叫API重定向。
頁面棧
框架以棧的形式管理當前所有頁面,當發生路由切換的時候,頁面棧的表現如下:
路由方式 | 頁面棧表現 | 觸發時機 |
---|---|---|
初始化 | 新頁面入棧 | uni-app:的第一個頁面 |
:新頁面 | 新頁面入棧 | 呼叫API uni.navigateTo ,使用元件 <navigator open-type =“ navigate” /> |
頁面重啟 | 當前頁面出棧,新頁面入棧 | 呼叫API uni.redirectTo ,使用元件 <navigator open-type =“ redirectTo” /> |
頁面返回 | 頁面不斷出棧,直到目標返回頁 | 呼叫API uni.navigateBack ,使用元件 <navigator open-type =“ navigateBack” /> ,使用者按左上角返回按鈕,安卓使用者點選物理後退鍵 |
標籤切換 | 頁面全部出棧,只留下新的標籤頁面 | 呼叫API uni.switchTab ,使用元件 <navigator open-type =“ switchTab” /> ,使用者切換Tab |
重載入 | 頁面全部出棧,只留下新的頁面 | 呼叫API uni.reLaunch ,使用元件 <navigator open-type =“ reLaunch” /> |
執行環境判斷
開發環境和生產環境
uni-app可透過process.env.NODE_ENV判斷當前環境是開發環境還是生產環境。一般用於連線測試伺服器或生產伺服器的動態切換。
- 在HBuilderX中,點選“執行”編譯出來的程式碼是開發環境,點選“發行”編譯出來的程式碼是生產環境
- cli模式下,是通行的編譯環境處理方式。
if(process.env.NODE_ENV === 'development'){ console.log('開發環境') }else{ console.log('生產環境') }
如果你需要自定義更多環境,某種測試環境:
- 假設只需要對單一平臺配置,可以的package.json中配置,在HBuilderX的執行和發行選單裡會多一個出來。
- 如果是針對所有平臺配置,可以在VUE-config.js中配置。
快捷程式碼塊
HBuilderX中敲入程式碼塊uEnvDev,uEnvProd可以快速生成對應development,production的執行環境判定程式碼。
// uEnvDev if (process.env.NODE_ENV === 'development') { // TODO } // uEnvProdif (process.env.NODE_ENV === 'production') { // TODO }
判斷平臺
平臺判斷有2種場景,一種是在編譯期判斷,一種是在執行期判斷。
- 編譯期判斷編譯期判斷,即條件編譯,不同平臺在編譯出包後已經是不同的程式碼。詳見:條件編譯
// #ifdef H5 alert("只有h5平臺才有alert方法") // #endif
如上程式碼只會編譯到H5的發行包裡,其他平臺的包不會包含如上程式碼。
- 執行期診斷執行期判斷是指程式碼已經打入包中,仍然需要在執行期判斷平臺,此時可使用uni.getSystemInfoSync().platform判斷客戶端環境是Android,iOS還是小程式開發工具(在百度小程式開發工具,微信小程式開發工具,支付寶小程式開發工具中使用uni.getSystemInfoSync().platform返回值重置devtools)。
switch(uni.getSystemInfoSync().platform){ case 'android': console.log('執行Android上') break; case 'ios': console.log('執行iOS上') break; default: console.log('執行在開發者工具上') break; }
如有必要,也可以在條件編譯裡自己定義的一個變數,賦值。在後續執行程式碼中動態判斷環境。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/70018483/viewspace-2900381/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- uni-APP 新增頁面實現路由跳轉APP路由
- uni-app 案例APP
- uni-app技術分享| uni-app常見問題(一)APP
- uni-app技術分享| uni-app常見問題(二)APP
- uni-app熱更新APP
- uni-app 微信支付APP
- uni-app技術分享| uni-app轉小程式-實時訊息APP
- uni-app 入坑指南APP
- uni-App引入iconfontAPP
- uni-app 混合開發APP
- uni-app 快速入門APP
- uni-app 框架簡介APP框架
- uni-app 生命週期APP
- uni-app 開放生態APP
- 【UniApp】-uni-app概述APP
- uni-app技術分享| uni-app轉小程式_實時音視訊APP
- uni-app打包web專案(uni-app開發vue網頁應用)APPWebVue網頁
- 萬字實踐|UNI-APPAPP
- uni-app踩坑+小改造APP
- VSCode 配 uni-appVSCodeAPP
- uni-app訊息推送方案APP
- 從mpvue遷移到uni-appVueAPP
- 其他專案轉 uni-appAPP
- uni-app常見問題APP
- uni-app 頁面樣式APP
- uni-app 條件編譯APP編譯
- uni-app 高效開發技巧APP
- uni-app + Cloudbase——uni-app 專案中如何使用騰訊雲開發後端服務APPCloud後端
- uni-app之實現分頁APP
- uni-app小程式訊息推送APP
- uni-app開發注意事項APP
- uni-app選型評估指南APP
- Angular路由——子路由Angular路由
- 前端路由(手寫路由)前端路由
- Angular路由——路由守衛Angular路由
- Angular路由——路由基礎Angular路由
- Angular路由——輔助路由Angular路由
- Uni-app從入門到實戰APP