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 相关文章推荐
Prototype RegExp对象 学习
Jul 19 Javascript
jqeury eval将字符串转换json的方法
Jan 20 Javascript
js 回车提交表单两种实现方法
Dec 31 Javascript
如何判断微信内置浏览器(通过User Agent实现)
Sep 01 Javascript
轻松实现Bootstrap图片轮播
Apr 20 Javascript
jQuery使用contains过滤器实现精确匹配方法详解
Feb 25 Javascript
jQuery实现点击水纹波动动画
Apr 10 Javascript
js实现纯前端的图片预览
Apr 27 Javascript
用vue封装插件并发布到npm的方法步骤
Oct 18 Javascript
vue video和vue-video-player实现视频铺满教程
Oct 30 Javascript
在Angular项目使用socket.io实现通信的方法
Jan 05 Javascript
vue组件冲突之引用另一个组件出现组件不显示的问题
Apr 13 Vue.js
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
Dwz与thinkphp整合下的数据导出到Excel实例
2014/12/04 PHP
PHP 实现类似js中alert() 提示框
2015/03/18 PHP
PHP判断表达式中括号是否匹配的简单实例
2016/10/22 PHP
laravel配置Redis多个库的实现方法
2019/04/10 PHP
Laravel配置全局公共函数的方法步骤
2019/05/09 PHP
Swoole源码中如何查询Websocket的连接问题详解
2020/08/30 PHP
JS俄罗斯方块,包含完整的设计理念
2010/12/11 Javascript
Javascript insertAfter() 实现函数代码
2011/10/12 Javascript
判断文件是否正在被使用的JS代码
2013/12/21 Javascript
简单选项卡 js和jquery制作方法分享
2014/02/26 Javascript
javascript读写json示例
2014/04/11 Javascript
JavaScript中Cookie操作实例
2015/01/09 Javascript
JavaScript 判断一个对象{}是否为空对象的简单方法
2016/10/09 Javascript
vue2.0父子组件间通信的实现方法
2017/04/19 Javascript
mac上node.js环境的安装测试
2017/07/03 Javascript
利用js将ajax获取到的后台数据动态加载至网页中的方法
2018/08/08 Javascript
Vuejs2 + Webpack框架里,模拟下载的实例讲解
2018/09/05 Javascript
浅谈在Vue.js中如何实现时间转换指令
2019/01/06 Javascript
JS造成内存泄漏的几种情况实例分析
2020/03/02 Javascript
使用vue编写h5公众号跳转小程序的实现代码
2020/11/27 Vue.js
vue 页面跳转的实现方式
2021/01/12 Vue.js
Python中用max()方法求最大值的介绍
2015/05/15 Python
Python的Socket编程过程中实现UDP端口复用的实例分享
2016/03/19 Python
python中requests小技巧
2017/05/10 Python
windows10下python3.5 pip3安装图文教程
2018/04/02 Python
基于Django OneToOneField和ForeignKey的区别详解
2020/03/30 Python
什么是python的列表推导式
2020/05/26 Python
HTML5未来发展趋势
2016/02/01 HTML / CSS
ET Mall东森购物网:东森严选
2017/03/06 全球购物
实习报告评语
2014/04/26 职场文书
教师求职信怎么写
2015/03/20 职场文书
公司档案管理制度
2015/08/05 职场文书
学习习近平主席讲话心得体会
2016/01/20 职场文书
关于JavaScript轮播图的实现
2021/11/20 Javascript
Python使用华为API为图像设置多个锚点标签
2022/04/12 Python
在 Python 中利用 Pool 进行多线程
2022/04/24 Python