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 相关文章推荐
jQuery Ajax之load()方法
Oct 12 Javascript
javascript 窗口加载蒙板 内嵌网页内容
Nov 19 Javascript
JS中showModalDialog 的使用解析
Apr 17 Javascript
jquery和雅虎的yql服务实现天气预报服务示例
Feb 08 Javascript
Javascript中call和apply函数的比较和使用实例
Feb 03 Javascript
高效Web开发的10个jQuery代码片段
Jul 22 Javascript
前端js实现文件的断点续传 后端PHP文件接收
Oct 14 Javascript
bootstrap表单示例代码分享
May 18 Javascript
详解Angular之constructor和ngOnInit差异及适用场景
Jun 22 Javascript
Javascript中将变量转换为字符串的三种方法
Sep 19 Javascript
JavaScript调用模式与this关键字绑定的关系
Apr 21 Javascript
Vuex mutitons和actions初使用详解
Mar 04 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
一个简单实现多条件查询的例子
2006/10/09 PHP
php 购物车的例子
2009/05/04 PHP
php 数组使用详解 推荐
2011/06/02 PHP
PHP加Nginx实现动态裁剪图片方案
2014/03/10 PHP
深入理解PHP中的global
2014/08/19 PHP
php猴子选大王问题解决方法
2015/05/12 PHP
如何通过PHP实现Des加密算法代码实例
2020/05/09 PHP
Javascript 验证上传图片大小[客户端]
2009/08/01 Javascript
js预加载图片方法汇总
2015/06/15 Javascript
JavaScript简单实现弹出拖拽窗口(二)
2016/06/17 Javascript
JavaScript中子对象访问父对象的方式详解
2016/09/01 Javascript
利用vue-router实现二级菜单内容转换
2016/11/30 Javascript
NodeJS、NPM安装配置步骤(windows版本) 以及环境变量详解
2017/05/13 NodeJs
Javascript循环删除数组中元素的几种方法示例
2017/05/18 Javascript
基于vue2.0实现的级联选择器
2017/06/09 Javascript
vue2.0中click点击当前li实现动态切换class
2017/06/21 Javascript
解决Vue页面固定滚动位置的处理办法
2017/07/13 Javascript
vue组件中使用iframe元素的示例代码
2017/12/13 Javascript
微信小程序checkbox组件使用详解
2018/01/31 Javascript
VUE2.0+ElementUI2.0表格el-table循环动态列渲染的写法详解
2018/11/30 Javascript
JavaScript实现数字前补“0”的五种方法示例
2019/01/03 Javascript
关于微信小程序map组件z-index的层级问题分析
2019/07/09 Javascript
Python中用于返回绝对值的abs()方法
2015/05/14 Python
Python基于pygame实现图片代替鼠标移动效果
2015/11/11 Python
Swift中的协议(protocol)学习教程
2016/07/08 Python
python正则表达式面试题解答
2020/04/28 Python
python实现批量图片格式转换
2020/06/16 Python
python3实现网页版raspberry pi(树莓派)小车控制
2020/02/12 Python
keras中epoch,batch,loss,val_loss用法说明
2020/07/02 Python
HTML5中判断横屏竖屏的方法(移动端)
2016/08/04 HTML / CSS
Farfetch中文官网:奢侈品牌时尚购物平台
2020/03/15 全球购物
城市规划应届生推荐信
2014/09/08 职场文书
党的群众路线整改落实情况汇报
2014/10/28 职场文书
小学数学继续教育研修日志
2015/11/13 职场文书
Python使用openpyxl批量处理数据
2021/06/23 Python
Java后端 Dubbo retries 超时重试机制的解决方案
2022/04/14 Java/Android