Vue-路由(二)
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了Vue-路由(二),小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含9367字,纯文字阅读大概需要14分钟。
内容图文
保存一些简单的路由案例,可以通过案例来学习
1.路由基础
1 <! DOCTYPE html > 2 < html lang ="en" > 3 < head > 4 < meta charset ="UTF-8" > 5 < meta name ="viewport" content ="width=device-width, initial-scale=1.0" > 6 < title >路由基础</title> 7</head> 8<body> 9<!-- 需要引入vue.js和vue-router.js文件 -->10<script src="vue.js"></script>11<script src="vue-router.js"></script>12<div id="app">13<!--路由可制作单页面应用, 14 使用router-link组件来导航,其中to属性指定链接 15 router-link标签默认会被渲染成一个a标签 16 当路由匹配成功,将自动设置class属性值.router-link-active 17-->18<h2>Hello!!</h2>19<router-link to="/header">Go to header</router-link>20<router-link to="/footer">Go to footer</router-link>21<!-- 路由出口:匹配到的组件内容将渲染在这里 -->22<router-view></router-view>23</div>24<script>25//如果使用哦模块化机制编程,导入Vue和VueRouter,要调用Vue.use(VueRouter)26//定义路由组件 可使用import27 const Hea = {template:‘<h1>this is header</h1>‘} 28 const Foo = {template:‘<h1>this is footer</h1>‘} 2930//定义路由:31/* 每个路由应该映射一个组件, 32 * 其中component可以是通过Vue.extend()创建组件构造器, 33 * 或者只是一个组件配置对象 34*/35 const routes = [ 36//path表示当前路由规则对应要展示的组件37//component表示但钱路由规则对应要展示的组件38 {path:‘/header‘ , component:Hea}, 39 {path:‘/footer‘ , component:Foo} 40 ] 4142//创建路由实例,然后传‘routes‘配置,或者传其他配置参数43 const router =new VueRouter({ 44 routes //相当于 routes:routes 的缩写45 }) 4647//创建和挂载根实例48//要通过router配置参数注入路由,从而让整个应用都有路由功能49var vm =new Vue({ 50 router 51 }).$mount(‘#app‘) 5253/* 通过注入路由, 54 * 可以在任何组件内通过this.$router访问路由, 55 * 也可通过this.$route访问当前路由 56*/57/*58 export default{ 59 computed:{ 60 uesrname(){ 61 return this.$route.params.username 62 } 63 }, 64 methods:{ 65 goBack(){ 66 window.history.length > 1 ? this.$router.go(-1) : this.$router.push(‘/‘) 67 } 68 } 69 } 70*/71</script>72</body>73</html>
2.接触动态路由
1 <! DOCTYPE html > 2 < html lang ="en" > 3 < head > 4 < meta charset ="UTF-8" > 5 < meta name ="viewport" content ="width=device-width, initial-scale=1.0" > 6 < title >动态路由</title> 7</head> 8<body> 9<script src="vue.js"></script>10<script src="vue-router.js"></script>11<div id="app">12<h2>Hello</h2>13<router-link to="/User/1">Go to User</router-link>14<router-link to="/User/2">Go to User</router-link>15<router-link to="/User/3">Go to User</router-link>16<router-link to="/User/4">Go to User</router-link>17<router-view></router-view>18</div>19<script>20 const User = { 21/*当路径参数使用冒号标记时, 22 *匹配到的路由,参数值会被设置到this.$route.params 23*/24 template:‘<h1>This is Id{{$route.params.id}}</h1>‘25 } 26 const router =new VueRouter({ 27 routes:[ 28//动态路径参数以冒号开头29 {path:‘/user/:id‘,component:User} 30 ] 31 }) 32 const vm =new Vue({ 33 router 34 }).$mount(‘#app‘) 35</script>36</body>37</html>
3.路由重定向
<! DOCTYPE html > < html lang ="en" > < head > < meta charset ="UTF-8" > < meta name ="viewport" content ="width=device-width, initial-scale=1.0" > < title >路由重定向</title></head><body><script src="vue.js"></script><script src="vue-router.js"></script><div id="app"><h2>Hello</h2><router-link to="/user1">Go to User1</router-link><router-link to="/user2">Go to User2</router-link><router-view></router-view></div><script> const User1 = { template:‘<h1>This is User1</h1>‘ } const User2 = { template:‘<h1>This is User2</h1>‘ } const router =new VueRouter({ routes:[ //通过使用路由规则的redirect属性,指定一个新的路由地址,可以完成路由的重定向 {path:‘/‘,redirect:‘/user1‘}, {path:‘/user1‘,component:User1}, {path:‘/user2‘,component:User2} ] }) const vm =new Vue({ router }).$mount(‘#app‘) </script></body></html>
4.嵌套路由
1 <! DOCTYPE html > 2 < html lang ="en" > 3 < head > 4 < meta charset ="UTF-8" > 5 < meta name ="viewport" content ="width=device-width, initial-scale=1.0" > 6 < title >嵌套路由</title> 7</head> 8<body> 9<script src="vue.js"></script>10<script src="vue-router.js"></script>11<div id="app">12<h2>Hello</h2>13<router-link to="/user1">Go to User1</router-link>14<router-view></router-view>15</div>16<script>17 const User1 = { 18 template:‘<div>19 <router-link to="/user1/tab1">Go to Tab1</router-link>20 <router-link to="/user1/tab2">Go to Tab2</router-link>21 <router-view/>22 </div>‘23 } 24 const Tab1 = { 25 template:‘<h1>This is Tab1 in User1</h1>‘26 } 27 const Tab2 = { 28 template:‘<h1>This is Tab2 in User1</h1>‘29 } 30 const router =new VueRouter({ 31 routes:[ 32 {path:‘/user1‘,component:User1, 33 children:[ 34 {path:‘/user1/tab1‘,component:Tab1}, 35 {path:‘/user1/tab2‘,component:Tab2} 36 ] 37 }, 38 ] 39 }) 40 const vm =new Vue({ 41 router 42 }).$mount(‘#app‘) 43</script>44</body>45</html>
5.动态路由匹配
<! DOCTYPE html > < html lang ="en" > < head > < meta charset ="UTF-8" > < meta name ="viewport" content ="width=device-width, initial-scale=1.0" > < title >动态路由匹配</title></head><body><script src="vue.js"></script><script src="vue-router.js"></script><div id="app"><router-link to="/user1/1">Go to User1</router-link><router-link to="/user1/2">Go to User1</router-link><router-link to="/user2/1">Bo to User2</router-link><router-link to="/user2/2">Go to User2</router-link><router-link to="/user3/1">Go to User3</router-link><router-link :to="/user3/2">Go to User3</router-link><router-view></router-view></div><script> const User1 = { props:[‘id‘], template:‘<h1>This is User1 , id{{id}}</h1>‘ } const User2 ={ props:[‘id‘,‘uname‘,‘upwd‘], template:‘<h1>This is User2 , id:{{id}} ,name:{{uname}} and pwd:{{upwd}}</h1>‘ } const User3 = { porps:[‘id‘,‘uname‘,‘upwd‘], template:‘<h1>this is User3 , id:{{id}} ,name:{{uname}} and pwd:{{upwd}}</h1>‘ } const router =new VueRouter({ routes:[ //$route与对应路由形成高度耦合,不够灵活,可使用props将组件和路由解耦//如果props被设置为true,toute.params会被设置为组件属性 {path:‘/user1/:id‘,component:User1,props:true}, //如果props是一个对象,它会被按原样设置为组件属性 {path:‘/user2/:id‘,component:User2,props:{uname:‘list1‘,upwd:‘123456‘}}, //无法使用,prop传不出去,未知原因//如果props是一个函数,则这个函数接收route对象为自己的形参 {path:‘/user3/:id‘,component:User3,props:(route) => ({uname:‘list2‘,upwd:654321,id:route.params.id})} ] }) const vm =new Vue({ router }).$mount(‘#app‘) </script></body></html>
6.命名路由
1 <! DOCTYPE html > 2 < html lang ="en" > 3 < head > 4 < meta charset ="UTF-8" > 5 < meta name ="viewport" content ="width=device-width, initial-scale=1.0" > 6 < title >命名路由</title> 7</head> 8<body> 9<script src="vue.js"></script>10<script src="vue-router.js"></script>11<div id="app">12<!-- to属性前需要动态绑定一个对象 13 name为需要跳转的路径,params为要传的动态路由参数名和值(id) 14-->15<router-link :to="{name:‘Urouter‘}">Go to User</router-link>16<router-view></router-view>17</div>18<script>19 const User = { 20 template:‘<h1>This is User</h1>‘21 } 22 const router =new VueRouter({ 23 routes:[ 24//为了更方便的表示路由的路径,可以给路由规则起一个别名,25 {path:‘/user‘,component:User,name:‘Urouter‘} 26 ] 27 }) 28 const vm =new Vue({ 29 router 30 }).$mount(‘#app‘) 31</script>32</body>33</html>
7.编程式导航
1 <! DOCTYPE html > 2 < html lang ="en" > 3 < head > 4 < meta charset ="UTF-8" > 5 < meta name ="viewport" content ="width=device-width, initial-scale=1.0" > 6 < title >编程式导航</title> 7</head> 8<body> 9<script src="vue.js"></script>10<script src="vue-router.js"></script>11<!-- 页面导航: 12 声明式导航:通过点击链接实现,如a标签、router-link标签 13 编程式导航:通过调用javascript形式的API是实现,如location.href 14 常用api: 15 this.$router.push(‘hash地址‘) //跳转到指定地址 16 this.$router.go(n) //n为数值,如-1后退一位,1为前进一位 17-->18<div id="app">19<router-link to="/no1">Go to No1</router-link>20<router-view></router-view>21</div>22<script>23 const N1 = { 24 template:‘<div>25 <h1>This is No1</h1>26 <button @click="go">Go to No2</button>27 </div>‘, 28 methods:{ 29 go(){this.$router.push(‘/no2‘)} 30 } 31 } 32/* router.push()使用规则 33 * 字符串:router.push(‘/home‘) 34 * 对象:router.push({path:/home}) 35 * 命名的路由(传递参数):router.push({name:‘/name:‘/user‘,params:{userId:123}}) 36 * 带查询参数,变成/reqister?uname-list:router.push({path:‘/reqister‘,query:{umane:‘list‘}}) 37*/38 const N2 = { 39 template:‘<div>40 <h1>This is No2</h1>41 <button @click="re">Return</button>42 </div>‘, 43 methods:{ 44 re(){this.$router.go(-1)} 45 } 46 } 47 const router =new VueRouter({ 48 routes:[ 49 {path:‘/no1‘,component:N1}, 50 {path:‘/no2‘,component:N2} 51 ] 52 }) 53var vm =new Vue({ 54 router 55 }).$mount(‘#app‘) 56</script>57</body>58</html>
原文:https://www.cnblogs.com/miao91/p/13529283.html
内容总结
以上是互联网集市为您收集整理的Vue-路由(二)全部内容,希望文章能够帮你解决Vue-路由(二)所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。