返回 2. 在
利用Uniapp+TS封装路由,掌控路由跳转并使用拦截器
前端
2023-09-17 04:21:03
## 前言
在Uniapp中,路由就是一个组件或页面的路径。每次跳转都需要调用官方提供的方法,使用起来不方便,而且无法统一实现某些功能。本次封装将为你带来以下功能:
1. 添加路由白名单。
2. 限制某些页面的访问。
## 封装过程
### 1. 创建一个名为`router.ts`的文件
```typescript
// router.ts
import Vue from 'vue'
import VueRouter from 'vue-router'
Vue.use(VueRouter)
const routes = [
{
path: '/',
component: () => import('@/pages/home.vue')
},
{
path: '/about',
component: () => import('@/pages/about.vue')
},
{
path: '/login',
component: () => import('@/pages/login.vue')
}
]
const router = new VueRouter({
routes
})
export default router
2. 在main.js
中注册路由
// main.js
import Vue from 'vue'
import App from './App.vue'
import router from './router'
Vue.config.productionTip = false
new Vue({
router,
render: h => h(App)
}).$mount('#app')
3. 使用路由
// 组件中
import { useRouter } from 'vue-router'
export default {
setup() {
const router = useRouter()
return {
router
}
},
methods: {
goToHome() {
router.push('/')
},
goToAbout() {
router.push('/about')
},
goToLogin() {
router.push('/login')
}
}
}
4. 添加路由白名单
// router.ts
const router = new VueRouter({
routes,
// 添加白名单
scrollBehavior (to, from, savedPosition) {
if (savedPosition) {
return savedPosition
} else {
return { x: 0, y: 0 }
}
}
})
5. 限制某些页面的访问
// router.ts
const router = new VueRouter({
routes,
// 限制某些页面的访问
beforeEach (to, from, next) {
if (to.path === '/login') {
next()
} else {
if (localStorage.getItem('token')) {
next()
} else {
next('/login')
}
}
}
})
总结
通过这种方式,你可以轻松管理路由并实现白名单和访问限制等功能。这将使你的Uniapp项目更加安全和易于使用。
附加信息
1. 路由白名单
路由白名单是指那些不需要进行访问限制的路由。你可以将这些路由添加到白名单中,以便它们可以被任何人访问。
2. 访问限制
访问限制是指对某些路由进行限制,只有满足一定条件的用户才能访问这些路由。你可以使用beforeEach
钩子来实现访问限制。
3. 其他功能
除了白名单和访问限制之外,你还可以使用封装后的路由来实现其他功能,例如:
- 路由守卫
- 路由元信息
- 路由过渡动画