经验首页 前端设计 程序设计 Java相关 移动开发 数据库/运维 软件/图像 大数据/云计算 其他经验
当前位置:技术经验 » HTML/CSS » CSS » 查看文章
命名视图-实现一个路由规则展示多个组件!!!
来源:cnblogs  作者:一直在路上aiori  时间:2021/5/7 10:39:44  对本文有异议
  1. 1 <!DOCTYPE html>
  2. 2 <html lang="en">
  3. 3
  4. 4 <head>
  5. 5 <meta charset="UTF-8">
  6. 6 <meta name="viewport" content="width=device-width, initial-scale=1.0">
  7. 7 <title>Document</title>
  8. 8 <script src="../../js/vue.js"></script>
  9. 9 <script src="../../js/vue-router.js"></script>
  10. 10 </head>
  11. 11 <style>
  12. 12 .myactive {
  13. 13 color: red;
  14. 14 font-size: 24px;
  15. 15 }
  16. 16
  17. 17 html body h1 {
  18. 18 margin: 0;
  19. 19 padding: 0
  20. 20 }
  21. 21
  22. 22 .header {
  23. 23 background-color: orange;
  24. 24 }
  25. 25
  26. 26 .container {
  27. 27 display: flex;
  28. 28 }
  29. 29
  30. 30 .left {
  31. 31 flex: 2;
  32. 32 background-color: red;
  33. 33 }
  34. 34
  35. 35 .main {
  36. 36 flex: 8;
  37. 37 background-color: green;
  38. 38 }
  39. 39 </style>
  40. 40
  41. 41 <body>
  42. 42 <div id="app">
  43. 43       <!-- 命名试图实现经典布局-->
  44. 44
  45. 45
  46. 46 <router-view></router-view>
  47. 47 <div class="container">
  48. 48 <router-view name='left'></router-view>
  49. 49 <!-- 设置了 name属性的router-view 只有在routes components中配置为【left:组件名】的组件才会展示到这里 -->
  50. 50 <router-view name='main'></router-view>
  51. 51 </div>
  52. 52 <router-view name='bottom'></router-view>
  53. 53
  54. 54
  55. 55
  56. 56
  57. 57
  58. 58
  59. 59
  60. 60
  61. 61 </div>
  62. 62
  63. 63
  64. 64 </body>
  65. 65 <script>
  66. 66 Vue.config.devtools = true;
  67. 67 //vue-rourer.js 被引入后,window全局就会多了一个VueRouter这样一个构造函数,可以new 一个路由配置实例
  68. 68 let comobj1 = {
  69. 69 template: '<h1 class="header">这是header</h1>',
  70. 70 created() {
  71. 71 console.log(this.$route.query) //vue-router 提供的用于访问url参数
  72. 72 }
  73. 73 }
  74. 74 let comobj2 = {
  75. 75 template: '<h1 class="left">这是左侧nav</h1>',
  76. 76 created() {
  77. 77 console.log(this.$route)
  78. 78 }
  79. 79 }
  80. 80 let comobj3 = {
  81. 81 template: '<h1 class="main">这是主体</h2>',
  82. 82 created() {
  83. 83 console.log(this.$route)
  84. 84 }
  85. 85 }
  86. 86 let comobj4 = {
  87. 87 template: '<h1 class="main">这是底部</h2>',
  88. 88 created() {
  89. 89 console.log(this.$route)
  90. 90 }
  91. 91 }
  92. 92
  93. 93
  94. 94
  95. 95 let routerobj = new VueRouter({
  96. 96 routes: [ //注意此处为 routes 不是 routers
  97. 97 {
  98. 98 path: '/',
  99. 99 components: { //此处除了可以用component指定展示特定的组件外,还可以使用components对象来展示若干组件
  100. 100 'default': comobj1, //router-view 默认展示键为default的组件
  101. 101 'left': comobj2, //router-view 命名 name='left',就会展示这个comobj2组件
  102. 102 'main': comobj3, ////router-view 命名 name='main',就会展示这个comobj3组件
  103. 103 'bottom': comobj4,
  104. 104 }
  105. 105 },
  106. 106
  107. 107 ]
  108. 108
  109. 109 })
  110. 110
  111. 111 let vm = new Vue({
  112. 112 el: '#app',
  113. 113 data: {
  114. 114
  115. 115 },
  116. 116 methods: {
  117. 117
  118. 118 },
  119. 119
  120. 120 router: routerobj //将路由实例与vue实例关联起来,注册路由实例
  121. 121 })
  122. 122 </script>
  123. 123
  124. 124 </html>

总结:命名视图使用场景,当一个路由规则匹配成功,想要展示多个组件的时候,命名视图就很适合做这份差事!

原文链接:http://www.cnblogs.com/Hijacku/p/14737700.html

 友情链接:直通硅谷  点职佳  北美留学生论坛

本站QQ群:前端 618073944 | Java 606181507 | Python 626812652 | C/C++ 612253063 | 微信 634508462 | 苹果 692586424 | C#/.net 182808419 | PHP 305140648 | 运维 608723728

W3xue 的所有内容仅供测试,对任何法律问题及风险不承担任何责任。通过使用本站内容随之而来的风险与本站无关。
关于我们  |  意见建议  |  捐助我们  |  报错有奖  |  广告合作、友情链接(目前9元/月)请联系QQ:27243702 沸活量
皖ICP备17017327号-2 皖公网安备34020702000426号