| # app.js |
| var routes = [ |
| { |
| path: '/users', |
| components: { |
| sidebar: { |
| template: ` |
| <div> |
| <ul> |
| <li>用户管理</li> |
| <li>权限管理</li> |
| </ul> |
| </div> |
| ` |
| }, |
| content: { |
| template: ` |
| <div>more more more more more </div> |
| ` |
| } |
| } |
| }, |
| { |
| path: '/post', |
| components: { |
| sidebar: { |
| template: ` |
| <div> |
| <ul> |
| <li>帖子管理</li> |
| <li>消息管理</li> |
| </ul> |
| </div> |
| ` |
| }, |
| content: { |
| template: ` |
| <div>more more more more more </div> |
| ` |
| } |
| } |
| }, |
| ] |
| |
| var router = new VueRouter({ |
| routes: routes |
| }) |
| |
| # 01.html |
| <!DOCTYPE html> |
| <html lang="en"> |
| <head> |
| <meta charset="UTF-8"> |
| <meta http-equiv="X-UA-Compatible" content="IE=edge"> |
| <meta name="viewport" content="width=device-width, initial-scale=1.0"> |
| <title>Document</title> |
| </head> |
| <body> |
| <div id ="app"> |
| <div> |
| <router-link to="/users">用户管理</router-link> |
| <router-link to="/post">帖子管理</router-link> |
| </div> |
| <div> |
| <router-view name="sidebar"></router-view> |
| <router-view name="content"></router-view> |
| </div> |
| </div> |
| <script src="./vue.min.js"></script> |
| <script src="./vue-router.js"></script> |
| <script src="./app.js"></script> |
| </body> |
| </html> |
| # 当我们希望某个路由不被访问时 |
| |
| # app.js |
| var routes = [ |
| { |
| path: '/', |
| component: { |
| template: ` |
| <div><h3>首页</h3></div> |
| ` |
| } |
| }, |
| ] |
| |
| var router = new VueRouter({ |
| routes: routes |
| }) |
| |
| // 三个参数:从哪个路由来,到那个路由去,next方法中可传入true或false表示是否可访问该路由,也可传入路由,表示将要跳转的路由 |
| router.beforeEach(function(to, from, next){ |
| var logged_in = false |
| if(!logged_in && to.path == '/post'){ // 未登录且访问post路由时跳转到首页 |
| next('/'); |
| }else{ |
| next(); |
| } |
| }) |
| |
| # 01.html |
| <!DOCTYPE html> |
| <html lang="en"> |
| <head> |
| <meta charset="UTF-8"> |
| <meta http-equiv="X-UA-Compatible" content="IE=edge"> |
| <meta name="viewport" content="width=device-width, initial-scale=1.0"> |
| <title>Document</title> |
| </head> |
| <body> |
| <div id ="app"> |
| <div> |
| <router-link to="/user/王花花">王花花</router-link> |
| <router-link to="/post">帖子管理</router-link> |
| </div> |
| </div> |
| <script src="./vue.min.js"></script> |
| <script src="./vue-router.js"></script> |
| <script src="./app.js"></script> |
| </body> |
| </html> |
| |
| |
| |
| |
| router.beforeEach(function(to, from, next){ |
| var logged_in = false |
| if(!logged_in && to.matched.some(function(item){ |
| return item.path == '/post'; |
| })){ |
| next('/'); |
| }else{ |
| next(); |
| } |
| }) |
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
· 字符编码:从基础到乱码解决
· 提示词工程——AI应用必不可少的技术