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 对Cookie 操作的封装小结
Dec 31 Javascript
javascript SpiderMonkey中的函数序列化如何进行
Dec 05 Javascript
jQuery实现的五子棋游戏实例
Jun 13 Javascript
BootStrap Progressbar 实现大文件上传的进度条的实例代码
Jun 27 Javascript
老生常谈 js中this的指向
Jun 30 Javascript
JavaScript制作简单分页插件
Sep 11 Javascript
jQuery简单倒计时效果完整示例
Sep 20 Javascript
JS实现获取来自百度,Google,soso,sogou关键词的方法
Dec 21 Javascript
使用Angular缓存父页面数据的方法
Jan 03 Javascript
axios中cookie跨域及相关配置示例详解
Dec 20 Javascript
详解JavaScript函数callee、call、apply的区别
Mar 08 Javascript
vue单页面在微信下只能分享落地页的解决方案
Apr 15 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
VFP与其他应用程序的集成
2006/10/09 PHP
php使用GeoIP库实例
2014/06/27 PHP
PHP copy函数使用案例代码解析
2020/09/01 PHP
模拟用户操作Input元素,不会触发相应事件
2007/05/11 Javascript
按钮接受回车事件的三种实现方法
2014/06/06 Javascript
浅析jQuery Ajax请求参数和返回数据的处理
2016/02/24 Javascript
解决ajax不能访问本地文件问题(利用js跨域原理)
2017/01/24 Javascript
vue.js指令和组件详细介绍及实例
2017/04/06 Javascript
vue.js组件之间传递数据的方法
2017/07/10 Javascript
jQuery实现动态加载(按需加载)javascript文件的方法分析
2019/05/31 jQuery
vue 实现路由跳转时更改页面title
2019/11/05 Javascript
解决Vue 刷新页面导航显示高亮位置不对问题
2019/12/25 Javascript
[00:32]2016完美“圣”典风云人物:Maybe宣传片
2016/12/05 DOTA
Python的高级Git库 Gittle
2014/09/22 Python
Python版微信红包分配算法
2015/05/04 Python
浅谈Python 中整型对象的存储问题
2016/05/16 Python
Python正则表达式如何进行字符串替换实例
2016/12/28 Python
纯python实现机器学习之kNN算法示例
2018/03/01 Python
Python图像滤波处理操作示例【基于ImageFilter类】
2019/01/03 Python
python isinstance函数用法详解
2020/02/13 Python
使用tensorflow进行音乐类型的分类
2020/08/14 Python
一文带你掌握Pyecharts地理数据可视化的方法
2021/02/06 Python
CSS3的calc()做响应模式布局的实现方法
2017/09/06 HTML / CSS
鲜为人知的HTML5语音合成功能
2019/05/17 HTML / CSS
捷克玩具商店:Bambule
2019/02/23 全球购物
xxx同志考察材料
2014/02/07 职场文书
医学专业毕业生求职信
2014/06/20 职场文书
医院领导班子整改方案
2014/10/01 职场文书
个人作风建设总结
2014/10/23 职场文书
2014年信访维稳工作总结
2014/12/08 职场文书
简单的辞职信怎么写
2015/02/28 职场文书
招商银行收入证明
2015/06/17 职场文书
自考生自我评价
2019/06/21 职场文书
导游词之上饶龟峰
2019/10/25 职场文书
Nginx四层负载均衡的配置指南
2021/06/11 Servers
以MySQL5.7为例了解一下执行计划
2022/04/13 MySQL