uniapp-路由uni-simple-router安裝配置教程
更新時間:2022年11月23日 14:24:18 作者:智江鵬
專為uniapp打造的路由器,和uniapp深度集成,uniapp用到了很多vue的api,但在路由管理的功能相對于vue-router還是比較欠缺的,比如全局導航守衛(wèi),本文給大家講解uniapp-路由uni-simple-router相關知識,感興趣的朋友跟隨小編一起看看吧
背景
- 專為uniapp打造的路由器,和uniapp深度集成
- 通配小程序、App和H5端
- H5能完全使用vue-router開發(fā)
- 模塊化、查詢、通配符、路由參數(shù)
- 使 uni-app實現(xiàn)嵌套路由(僅H5端完全使用vue-router)
- uniapp用到了很多vue的api,但在路由管理的功能相對于vue-router還是比較欠缺的,比如全局導航守衛(wèi)
安裝
// 項目根目錄執(zhí)行命令行 npm install uni-simple-router // 根據(jù)pages.json總的頁面,自動構建路由表 npm install uni-read-pages
配置vue.config.js
注:如果根目錄沒有vue.config.js文件,請手動創(chuàng)建
// vue.config.js const TransformPages = require('uni-read-pages') const { webpack } = new TransformPages() module.exports = { configureWebpack: { plugins: [ new webpack.DefinePlugin({ ROUTES: webpack.DefinePlugin.runtimeValue(() => { const tfPages = new TransformPages({ includes: ['path', 'name', 'aliasPath','meta'] }); return JSON.stringify(tfPages.routes) }, true) }) ] } }
import { RouterMount, createRouter } from 'uni-simple-router'; const router = createRouter({ platform: process.env.VUE_APP_PLATFORM, routes: [...ROUTES] }); //全局路由前置守衛(wèi) router.beforeEach((to, from, next) => { //權限控制登錄 if(to.meta.auth){ console.log("需要登錄"); if("token"){ next(); }else{ console.log("請登錄"); } }else{ console.log("不需要登錄"); next(); } console.log("前置守衛(wèi)"+JSON.stringify(to)); }); // 全局路由后置守衛(wèi) router.afterEach((to, from) => { console.log('跳轉結束') }) export { router, RouterMount }
main.js
import {router,RouterMount} from './router/router.js' //路徑換成自己的 Vue.use(router) //v1.3.5起 H5端 你應該去除原有的app.$mount();使用路由自帶的渲染方式 // #ifdef H5 RouterMount(app,router,'#app') // #endif // #ifndef H5 app.$mount(); //為了兼容小程序及app端必須這樣寫才有效果 // #endif
page.json
{ "pages": [ //pages數(shù)組中第一項表示應用啟動頁,參考:https://uniapp.dcloud.io/collocation/pages { "path": "pages/index/index", "name": "index", "style": { "navigationBarTitleText": "uni-app" } }, { "path": "pages/home/home", "name": "home", "meta": { "auth": false, //需要登錄 "async": true, //是否同步 "title": "首頁", //標題 "group": "商城" //分組 }, "style": { "navigationBarTitleText": "", "enablePullDownRefresh": false } },{ "path": "pages/haha/haha", "name": "haha", "meta": { "auth": true, //需要登錄 "async": true, //是否同步 "title": "首頁", //標題 "group": "商城" //分組 }, "style": { "navigationBarTitleText": "", "enablePullDownRefresh": false } } ], "globalStyle": { "navigationBarTextStyle": "black", "navigationBarTitleText": "uni-app", "navigationBarBackgroundColor": "#F8F8F8", "backgroundColor": "#F8F8F8" } }
頁面跳轉和參數(shù)接收
- push()
- pushTab(): 跳轉tar欄
- replace(): 替換
- replaceAll(): 替換所有
- back(): 直接帶上數(shù)字返回第幾層
- 注意:path和query配合使用,而name和params配合使用
//通過name方式跳轉 this.$Router.push({ name: 'home', params: { name: 'Joseph', age: 22 } }) ------------------------------------ //通過path形式進行跳轉 this.$Router.push({ path: '/pages/haha/haha', query: { name: 'Josdep33333h', age: 24 } }) ------------------------------------- //用uni形式跳轉到新頁面,并傳遞參數(shù) uni.navigateTo({ url:'/pages/home/home?id=2&name=Josep33333h' });
// 頁面接收參數(shù)——query中的參數(shù) onLoad(){ // query傳參 const query=this.$Route.query // params傳參 const params=this.$Route.params }
組件
// 首先在main.js中進行注冊,將my-link注冊為全局組件,注冊后使用方法同<router-link> import Mylink from './node_modules/uni-simple-router/dist/link.vue' Vue.component('my-link',Mylink) // 使用 // navType對應的就是push/pushTab/replace/replaceAll <my-link to="{path: '/pages/mine/index',query: {name: '我只想去tab5的my-link'}}" navType="pushTab"> <button type="default">我是router-link</button> </my-link>
onLoad(option) { //原生獲取數(shù)據(jù) console.log("zz",option); // query傳參 const query=this.$Route.query console.log(query); // params傳參 const params=this.$Route.params console.log(params); }
詳情使用參考
到此這篇關于uniapp-路由uni-simple-router的文章就介紹到這了,更多相關uniapp-路由uni-simple-router內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
基于javascript實現(xiàn)仿百度輸入框自動匹配功能
這篇文章主要介紹了基于javascript實現(xiàn)仿百度輸入框自動匹配功能的相關資料,需要的朋友可以參考下2016-01-01ES6新特性:使用export和import實現(xiàn)模塊化詳解
本篇文章主要介紹了ES6新特性:使用export和import實現(xiàn)模塊化詳解,具有一定的參考價值,有興趣的可以了解一下2017-07-07JS實現(xiàn)區(qū)分中英文并統(tǒng)計字符個數(shù)的方法示例
這篇文章主要介紹了JS實現(xiàn)區(qū)分中英文并統(tǒng)計字符個數(shù)的方法,涉及JavaScript事件響應、正則匹配及數(shù)值運算相關操作技巧,需要的朋友可以參考下2018-06-06JavaScript 函數(shù)用法詳解【函數(shù)定義、參數(shù)、綁定、作用域、閉包等】
這篇文章主要介紹了JavaScript 函數(shù)用法,結合實例形式分析了JavaScript函數(shù)定義、參數(shù)、綁定、作用域、閉包、回調函數(shù)、柯理化函數(shù)等相關概念、原理與操作注意事項,需要的朋友可以參考下2020-05-05