Router 範例 - daniel-qa/Vue GitHub Wiki
Router 範例
// Router 用法
function backtoindex () {
router.push('/home/pushmsg')
}
Router 模式
Hash 模式:如果你的路由使用 hash 模式(例如 Vue Router 的默认模式),那么路由前面会加 #。这在 URL 中的格式是 http://example.com/#/route。
这个模式的优点是可以在不配置服务器的情况下使用,因为它不会向服务器发送请求。
History 模式:如果使用的是 history 模式,URL 中则不会包含 #,而是以 http://example.com/route 的形式出现。这个模式需要服务器支持,以便在用户刷新页面时正确处理路由。
可以根据你的需求选择合适的模式。如果没有特别要求,hash 模式通常是更简单的选择。
下面是一个简单的 router.beforeEach 示例,展示如何使用 Vue Router 的导航守卫来处理路由访问权限。
在这个例子中,我们将确保用户在访问特定页面之前已经登录。
javascript
import { createRouter, createWebHashHistory } from 'vue-router';
// 定义路由
const routes = [
{
path: '/login',
name: 'Login',
component: () => import('@/views/Login.vue'),
},
{
path: '/dashboard',
name: 'Dashboard',
component: () => import('@/views/Dashboard.vue'),
meta: { requiresAuth: true } // 需要身份验证
},
{
path: '/:pathMatch(.*)*', // 404 页面
name: 'NotFound',
component: () => import('@/views/NotFound.vue'),
}
];
// 创建路由实例
const router = createRouter({
history: createWebHashHistory(),
routes,
});
// 全局前置守卫
router.beforeEach((to, from, next) => {
// 如果目标路由需要身份验证
if (to.meta.requiresAuth) {
const isLoggedIn = !!localStorage.getItem('user'); // 检查用户是否登录
if (!isLoggedIn) {
return next('/login'); // 未登录,重定向到登录页面
}
}
next(); // 允许访问目标路由
});
// 导出路由实例
export default router;
Router 觀念
Router ,最終就只是指向一個 vue 而己
/home/system ,只是指向 require(@/view/systemConfig/index.vue
))
path: "/home",
name: "home",
component: () => require.ensure([], (require) => require(`@/view/home.vue`)),
children: [{
name: "index",
path: "index",
permission: "teacher-read|teacher-upd",
roles: ['all'],
isShow: true,
component: () => require.ensure([], (require) => require(`@/view/index/index.vue`))
},
//系统配置
{
name: "system",
path: "system",
permission: "batcharea-read|batcharea-upd|batchschool-read|batchschool-upd",
roles: ['admin'],
isShow: true,
component: () => require.ensure([], (require) => require(`@/view/systemConfig/index.vue`))
},