vue的单页面应用是基于路由和组件的,路由用于设定访问路径,并将路径和组件映射起来。传统的页面应用,是用一些超链接来实现页面切换和跳转的。在vue-router单页面应用中,则是路径之间的切换,也就是组件的切换。

首先在html中,引入vue-router.js和vue.js,用router-link触发路由跳转,router-link可以像a标签一样使用和定义样式

router-view区域是路由匹配到的组件渲染的地方

  1. <script src="https://unpkg.com/vue/dist/vue.js"></script>
  2. <script src="https://unpkg.com/vue-router/dist/vue-router.js"></script>
  3.  
  4. <div id="app">
  5. <h1>Hello App!</h1>
  6. <p>
  7. <!-- 使用 router-link 组件来导航. -->
  8. <!-- 通过传入 `to` 属性指定链接. -->
  9. <!-- <router-link> 默认会被渲染成一个 `<a>` 标签 -->
  10. <router-link to="/foo">Go to Foo</router-link>
  11. <router-link to="/bar">Go to Bar</router-link>
  12. </p>
  13. <!-- 路由出口 -->
  14. <!-- 路由匹配到的组件将渲染在这里 -->
  15. <router-view></router-view>
  16. </div>

然后是js代码

首先定义路由组件,组件可以是简单的组件(template简单定义即可),也可是extend定义的复杂组件

接下来定义路由映射表,就是定义路径和组件之间的映射 

然后使用路由映射表创建路由对象 

最后使用路由对象创建vue对象,并挂载到指定元素

  1. // 0. 如果使用模块化机制编程,导入 Vue 和 VueRouter,要调用 Vue.use(VueRouter)
  2.  
  3. // 1. 定义(路由)组件。
  4. // 可以从其他文件 import 进来
  5. const Foo = { template: '<div>foo</div>' }
  6. const Bar = { template: '<div>bar</div>' }
  7.  
  8. // 2. 定义路由
  9. // 每个路由应该映射一个组件。 其中"component" 可以是
  10. // 通过 Vue.extend() 创建的组件构造器,
  11. // 或者,只是一个组件配置对象。
  12. // 我们晚点再讨论嵌套路由。
  13. const routes = [
  14. { path: '/foo', component: Foo },
  15. { path: '/bar', component: Bar }
  16. ]
  17.  
  18. // 3. 创建 router 实例,然后传 `routes` 配置
  19. // 你还可以传别的配置参数, 不过先这么简单着吧。
  20. const router = new VueRouter({
  21. routes // (缩写)相当于 routes: routes
  22. })
  23.  
  24. // 4. 创建和挂载根实例。
  25. // 记得要通过 router 配置参数注入路由,
  26. // 从而让整个应用都有路由功能
  27. const app = new Vue({
  28. router// (缩写)相当于 router: router
  1. }).$mount('#app') // 现在,应用已经启动了!

上例中,路由映射表实例名为routes,在创建路由对象时可以缩写,如果不叫routes,比如叫routesa,则创建路由对象时必须写routes:routesa

创建vue对象时,路由对象名也一样,如果不叫router,也不能缩写

使用extend创建模板:

  1. var todoItem = Vue.extend({
  2. data: function() {
  3. return {
  4. todoData: [
  5. { id: 0, text: '蔬菜' },
  6. { id: 1, text: '奶酪' },
  7. { id: 2, text: '随便其它什么人吃的东西' }
  8. ]
  9. };
  10. },
  11. template: `
  12. <ul>
  13. <li v-for='(d, i) in todoData' :key="i">
  14. {{ d.text }}
  15. </li>
  16. </ul>
  17. `,
  18.  
  19. });
  20.  
  21. Home = { template: '<div>foo</div>' }
  22. About = { template: '<div>bar</div>' }
  23.  
  24. routes = [
  25. { path: '/home', component: Home },
  26. { path: '/about', component: todoItem }
  27. ]
  28.  
  29. router = new VueRouter({
  30. routes:routes // (缩写)相当于 routes: routes
  31. });
  32.  
  33. app = new Vue({
  34. router:router
  35. }).$mount('#app');

  

还可以这样写template

  1. <!DOCTYPE html>
  2. <!-- saved from url=(0077)https://keepfool.github.io/vue-tutorials/06.Router/basic/basic_01.html#!/home -->
  3. <html>
  4.  
  5. <head>
  6. <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
  7. <title>abc</title>
  8. <link rel="stylesheet" href="https://cdn.bootcss.com/bootstrap/3.3.7/css/bootstrap.min.css">
  9. <link rel="stylesheet" href="./basic_01_files/custom.css">
  10. </head>
  11.  
  12. <body>
  13. <div id="app">
  14. <div class="row">
  15. <div class="col-xs-offset-2 col-xs-8">
  16. <div class="page-header">
  17. <h2>Router Basic - 01</h2>
  18. </div>
  19. </div>
  20. </div>
  21. <div class="row">
  22. <div class="col-xs-2 col-xs-offset-2">
  23. <div class="list-group">
  24.  
  25. <router-link class="list-group-item" to="/home">Go to Foo</router-link>
  26. <router-link class="list-group-item" to="/about">Go to Bar</router-link>
  27. </div>
  28. </div>
  29. <router-view></router-view>
  30. </div>
  31. </div>
  32. <template id="home">
  33. <div>
  34. <h1>Home</h1>
  35. <p>{{msg}}</p>
  36. </div>
  37. </template>
  38.  
  39. <script src="https://cdn.bootcss.com/vue/2.4.2/vue.min.js"></script>
  40. <script src="https://cdn.bootcss.com/vue-router/2.7.0/vue-router.min.js"></script>
  41. <script>
  42.  
  43. var todoItem = Vue.extend({
  44. data: function() {
  45. return {
  46. todoData: [
  47. { id: 0, text: '蔬菜' },
  48. { id: 1, text: '奶酪' },
  49. { id: 2, text: '随便其它什么人吃的东西' }
  50. ]
  51. };
  52. },
  53. template: `
  54. <ul>
  55. <li v-for='(d, i) in todoData' :key="i">
  56. {{ d.text }}
  57. </li>
  58. </ul>
  59. `,
  60.  
  61. });
  62.  
  63. var t_test = Vue.extend({
  64. data:function(){
  65. return {
  66. msg:"hello,test"
  67. };
  68. },
  69. template:"#home"
  70.  
  71. }
  72.  
  73. );
  74.  
  75. // Home = { template: '<div>foo</div>' }
  76. // About = { template: '<div>bar</div>' }
  77.  
  78. routes = [
  79. { path: '/home', component: t_test },
  80. { path: '/about', component: todoItem }
  81. ]
  82.  
  83. router = new VueRouter({
  84. routes: routes // (缩写)相当于 routes: routes
  85. });
  86.  
  87. app = new Vue({
  88. router: router
  89. }).$mount('#app');
  90. </script>
  91. </body>
  92.  
  93. </html>

  如果不需要固定的导航链接,可以把router-link放在模板里面:

  1. <!DOCTYPE html>
  2. <html lang="en">
  3.  
  4. <head>
  5. <meta charset="UTF-8">
  6. <title>abc</title>
  7. <script src="https://unpkg.com/vue/dist/vue.js"></script>
  8. <script src="https://unpkg.com/vue-router/dist/vue-router.js"></script>
  9. </head>
  10.  
  11. <body>
  12. <div id="app">
  13. <h1>Hello App!</h1>
  14.  
  15. <!-- 路由出口 -->
  16. <!-- 路由匹配到的组件将渲染在这里 -->
  17. <router-view>
  18.  
  19. </router-view>
  20. </div>
  21. </body>
  22. <script type="text/javascript">
  23. // 0. 如果使用模块化机制编程,导入 Vue 和 VueRouter,要调用 Vue.use(VueRouter)
  24.  
  25. // 1. 定义(路由)组件。
  26. // 可以从其他文件 import 进来
  27. const Foo = { template: '<router-link to="/bar">Go to Bar</router-link>' }
  28. const Bar = { template: '<router-link to="/foo">Go to Foo</router-link>' }
  29.  
  30. // 2. 定义路由
  31. // 每个路由应该映射一个组件。 其中"component" 可以是
  32. // 通过 Vue.extend() 创建的组件构造器,
  33. // 或者,只是一个组件配置对象。
  34. // 我们晚点再讨论嵌套路由。
  35. const routes = [
  36. { path: '/foo', component: Foo },
  37. { path: '/bar', component: Bar }
  38. ]
  39.  
  40. // 3. 创建 router 实例,然后传 `routes` 配置
  41. // 你还可以传别的配置参数, 不过先这么简单着吧。
  42. const router = new VueRouter({
  43. routes // (缩写)相当于 routes: routes
  44. })
  45.  
  46. // 4. 创建和挂载根实例。
  47. // 记得要通过 router 配置参数注入路由,
  48. // 从而让整个应用都有路由功能
  49. const app = new Vue({
  50. router // (缩写)相当于 router: router
  51.  
  52. }).$mount('#app') // 现在,应用已经启动了!
  53. </script>
  54.  
  55. </html>

进去的时候打网址

xxx/xx.html#/foo 或 xxx/xx.html#/bar

就可以实现foo和bar模板之间互相跳转

也可以设置默认路由:

const routes = [
    { path: '/', component: Bar },
    { path: '/foo', component: Foo },
    { path: '/bar', component: Bar },
    
]

vue路由--静态路由的更多相关文章

  1. Linux 路由 静态路由

    Linux 路由 静态路由 目录 Linux 路由 静态路由 一.临时生效,使用命令route A.添加到主机的路由 B.添加到网络的路由 C.添加默认路由 D.删除路由 E.查看所有路由信息 二.临 ...

  2. Python编程系列---使用字典实现路由静态路由

    def index(): print('Index Page....') def bbs(): print('BBS Page....') def login(): print('Login Page ...

  3. CCNA 之 五 路由协议 一 静态路由

    静态路由 路由选择原理 什么是路由? 就如同去某一个地方,会有很多种路线,每一条路线经都可以称之为路由: 路由器中会维护一张路由表,每一个表项都是一条路由,也就是去往某个网络的路径,然后将对应的数据包 ...

  4. IP和静态路由技术概述

    1. IP地址的构成 IP地址:32比特的二进制数字,通常采用点分十进制方式表示. IP地址由两部分组成. 网络号码字段(Net-id)用于区分不同的网络.网络号码字段的前几位成为类别字段(又称为类别 ...

  5. HCIE笔记-第十节-静态路由

    协议 :标识 前方的目的网络 是通过什么协议形成的 优先级:代表形成路由的协议的优先级数值 [厂商规定] 开销值:代表该路由协议形成此路由时的开销 -- 不同的协议计算开销值的方式有区别(越小越优) ...

  6. vue动态添加路由addRoutes之不能将动态路由存入缓存

    在我不知道vue的路由还可以通过addRoutes动态添加时,我只知道vue的路由都是写死在路由表中的,每当跳转时再去加载相应的路由.直到在一个新公司接到需要根据用户的权限显示不同的菜单的需求时才知道 ...

  7. Vue 实现动态路由及登录&404页面跳转控制&页面刷新空白解决方案

    Vue实现动态路由及登录&404页面跳转控制&页面刷新空白解决方案   by:授客 QQ:1033553122   开发环境   Win 10   Vue 2.9.6   node-v ...

  8. Redhat、CentOS添加静态路由的标准方法

    我们经常遇到需要在系统默认路由的基础上,额外添加静态路由的需求.为了使得下次系统启动这些静态路由依旧生效,我们可能采取在rc.loal里加入route命令追加静态路由的方法. 现在给大家推荐Redha ...

  9. pptp 之 静态路由

    上网的人总是离不开VPN,你们都懂得.以前总是买付费的VPN,慢的要死,还不便宜.于是就自己买了个国外VPS 搭建了个PPTP,超级简单.网上教程大把大把的. VPN是全局代理,上google啥的没毛 ...

随机推荐

  1. Oracle v_$和v$的解释

    以v_$mystat和v$mystat具体说明 grant语句中使用的v_$mystat和test用户访问的v$mystat不一样 这里说一下 v$mystat 和 v_$mystat 的区别 初始状 ...

  2. java常量 数据类型

    一.常量 概念:程序运行期间,内容不发生改变的量 1.字符串常量 双引号 2.整数常量 3.浮点数常量 4.字符常量 单引号 一个字符 必须要有一个字符 不能为空 5.布尔常量 true false ...

  3. 「 深入浅出 」集合Map

    系列文章: 「 深入浅出 」java集合Collection和Map 「 深入浅出 」集合List 「 深入浅出 」集合Set 前面已经介绍完了Collection接口下的集合实现类,今天我们来介绍M ...

  4. 关于Xen

    尝试了各种方法搭建xen,尝试过从xenserver入手,但似乎最近时间端不允许访问,感谢我的老师,叫我从kvm入手,暂时记下xen中种种的坑,以后有缘再战.欢迎交流

  5. JVM: JVM 内存划分

    概述 如果在大学里学过或者在工作中使用过 C 或者 C++ 的读者一定会发现这两门语言的内存管理机制与 Java 的不同.在使用 C 或者 C++ 编程时,程序员需要手动的去管理和维护内存,就是说需要 ...

  6. C#反射与特性(九):全网最全-解析反射

    目录 1,判断类型 1.1 类和委托 1.2 值类型 1.3 接口 1.4 数组 2, 类型成员 2.1 类 2.2 委托 2.3 接口 [微信平台,此文仅授权<NCC 开源社区>订阅号发 ...

  7. JS-09-数组

    <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...

  8. Redhat6.7 切换Centos yum源

    转自:http://inlhx.iteye.com/blog/2336729 RedHat 更换Yum源 1.检查yum包 rpm -qa |grep yum 2.删除自带包 rpm -aq | gr ...

  9. Xmind8 Pro 破解教程(序列号|破解文件)

    最近需要打开文件后缀名为.xmind的文件,所以下载了Xmind8 .打开以后想要导出,奈何普通版本只能导出.txt文本文档,所以只好动手pj.话不多说看下边.一.下载XMindCrack.jar文件 ...

  10. Centos 7 最小化部署zabbix

    前言 文章内容是作者本人编写,之前一直放在word文档中,突然有闲情转移到博客上来了,欢迎后续观看者有问题找我探讨~~~ 废话不多说,先说下原理吧 概述 工作原理 通过c/s模式采集数据,基于b/s模 ...