diff --git a/20_脚手架/vue_code/36.src_路由的独享路由守卫/App.vue b/20_脚手架/vue_code/36.src_路由的独享路由守卫/App.vue new file mode 100644 index 0000000..14872a9 --- /dev/null +++ b/20_脚手架/vue_code/36.src_路由的独享路由守卫/App.vue @@ -0,0 +1,34 @@ + + + diff --git a/20_脚手架/vue_code/36.src_路由的独享路由守卫/assets/logo.png b/20_脚手架/vue_code/36.src_路由的独享路由守卫/assets/logo.png new file mode 100644 index 0000000..f3d2503 Binary files /dev/null and b/20_脚手架/vue_code/36.src_路由的独享路由守卫/assets/logo.png differ diff --git a/20_脚手架/vue_code/36.src_路由的独享路由守卫/components/Banner.vue b/20_脚手架/vue_code/36.src_路由的独享路由守卫/components/Banner.vue new file mode 100644 index 0000000..ab3725d --- /dev/null +++ b/20_脚手架/vue_code/36.src_路由的独享路由守卫/components/Banner.vue @@ -0,0 +1,23 @@ + + + diff --git a/20_脚手架/vue_code/36.src_路由的独享路由守卫/main.js b/20_脚手架/vue_code/36.src_路由的独享路由守卫/main.js new file mode 100644 index 0000000..9c406ac --- /dev/null +++ b/20_脚手架/vue_code/36.src_路由的独享路由守卫/main.js @@ -0,0 +1,23 @@ +// 引入Vue +import Vue from "vue"; +// 引入App +import App from "./App"; +// 引入VueRouter +import VueRouter from "vue-router"; +// 引入router +import router from "@/router"; + +// 设置Vue +Vue.config.productionTip = false + +// 使用插件 +Vue.use(VueRouter) + +// 实例化Vue +new Vue({ + components: { + App + }, + render: h => h(App), + router: router, +}).$mount('#app') diff --git a/20_脚手架/vue_code/36.src_路由的独享路由守卫/pages/About.vue b/20_脚手架/vue_code/36.src_路由的独享路由守卫/pages/About.vue new file mode 100644 index 0000000..26560f1 --- /dev/null +++ b/20_脚手架/vue_code/36.src_路由的独享路由守卫/pages/About.vue @@ -0,0 +1,21 @@ + + + + + \ No newline at end of file diff --git a/20_脚手架/vue_code/36.src_路由的独享路由守卫/pages/Detail.vue b/20_脚手架/vue_code/36.src_路由的独享路由守卫/pages/Detail.vue new file mode 100644 index 0000000..95ef4fa --- /dev/null +++ b/20_脚手架/vue_code/36.src_路由的独享路由守卫/pages/Detail.vue @@ -0,0 +1,17 @@ + + + diff --git a/20_脚手架/vue_code/36.src_路由的独享路由守卫/pages/Home.vue b/20_脚手架/vue_code/36.src_路由的独享路由守卫/pages/Home.vue new file mode 100644 index 0000000..9436f2f --- /dev/null +++ b/20_脚手架/vue_code/36.src_路由的独享路由守卫/pages/Home.vue @@ -0,0 +1,40 @@ + + + + + \ No newline at end of file diff --git a/20_脚手架/vue_code/36.src_路由的独享路由守卫/pages/Message.vue b/20_脚手架/vue_code/36.src_路由的独享路由守卫/pages/Message.vue new file mode 100644 index 0000000..746f387 --- /dev/null +++ b/20_脚手架/vue_code/36.src_路由的独享路由守卫/pages/Message.vue @@ -0,0 +1,68 @@ + + + diff --git a/20_脚手架/vue_code/36.src_路由的独享路由守卫/pages/News.vue b/20_脚手架/vue_code/36.src_路由的独享路由守卫/pages/News.vue new file mode 100644 index 0000000..e6e997a --- /dev/null +++ b/20_脚手架/vue_code/36.src_路由的独享路由守卫/pages/News.vue @@ -0,0 +1,32 @@ + + + diff --git a/20_脚手架/vue_code/36.src_路由的独享路由守卫/router/index.js b/20_脚手架/vue_code/36.src_路由的独享路由守卫/router/index.js new file mode 100644 index 0000000..d86eda3 --- /dev/null +++ b/20_脚手架/vue_code/36.src_路由的独享路由守卫/router/index.js @@ -0,0 +1,107 @@ +import VueRouter from "vue-router"; + +// 引入组件 +import About from "@/pages/About.vue" +import Home from "@/pages/Home.vue" +import News from "@/pages/News.vue" +import Message from "@/pages/Message.vue"; +import Detail from "@/pages/Detail.vue"; + +// 创建一个路由器 +const router = new VueRouter({ + routes: [ + { + name: 'guanyu', + path: '/about', + component: About, + meta: { + title: '关于' + } + }, + { + name: 'zhuye', + path: '/home', + component: Home, + meta: { + title: '主页' + }, + children: [ + { + name: 'xinwen', + path: 'news', + component: News, + meta: { + isAuth: true, + title: '主页' + }, + beforeEnter: (to,from,next)=>{ + console.log('独享路由守卫', to, from) + if (localStorage.getItem('school') === 'atguigu'){ + next() + }else{ + alert('学校名称不对,无权查看!') + } + } + }, + { + name: 'xiaoxi', + path: 'message', + component: Message, + meta: { + isAuth: true, + title: '主页' + }, + children: [ + { + name: 'xiangqing', + path: 'detail/:id/:title', + component: Detail, + meta: { + title: '详情' + }, + // props的第一种写法,key-val格式,通过props的方式传给detail组件 + // props: {a:1,b:'hello'} + // props的第二种写法,布尔值,若布尔值为真,就会把路由组件收到的params参数以props的形式传给detail + // props: true + // props的第三种写法,函数形式 + props($route) { + return { + id: $route.query.id, + title: $route.query.title + } + } + // 解构赋值的写法 + // props({query:{id,title}}) { + // return {id, title} + // } + } + ] + } + ] + }, + ] +}) + +// 全局前置路由守卫--初始化的时候被调用、每次路由切换之前被调用 +// router.beforeEach((to, from, next) => { +// console.log('前置路由守卫', to, from) +// // if (to.name === 'xinwen' || to.name === 'xiaoxi') { +// // if (to.path === '/home/news' || to.path === '/home/message') { +// if (to.meta.isAuth) { +// if (localStorage.getItem('school') === 'atguigu') { +// next() +// }else{ +// alert('学校名称错误,无权限查看') +// } +// }else{ +// next() +// } +// }) + +// 全局后置路由守卫--初始化的时候被调用、每次路由切换之后被调用 +// router.afterEach((to, from)=>{ +// console.log('后置路由守卫', to, from) +// document.title = to.meta.title || '系统' +// }) + +export default router \ No newline at end of file diff --git a/20_脚手架/vue_code/src/router/index.js b/20_脚手架/vue_code/src/router/index.js index caa5254..d86eda3 100644 --- a/20_脚手架/vue_code/src/router/index.js +++ b/20_脚手架/vue_code/src/router/index.js @@ -33,6 +33,14 @@ const router = new VueRouter({ meta: { isAuth: true, title: '主页' + }, + beforeEnter: (to,from,next)=>{ + console.log('独享路由守卫', to, from) + if (localStorage.getItem('school') === 'atguigu'){ + next() + }else{ + alert('学校名称不对,无权查看!') + } } }, { @@ -75,25 +83,25 @@ const router = new VueRouter({ }) // 全局前置路由守卫--初始化的时候被调用、每次路由切换之前被调用 -router.beforeEach((to, from, next) => { - console.log('前置路由守卫', to, from) - // if (to.name === 'xinwen' || to.name === 'xiaoxi') { - // if (to.path === '/home/news' || to.path === '/home/message') { - if (to.meta.isAuth) { - if (localStorage.getItem('school') === 'atguigu') { - next() - }else{ - alert('学校名称错误,无权限查看') - } - }else{ - next() - } -}) +// router.beforeEach((to, from, next) => { +// console.log('前置路由守卫', to, from) +// // if (to.name === 'xinwen' || to.name === 'xiaoxi') { +// // if (to.path === '/home/news' || to.path === '/home/message') { +// if (to.meta.isAuth) { +// if (localStorage.getItem('school') === 'atguigu') { +// next() +// }else{ +// alert('学校名称错误,无权限查看') +// } +// }else{ +// next() +// } +// }) // 全局后置路由守卫--初始化的时候被调用、每次路由切换之后被调用 -router.afterEach((to, from)=>{ - console.log('后置路由守卫', to, from) - document.title = to.meta.title || '系统' -}) +// router.afterEach((to, from)=>{ +// console.log('后置路由守卫', to, from) +// document.title = to.meta.title || '系统' +// }) export default router \ No newline at end of file