一、Vue-router是什么?

  Vue Router是Vue.js的路由管理器。和Vue.js的核心深度集成,是SPA单页应用的路径管理器,适合用于构建单页面应用。Vue的单页面应用是基于路由和组件的,路由用于设定访问路径,并将路径和组件映射起来;传统的页面应用,是用一些超链接来实现页面切换和跳转的;在Vue-router单页应用中,则是路径之间的切换,也就是组件的切换。路由模块的本质 就是建立起url和页面之间的映射关系;

  实现原理:单一页面应用程序,只有一个完整的页面;它在加载页面时,不会加载整个页面,而只是更新某个指定的容器中的内容。核心是:更新视图而不重新请求页面;前端路由又两种方式;详情:https://www.cnblogs.com/xsk-walter/p/12663694.html

  Vue Router 的功能:官方文档:

    1:嵌套路由/视图;

    2:模块化的、基于组件的路由配置;

    3:路由参数、查询、通配符;

    4:基于Vue.js过渡系统的视图过渡效果;

    5:自定义的滚动条行为;

    6:H5的history模式和Hash模式

二、Vue-router的使用方式

  1:下载: npm install vue-router -S

  2:在main.js中引入:import VueRouter from 'vue-router'

  3:安装插件Vue.use(VueRouter)

  4:创建路由对象并配置路由:const router = new VueRouter({ routes: [ { path: '/home', component: Home } ] })

  5:将其路由对象传递给Vue的实例

  6:在入口文件中留坑:<router-view></router-view>

// 在main.js文件中引入
import Vue from 'vue'
import VueRouter from 'vue-router' // 安装插件
Vue.use(VueRouter) // 创建路由对象并配置路由规则
const router = new VueRouter({
routes: [{}]
}) // 启动
new Vue({
el: '#app',
router,
render: c => c(App)
}) // app.vue
<template>
<div id="app">
<router-view></router-view> // 留坑
</div>
</template>

三、基础

  1:动态路由匹配

    我们经常需要把某种模式匹配到所有的路由,全部映射到同个组件

const User = {
template: '<div>User</div>'
}
// 动态路由参数以冒号开头
const router = {
routes: [{ path: 'user/:id', component: User }]
}
// 像/user/123和/user/456都将映射到同一个路由;

  一个路径参数使用冒号标记,当匹配到一个路由时,参数值会被设置到this.$route.params,可以在每个组件内使用;

  其中$route对象还提供了其他有用的信息;

  ## 正则在url传值的作用:path: 'user/:id(\\d+)'  加入了正则,只能传递数字类型的id,否则组件接收不到;

  ## 注意:当使用路由参数时,从/user/123导航到user/456时,原来的组件实例会复用;此时组件的声明周期钩子就不会再被调用;复用组件时,相对路由参数的变化做出相应的话,你可以简单的watch监听$route对象或者导航守卫;

  ## 404页面设置和捕获所有路由:

// 设置404页面
{ path: '*', component: Error }
// 新建404页面
<template>
<div>
<h2>{{ msg }}</h2>
</div>
</template>
<script>
export default {
data () {
return {
msg: 'Error:404'
}
}
}
</script>
// 当路由不存在时,会进入到404页面

   ##如果想要匹配到任意路径:可以使用通配符*;当使用一个通配符时,$route.params 内会自动添加一个名为 pathMatch 参数。它包含了 URL 通过通配符被匹配的部分

  2:编程式和声明式导航 详情见:https://www.cnblogs.com/xsk-walter/p/12663615.html

  3:命名路由

    # 通过一个名称来标识一个路由显得很方便,特别是在链接一个路由或者执行一些跳转的时候;可以在创建router实例的时候,在routes配置中给某个路由设置名称; 

// 链接到一个路由
<router-link :to="{ name: 'user' , params: { userId: 123 }}">User</router-link>
// 编程式跳转
this.$router.push({ name: 'user', params: { userId: 123 } })
// 两种方式都会把路由导航到 /user/123

  4:路由组件传参

    # 三种模式: 布尔模式、对象模式和函数模式

    1:布尔模式:由于普通组件和路由组件传参形式不同,路由组件传参布尔模式需要在route中添加props:true,会把params中的键值对以props的形式传入组件中,使普通组件当做路由组件使用;

    ## 详细请参考:https://www.jianshu.com/p/a8d919283fec

  官方文档:https://router.vuejs.org/zh/

Vue的vue-router基本使用的更多相关文章

  1. Vue 组件之 Router

    Vue 组件之 Router Vue 开发单页应用的时候,免不了使用Vue组件.在单页应用上如何进行组件切换? 结构如下图所示: 主页面包含Foo组件与Bar组件,在主页面中可以进行Foo与 Bar的 ...

  2. vue路由请求 router

    创建一个Router.js文件 // 路由请求//声明一个常量设置路菜单// import Vue from "vue/types/index";import Vue from ' ...

  3. vue学习之router

    路由文档:https://router.vuejs.org/zh/guide/ 使用vue做spa应用的话,一定会涉及到路由. 安装 安装router插件 npm install vue-router ...

  4. vue学习之用 Vue.js + Vue Router 创建单页应用的几个步骤

    通过vue学习一:新建或打开vue项目,创建好项目后,接下来的操作为: src目录重新规划——>新建几个页面——>配置这几个页面的路由——>给根实例注入路由配置 src目录重整 在项 ...

  5. 六、vue路由Vue Router

    一.基本概念 route, routes, router 1, route,它是一条路由,由这个英文单词也可以看出来,它是单数, Home按钮  => home内容, 这是一条route,  a ...

  6. vue +ts 在router的路由中import报错的解决方案

    在router.ts中引入.vue文件,会提示打不到module,但是编译可能成功,运行也不报错 找了好久,发现了这个答案 https://segmentfault.com/a/11900000167 ...

  7. vue项目中router路由配置

    介绍 路由:控制组件之间的跳转,不会实现请求.不用页面刷新,直接跳转-切换组件>>> 安装 本地环境安装路由插件vue-router:    cnpm install vue-rou ...

  8. Vue的路由Router之导航钩子和元数据及匹配

    一.文件结构 二.vue.js 打开此链接 https://cdn.bootcss.com/vue/2.6.10/vue.js 复制粘贴页面的所有内容 三.vue-router.js 打开此链接  h ...

  9. vue路由--使用router.push进行路由跳转

    手机赚钱怎么赚,给大家推荐一个手机赚钱APP汇总平台:手指乐(http://www.szhile.com/),辛苦搬砖之余用闲余时间动动手指,就可以日赚数百元 route-link是在html中静态定 ...

  10. vue全家桶router、vuex、axios

    main.js import Vue from 'vue' import App from './App' import router from './router' import store fro ...

随机推荐

  1. Numpy中数组的乘法

    Numpy中数组的乘法 按照两个相乘数组A和B的维度不同,分为以下乘法: 数字与一维/二维数组相乘: 一维数组与一维数组相乘: 二维数组与一维数组相乘: 二维数组与二维数组相乘: numpy有以下乘法 ...

  2. C#枚举-通过值获取名字,通过名称获取值

    public enum ProtoType { Move = 1, Enter = 2, Leave = 3, Attack, Die, } print("ProtoType.Move:&q ...

  3. 微信小程序获取当前时间戳、获取当前时间、时间戳加减

    //获取当前时间戳 var timestamp = Date.parse(new Date()); timestamp = timestamp / 1000; console.log("当前 ...

  4. Vue Element ui密码框校验

    <el-form-item prop="repeat_Password" class="userName_color"> <el-input ...

  5. Hadoop-集群运行

    目录 步骤一.NameNode 格式化 步骤二.启动 NameNode 步骤三.启动 SecondaryNameNode 步骤四.slave 启动 DataNode 步骤五.查看 HDFS 的报告 步 ...

  6. oracle查看impdp进度

    当数据量比较大的时候,当你导入,导出的时候,在数据库中查看运行的情况,可以利用下面的视图查看: //这里由于导表空间时出现问题,所以再次执行导入任务.但是已有任务在执行,查看执行中的任务方法. ora ...

  7. MySQL5.6复制技术

    mysql复制功能介绍 我们可以通过为服务器配置主从即一个或多个备库的方式,以及主主结构来进行数据同步,将MySQL的数据分布到多个系统上去.复制过程中一台主库(master)服务器可以数据被同步到多 ...

  8. Typora基本使用语法(超好用的代码编辑工具)

    Typora代码编辑软件,一款适合新手小白的做笔记工具,操作简单,大家可以去试试......

  9. Go Slice Tricks Cheat Sheet、Go 切片使用小妙招

    AppendVector. Copy. Cut. Delete. Delete without preserving order. Cut (GC). Delete (GC). Delete with ...

  10. canvas 隐藏 踩坑

    当我在把canvas绘制完成时,要把canvas隐藏起来.试了display 和  opacity 都不行. 然后我用了 position: absolute; left:1000px; top:0; ...