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 相关文章推荐
JS 统计时间
Mar 09 Javascript
javascript获取当前ip的代码
May 10 Javascript
学习面向对象之面向对象的基本概念:对象和其他基本要素
Nov 30 Javascript
jquery在项目中做复选框时遇到的一些问题笔记
Nov 17 Javascript
javascript类型转换示例
Apr 29 Javascript
javascript弹出页面回传值的方法
Jan 28 Javascript
Javascript设计模式之装饰者模式详解篇
Jan 17 Javascript
jQuery实现选项卡功能(两种方法)
Mar 08 Javascript
Angular 4依赖注入学习教程之组件服务注入(二)
Jun 04 Javascript
从零开始搭建一个react项目开发
Feb 09 Javascript
解决Mac安装thrift因bison报错的问题
May 17 Javascript
如何让微信小程序页面之间的通信不再变困难
Jun 03 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 session 错误
2009/05/21 PHP
关于PHP结束标签的使用细节探讨及联想
2013/03/04 PHP
php后台如何避免用户直接进入方法实例
2013/10/15 PHP
PHP中的插件机制原理和实例
2014/07/08 PHP
js跨域和ajax 跨域问题的实现思路
2009/09/05 Javascript
javascript 获取select下拉列表值的代码
2009/09/07 Javascript
ASP 过滤数组重复数据函数(加强版)
2010/05/31 Javascript
用Juery网页选项卡实现代码
2011/06/13 Javascript
分享使用AngularJS创建应用的5个框架
2015/12/05 Javascript
jQuery通过deferred对象管理ajax异步
2016/05/20 Javascript
js css实现垂直方向自适应的三角提示菜单
2016/06/26 Javascript
weUI应用之JS常用信息提示弹层的封装
2016/11/21 Javascript
JavaScript实现旋转轮播图
2020/08/18 Javascript
web前端vue之CSS过渡效果示例
2018/01/10 Javascript
node前端模板引擎Jade之标签的基本写法
2018/05/11 Javascript
javascript实现点击小图显示大图
2020/11/29 Javascript
Django ORM框架的定时任务如何使用详解
2017/10/19 Python
django 解决manage.py migrate无效的问题
2018/05/27 Python
利用jupyter网页版本进行python函数查询方式
2020/04/14 Python
CSS3 三维变形实现立体方块特效源码
2016/12/15 HTML / CSS
CSS3弹性伸缩布局之box布局
2016/07/12 HTML / CSS
css3让div随鼠标移动而抖动起来
2014/02/10 HTML / CSS
Jeep牧马人、切诺基和自由人零配件:4 Wheel Drive Hardware
2017/07/02 全球购物
大学生专业个人学习的自我评价
2013/10/26 职场文书
汽修专业学生自我鉴定
2013/11/16 职场文书
中国央视网签名寄语
2014/01/18 职场文书
业绩考核岗位职责
2014/02/01 职场文书
村委会换届选举方案
2014/05/03 职场文书
设计专业毕业生求职信
2014/06/25 职场文书
学校总务处领导班子民主生活会对照检查材料思想汇报
2014/09/27 职场文书
2014年前台个人工作总结
2014/11/14 职场文书
初中家长评语大全
2014/12/26 职场文书
学生保证书格式
2015/02/27 职场文书
土建施工员岗位职责
2015/04/11 职场文书
上诉答辩状范文
2015/05/22 职场文书
2015婚礼主持词开场白
2015/05/28 职场文书