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 相关文章推荐
[原创]用javascript实现检测指定目录是否存在的方法
Jan 12 Javascript
document.getElementById为空或不是对象的解决方法
Jan 24 Javascript
基于jQuery的树控件实现代码(asp.net+json)
Jul 11 Javascript
基于Jquery制作的幻灯片图集效果打包下载
Feb 12 Javascript
JS对select控件option选项的增删改查示例代码
Oct 21 Javascript
JS获取鼠标坐标位置实例分析
Jan 20 Javascript
简单快速的实现js计算器功能
Aug 17 Javascript
js实现Tab选项卡切换效果
Jul 17 Javascript
django使用channels2.x实现实时通讯
Nov 28 Javascript
微信小程序实现一张或多张图片上传(云开发)
Sep 25 Javascript
Vue data的数据响应式到底是如何实现的
Feb 11 Javascript
javascript异常处理实现原理详解
Feb 17 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
PHP6 mysql连接方式说明
2009/02/09 PHP
PHP mail()函数使用及配置方法
2014/01/14 PHP
php设计模式之模板模式实例分析【星际争霸游戏案例】
2020/03/24 PHP
jquery实现鼠标滑过小图时显示大图的方法
2015/01/14 Javascript
jQuery读取XML文件内容的方法
2015/03/09 Javascript
vue路由嵌套的SPA实现步骤
2017/11/06 Javascript
JS 仿支付宝input文本输入框放大组件的实例
2017/11/14 Javascript
JS声明对象时属性名加引号与不加引号的问题及解决方法
2018/02/16 Javascript
如何基于javascript实现贪吃蛇游戏
2020/02/09 Javascript
jQuery实现的移动端图片缩放功能组件示例
2020/05/01 jQuery
jQuery实现雪花飘落效果
2020/08/02 jQuery
关于Python面向对象编程的知识点总结
2017/02/14 Python
python获取指定时间差的时间实例详解
2017/04/11 Python
python 系统调用的实例详解
2017/07/11 Python
Python 获得命令行参数的方法(推荐)
2018/01/24 Python
Python中常见的异常总结
2018/02/20 Python
Python列表删除元素del、pop()和remove()的区别小结
2019/09/11 Python
windows下Python安装、使用教程和Notepad++的使用教程
2019/10/06 Python
Python:type、object、class与内置类型实例
2019/12/25 Python
基于python及pytorch中乘法的使用详解
2019/12/27 Python
python脚本监控logstash进程并邮件告警实例
2020/04/28 Python
使用CSS3实现字体颜色渐变的实现
2020/08/10 HTML / CSS
canvas 如何绘制线段的实现方法
2018/07/12 HTML / CSS
KLOOK客路:发现更好玩的世界,预订独一无二的旅行体验
2016/12/16 全球购物
欧洲最大的球衣网上商店:Kitbag
2017/11/11 全球购物
应届生护士求职信
2013/11/01 职场文书
2014道德模范事迹材料
2014/02/16 职场文书
付款委托书范本
2014/04/04 职场文书
员工工作表现评语
2014/04/26 职场文书
抵押贷款承诺书
2014/05/30 职场文书
经贸日语专业自荐信
2014/09/02 职场文书
2014法院四风问题对照检查材料思想汇报
2014/10/04 职场文书
幼儿园个人总结
2015/02/28 职场文书
MySQL表字段时间设置默认值
2021/05/13 MySQL
MySQL 表锁定 LOCK和UNLOCK TABLES的 SQL语法
2022/04/18 MySQL
Springboot中如何自动转JSON输出
2022/06/16 Java/Android