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实现的网页局布刷新效果
Dec 01 Javascript
IE6下通过a标签点击切换图片的问题
Nov 14 Javascript
JavaScript字符串插入、删除、替换函数使用示例
Jul 25 Javascript
JavaScript数组Array对象增加和删除元素方法总结
Jan 20 Javascript
JS实现表格数据各种搜索功能的方法
Mar 03 Javascript
JavaScript过滤字符串中的中文与空格方法汇总
Mar 07 Javascript
jQuery Validate 相关参数及常用的自定义验证规则
Mar 06 Javascript
详解node.js 下载图片的 2 种方式
Mar 02 Javascript
详解VUE里子组件如何获取父组件动态变化的值
Dec 26 Javascript
vue+element导航栏高亮显示的解决方式
Nov 12 Javascript
jQuery实现弹出层效果
Dec 10 jQuery
js实现鼠标切换图片(无定时器)
Jan 27 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
php5.2.0内存管理改进
2007/01/22 PHP
PHP 遍历XP文件夹下所有文件
2008/11/27 PHP
PHP+MYSQL会员系统的登陆即权限判断实现代码
2011/09/23 PHP
解决Codeigniter不能上传rar和zip压缩包问题
2014/03/07 PHP
PHP也能干大事 随机函数
2015/04/14 PHP
PHP中4种常用的抓取网络数据方法
2015/06/04 PHP
PHP实现的微信APP支付功能示例【基于TP5框架】
2019/09/16 PHP
Thinkphp 框架扩展之驱动扩展实例分析
2020/04/27 PHP
jQuery之浮动窗口实现代码(两种方法)
2010/09/08 Javascript
js当一个变量为函数时 应该注意的一点细节小结
2011/12/29 Javascript
javascript将数组插入到另一个数组中的代码
2013/01/10 Javascript
js返回前一页刷新本页重载页面
2014/07/29 Javascript
JavaScript弹出窗口方法汇总
2014/08/12 Javascript
jquery转盘抽奖功能实现
2015/11/13 Javascript
jQuery移动web开发中的页面初始化与加载事件
2015/12/03 Javascript
JavaScript计算器网页版实现代码分享
2016/07/15 Javascript
浅谈jquery.form.js的ajaxSubmit和ajaxForm的使用
2016/09/09 Javascript
jQuery实现导航高亮的方法【附demo源码下载】
2016/11/09 Javascript
swiper自定义分页器的样式
2020/09/14 Javascript
python实现的阳历转阴历(农历)算法
2014/04/25 Python
Python 实现选择排序的算法步骤
2018/04/22 Python
Python3.4 tkinter,PIL图片转换
2018/06/21 Python
Python 实现文件打包、上传与校验的方法
2019/02/13 Python
python定时复制远程文件夹中所有文件
2019/04/30 Python
selenium2.0中常用的python函数汇总
2019/08/05 Python
基于TensorFlow的CNN实现Mnist手写数字识别
2020/06/17 Python
一道Delphi上机题
2012/06/04 面试题
学生发电厂实习自我鉴定
2013/09/22 职场文书
幼儿园中班教学反思
2014/02/10 职场文书
财务负责人任命书
2014/06/06 职场文书
关于运动会广播稿50字
2014/10/18 职场文书
商铺门面租房协议书
2014/10/21 职场文书
销售辞职信范文
2015/03/02 职场文书
2019客服个人年终工作总结范文
2019/07/08 职场文书
go语言求任意类型切片的长度操作
2021/04/26 Golang
Java 多态分析
2022/04/26 Java/Android