直接先上效果图

这个单页面应用有两个路径:/home/about,与这两个路径对应的是两个组件Home和About。

整个实现过程

JavaScript

  1. 创建组件:创建单页面应用需要渲染的组件
  2. 创建路由:创建VueRouter实例
  3. 映射路由:调用VueRouter实例的map方法
  4. 启动路由:调用VueRouter实例的start方法

HTML

  1. 使用v-link指令
  2. 使用<router-view>标签

router.redirect

应用在首次运行时右侧是一片空白,应用通常都会有一个首页,例如:Home页。
使用router.redirect方法将根路径重定向到/home路径:

router.redirect({
'/': '/home'
})

router.redirect方法用于为路由器定义全局的重定向规则,全局的重定向会在匹配当前路径之前执行。

执行过程

当用户点击v-link指令元素时,我们可以大致猜想一下这中间发生了什么事情:

  • vue-router首先会去查找v-link指令的路由映射
  • 然后根据路由映射找到匹配的组件
  • 最后将组件渲染到<router-view>标签

1. 创建组件

首先引入vue.js和vue-router.js:

<script src="js/vue.js"></script>
<script src="js/vue-router.js"></script>

然后创建两个组件构造器Home和About:

var Home = Vue.extend({
template: '<div><h1>Home</h1><p>{{msg}}</p></div>',
data: function() {
return {
msg: 'Hello, vue router!'
}
}
}) var About = Vue.extend({
template: '<div><h1>About</h1><p>This is the tutorial about vue-router.</p></div>'
})

2. 创建Router

var router = new VueRouter()

调用构造器VueRouter,创建一个路由器实例router。

3. 映射路由

router.map({
'/home': { component: Home },
'/about': { component: About }
})

调用router的map方法映射路由,每条路由以key-value的形式存在,key是路径,value是组件。
例如:'/home'是一条路由的key,它表示路径;{component: Home}则表示该条路由映射的组件。

4. 使用v-link指令

<div class="list-group">
<a class="list-group-item" v-link="{ path: '/home'}">Home</a>
<a class="list-group-item" v-link="{ path: '/about'}">About</a>
</div>

在a元素上使用v-link指令跳转到指定路径。

5. 使用<router-view>标签

<router-view></router-view>

在页面上使用<router-view></router-view>标签,它用于渲染匹配的组件。

6. 启动路由

var App = Vue.extend({})
router.start(App, '#app')

路由器的运行需要一个根组件,router.start(App, '#app') 表示router会创建一个App实例,并且挂载到#app元素。
注意:使用vue-router的应用,不需要显式地创建Vue实例,而是调用start方法将根组件挂载到某个元素。

最新文章

  1. JavaScript笔记及总结
  2. SpringMVC4 + Spring + MyBatis3 基于注解的最简配置
  3. POJ 1191 棋盘分割
  4. mapreduce任务中Shuffle和排序的过程
  5. Things make us different
  6. sqlsever2008数据库的备份与还原
  7. Copying Linked Lists with Random Pointers
  8. Cocos2d-x 安装教程for mac(Xcode)
  9. PHP不使用递归的无限级分类
  10. PAT (Advanced Level) 1056. Mice and Rice (25)
  11. Oracle中添加自动编号的序列
  12. Linux的安装(虚拟机环境)与基础配置
  13. 巧妙地使用typora编辑有道云笔记
  14. Es6入门解构
  15. Set Matrix Zeroes leetcode java
  16. 微信小程序——template的使用方法
  17. Android 基于 Speex 的高度封装语音库,0 耦合,没三方jar包
  18. tomcat服务器输入localhost可以访问,ip无法访问解决办法
  19. Linux(一) - Unix&Linux 历史
  20. 【模板】SPOJ FACT0 大数分解 miller-rabin &amp; pollard-rho

热门文章

  1. 常见 SQL 语句的加锁分析
  2. linux 压缩、解压、zip/unzip/jar
  3. angular自定义module
  4. C语言宏应用-------#define STR(X) #X
  5. Angular4.0 探索子路由和懒加载 loadChildren
  6. C++ list运用实例
  7. shell中函数的使用
  8. 使用Javascript从Google Places搜索api获取纬度和经度
  9. phpspreadsheet 中文文档 粗翻版
  10. Zabbix 3.0 配置企业微信报警(注册---测试)