vue router 配置路由的方法


Posted in Javascript onJuly 26, 2018

用 Vue.js + vue-router 创建单页应用,是非常简单的。使用 Vue.js ,我们已经可以通过组合组件来组成应用程序,当你要把 vue-router 添加进来,我们需要做的是,将组件(components)映射到路由(routes),然后告诉 vue-router 在哪里渲染它们。

路由的基本实现

<!DOCTYPE html>
<html lang="en">

<head>
 <meta charset="UTF-8">
 <meta name="viewport" content="width=device-width, initial-scale=1.0">
 <meta http-equiv="X-UA-Compatible" content="ie=edge">
 <title>Document</title>
 <style>
  /* 实现当前 路由导航高亮 */
  .router-link-exact-active, .router-link-active {
   color: red;
   font-size: 30px;
  }
 </style> 
</head>

<body>
 <div id="app">
  <!-- 路由的入口,也就是a标签 -->
  <router-link to="/home">home</router-link>
  <router-link to="/about">about</router-link>

  <!-- 指定页面中路由的出口,也就是:路由匹配组件将来展示在页面中的位置 -->
  <router-view></router-view>
 </div>

 <script src="./vue.js"></script>
 <!-- 引入 路由插件 -->
 <script src="./node_modules/vue-router/dist/vue-router.js"></script>
 <script>
  /* 
   路由的使用步骤:
   1 引入 路由插件的js文件
   2 创建几个组件
   3 通过 VueRouter 来创建一个路由的实例,并且在参数中配置好路由规则
   4 将 路由实例 与 Vue实例关联起来,通过 router 属性
   5 在页面中使用 router-link 来定义导航(a标签) 路由路口
   6 在页面中使用 router-view 来定义路由出口(路由内容展示在页面中的位置)
   */

  // Vue中的路由是:哈希值 和 组件的对应关系

  // component 方法能够返回一个对象,用这个对象就可以表示当前组件
  const Home = Vue.component('home', {
   template: `<h1>这是 Home 组件</h1>`
  })
  const About = Vue.component('about', {
   template: `<h1>这是 About 组件</h1>`
  })

  // 配置路由规则
  const router = new VueRouter({
   // 通过 routes 来配置路由规则,值:数组
   routes: [
    // 数组中的每一项表示一个具体的路由规则
    // path 用来设置浏览器URL中的哈希值
    // componet 属性用来设置哈希值对应的组件
    { path: '/home', component: Home },
    { path: '/about', component: About },
    // redirect 重定向: 让当前匹配的 / ,跳转到 /home 对应的组件中, 也就是默认展示: home组件
    { path: '/', redirect: '/home' }
   ]
  })

  var vm = new Vue({
   el: '#app',

   // Vue的配置对象中有一个配置项叫做:router
   // 用来指定当前要使用的路由
   // router: router
   router
  })
 </script>
</body>

</html>

重定向

解释:将 / 重定向到 /home

{ path: '/', redirect: '/home' }

路由导航高亮

说明:当前匹配的导航链接,会自动添加router-link-exact-active router-link-active类

路由参数

  • 说明:我们经常需要把某种模式匹配到的所有路由,全都映射到同一个组件,此时,可以通过路由参数来处理
  • 语法:/user/:id
  • 使用:当匹配到一个路由时,参数值会被设置到 this.$route.params
  • 其他:可以通过 $route.query 获取到 URL 中的查询参数 等
// 链接:
<router-link to="/user/1001">用户 Jack</router-link>
<router-link to="/user/1002">用户 Rose</router-link>

// 路由:
{ path: '/user/:id', component: User }

// User组件:
const User = {
 template: `<div>User {{ $route.params.id }}</div>`
}

嵌套路由 - 子路由

  • Vue路由是可以嵌套的,即:路由中又包含子路由
  • 规则:父组件中包含 router-view,在路由规则中使用 children 配置
// 父组件:
const User = Vue.component('user', {
 template: `
  <div class="user">
   <h2>User Center</h2>
   <router-link to="/user/profile">个人资料</router-link>
   <router-link to="/user/posts">岗位</router-link>
   <!-- 子路由展示在此处 -->
   <router-view></router-view>
  </div>
  `
})

// 子组件:
const UserProfile = {
 template: '<h3>个人资料:张三</h3>'
}
const UserPosts = {
 template: '<h3>岗位:FE</h3>'
}

{ path: '/user', component: User,
 // 子路由配置:
 children: [
  {
   // 当 /user/profile 匹配成功,
   // UserProfile 会被渲染在 User 的 <router-view> 中
   path: 'profile',
   component: UserProfile
  },
  {
   // 当 /user/posts 匹配成功
   // UserPosts 会被渲染在 User 的 <router-view> 中
   path: 'posts',
   component: UserPosts
  }
 ]
}

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
jQuery 树形结构的选择器
Feb 15 Javascript
使用ExtJS技术实现的拖动树结点
Aug 05 Javascript
jquerymobile局部渲染的各种刷新方法小结
Mar 05 Javascript
JS实现两个大数(整数)相乘
Apr 28 Javascript
php读取sqlite数据库入门实例代码
Jun 25 Javascript
jquery根据td给相同tr下其他td赋值的实现方法
Oct 05 Javascript
jQuery UI插件实现百度提词器效果
Nov 21 Javascript
js移动焦点到最后位置的简单方法
Nov 25 Javascript
Angular2实现自定义双向绑定属性
Mar 22 Javascript
vue-cli单页应用改成多页应用配置详解
Jul 14 Javascript
JavaScript实现与web通信的方法详解
Aug 07 Javascript
JavaScript 如何计算文本的行数的实现
Sep 14 Javascript
vue+webpack模拟后台数据的示例代码
Jul 26 #Javascript
JavaScript设计模式之工厂模式和抽象工厂模式定义与用法分析
Jul 26 #Javascript
vue父组件异步获取数据传给子组件的方法
Jul 26 #Javascript
JavaScript设计模式之构造器模式(生成器模式)定义与用法实例分析
Jul 26 #Javascript
JavaScript设计模式之单例模式原理与用法实例分析
Jul 26 #Javascript
JavaScript设计模式之原型模式分析【ES5与ES6】
Jul 26 #Javascript
如何把vuejs打包出来的文件整合到springboot里
Jul 26 #Javascript
You might like
php 网页游戏开发入门教程一(webgame+design)
2009/10/26 PHP
php中fsockopen用法实例
2015/01/05 PHP
PHP实现linux命令tail -f
2016/02/22 PHP
thinkPHP数据库增删改查操作方法实例详解
2016/12/06 PHP
完美解决thinkphp唯一索引重复时出错的问题
2017/03/31 PHP
js 字符串操作函数
2009/07/25 Javascript
基于jquery的获取mouse坐标插件的实现代码
2010/04/01 Javascript
解决iframe的frameborder在chrome/ff/ie下的差异
2010/08/12 Javascript
jquery实现更改表格行顺序示例
2014/04/30 Javascript
TypeOf这些知识点你了解吗
2016/02/21 Javascript
JS函数定义方式的区别介绍
2016/03/22 Javascript
让html元素随浏览器的大小自适应垂直居中的实现方法
2016/10/12 Javascript
div实现自适应高度的textarea实现angular双向绑定
2017/01/08 Javascript
Bootstrap jquery.twbsPagination.js动态页码分页实例代码
2017/02/20 Javascript
javascript 动态生成css代码的两种方法
2017/03/17 Javascript
ionic+AngularJs实现获取验证码倒计时按钮
2017/04/22 Javascript
jQuery简单绑定单个事件的方法示例
2017/06/10 jQuery
通过实践编写优雅的JavaScript代码
2019/05/30 Javascript
vue中使用百度脑图kityminder-core二次开发的实现
2019/09/26 Javascript
JavaScript实现猜数字游戏
2020/05/20 Javascript
JS script脚本中async和defer区别详解
2020/06/24 Javascript
Python实现高效求解素数代码实例
2015/06/30 Python
python中使用正则表达式的后向搜索肯定模式(推荐)
2017/11/11 Python
python在线编译器的简单原理及简单实现代码
2018/02/02 Python
使用PM2+nginx部署python项目的方法示例
2018/11/07 Python
python打印9宫格、25宫格等奇数格 满足横竖斜相加和相等
2019/07/19 Python
Python实现敏感词过滤的4种方法
2020/09/12 Python
CSS3教程(3):border-color网页边框色彩
2009/04/02 HTML / CSS
10条PHP编程习惯
2014/05/26 面试题
土木工程个人自荐信范文
2013/11/30 职场文书
2014年公司迎新年活动方案
2014/02/24 职场文书
2014年行政后勤工作总结
2014/12/06 职场文书
2015年公司新年寄语
2014/12/08 职场文书
工作感言一句话
2015/08/01 职场文书
如何用 Python 子进程关闭 Excel 自动化中的弹窗
2021/05/07 Python
使用Pytorch训练two-head网络的操作
2021/05/28 Python