前言

为了给读者更好的体验,去理解vue-router和下一篇介绍vuex,决定还是来一个实战教程来带大家更加的去深入理解vue-router,在这之前,读者先自行了解和去官网下载npm和node,附:npm官网

项目构建

这里我采用vue-cli+webpack构建初始项目,在vue官网里面也有相关介绍,在这里我就手把手教大家一下吧,先通过控制台进入相关的文件目录下,然后输入

# 后面是注释
# $表示当前文件目录 # 全局安装 vue-cli
$ npm install --global vue-cli
# 创建一个基于 webpack 模板的新项目
$ vue init webpack my-project
# 安装依赖,走你
$ cd my-project
$ npm install
# 运行项目my-preoject
$ npm run dev
  • npm install --global vue-cli 下载构建工具

  • vue init webpack my-project 初始化项目

  • npm install 下载相关资源到node_models

  • npm run dev 运行项目后,在浏览器输入http://localhost:8080/#/可看到

介绍vue-router

经过上面简单的构建之后,一个项目的初始化就完成了,这里vue-cli和webpack已经帮我们弄好了文件目录结构和基本目录

在进行使用vue-router之前,我不得不也先介绍一下vue-router是什么?

它是一个vue.js下的路由组件,那什么是路由呢?网上有一大堆官方的介绍,相信对于小白是难以理解的,这里我就简单的说明一下吧。

其实路由也就是url,url是什么呢?url就是唯一资源定位符,简单的说,也就是标记页面的唯一存在的一个标签,就像https://www.baidu.com,这里的www.baidu.com就是唯一资源定位符,https就只是一种协议,规范计算机网络的通信协议。

介绍完这些,那么对于我们究竟该怎么用呢?

其实很简单,在平时当中,我们就经常碰到在一个网站里面点击链接会弹到另外一个页面,然后就可以发现他们的url改变了,而vue-router就是这样,在同个域名下(这里的域名是http://localhost:8080),改变域名后面的字符参数,比如http://localhost:8080/me和http://localhost:8080/you是两个不同的页面就是靠vue-router进行实现的。

引用vue-router

如果你在之前没有安装vue-router的话,建议可以先去官网,看着文档使用npm安装一下,这里就不多做介绍了。

首先我先在项目my-project/src/components(存放组件的目录)里面添加两个文件me.vue和you.vue

// me.vue
<template>
<div>
我是me
</div>
</template> <script type="text/ecmascript-6">
export default {}
</script> <style scoped>
</style> // you.vue
<template>
<div>
我是you
</div>
</template> <script type="text/ecmascript-6">
export default {}
</script> <style scoped>
</style>

然后修改my-project/src/router(存放路由相关信息的目录)下面修改index.js成

import Vue from 'vue'
import Router from 'vue-router'
import HelloWorld from '@/components/HelloWorld' // 导入组件
import me from '../components/me'
import you from '../components/you' Vue.use(Router) export default new Router({
routes: [
{
path: '/',
name: 'HelloWorld',
component: HelloWorld
},
// 将组件命名到路由上,输入http://localhost:8080/#/me
// 即可进入不同的页面
{
path: '/me',
component: me
},
// 将组件命名到路由上,输入http://localhost:8080/#/you
// 即可进入不同的页面
{
path: '/you',
component: you
}
]
})

这样只会输入http://localhost:8080/#/me就会进到其他页面,是不是很简单,
那么我们怎么在页面里面进行跳转呢?

这就运用到了更有趣的知识了就是router-link你只要在你的组件的代码下输入

<router-link :to="/me">这里是跳转链接</router-link>

网页就自动跳转到http://localhost:8080/#/me页面了,但是这样总是不好的,因为,如果由于一些原因,我们想修改路由的名字(比如me改成him)就得改两个文件的信息,因此,vue团队也早就想好了,就是name属性,将my-project/src/router(存放路由相关信息的目录)下面修改index.js成

    // ...
{
path: '/me',
name: 'me',
component: me
},
// ...

然后跳转就改成

<router-link :to="{ name: 'me'}">这里是跳转链接</router-link>

就可以进行跳转了

高级应用

  1. 前端路由 最初级的应用,就和上面的引用一样,当然还可以通过js代码来改变,这个也很简单,就是比如添加一个按钮,点击按钮通过js跳转到其他页面,就是重定向,简单的js代码也下面这样,就可以跳转到其他页面了
vue.$router.push('/me')
  1. 动态路由 通过router-link传递参数,例如<router-link :to="{ name: 'user', params: { userId }}">User</router-link>,传入userId这个参数,进行渲染不同的路由信息
  2. 嵌套路由 嵌套路由其实简单的理解就是,子路由,例如,我想在me下面在添加几个路由him和she那上面的代码可以这样写之后输入http://localhost:8080/#/me/him就可以进入到子路由的页面
// ...
{
path: '/me',
name: 'me',
component: me,
children: [
{
path: 'him'
// ...
},
{
path: 'she'
// ...
}
]
},
// ...
  1. 懒加载 结合异步组件以及在组件的created钩子上触发获取数据的ajax请求,可以最大化的降低加载时间,减少流量消耗。这个对于没有项目的人可能接触比较少,建议先知道这个概念。
  2. 重定向 可以实现某些需要根据特定逻辑改变页面原本路由的需求,例如简单的未登录状态下的页面访问“个人信息”路由时应该重定向到登录路由页面。
  3. History的控制 History是Html5的新语法,个人觉得就是对于跳转的时候,特别是微信小程序,就是控制点击回退按钮的时候不至于退出页面而跳转到自己想要的页面

总结

其实还有很多高级应用场景,我就不一一列举出来了,因为这些其实最好还是上官方文档进行说明,我这里只是解释一下简单的用法,以及初学者可能对官方文档会有误解来进行说明一下,希望大家还是学会看API,附官网地址

Vue学习日记(三)——Vue路由管理vue-router的更多相关文章

  1. vue学习【三】vue-router路由显示多页面

    大家好,我是一叶,今天是七夕,单身狗的我还在这里写踩坑文.在这里还是要祝大家早日脱单(能不能脱单自己心里没个数吗).本篇继续踩坑,在单页面上展示多页的内容,大家的想法是什么,估计大家第一印象会是ifr ...

  2. vue(17)vue-route路由管理的安装与配置

    介绍 Vue Router 是 Vue.js官方的路由管理器.它和 Vue.js 的核心深度集成,让构建单页面应用变得易如反掌.包含的功能有: 嵌套的路由/视图表 模块化的.基于组件的路由配置 路由参 ...

  3. vue学习笔记(三)class和style绑定

    前言 通过上一章的学习vue学习笔记(二)vue的生命周期和钩子函数,我们已经更近一步的知道了关于vue的一些知识,本篇博客将进一步探讨vue其它方面的内容,vue中关于class和style绑定,关 ...

  4. Vue学习笔记三:v-bind,v-on的使用

    目录 v-bind:绑定属性值,内容相当于js,缩写: v-on:绑定方法,缩写@ 总结 v-bind:绑定属性值,内容相当于js,缩写: 我添加了一个input标签,如下 <input typ ...

  5. Vue学习(三):数据绑定语法

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  6. vue学习(三)完善模板页(bootstrap+AdminLTE)

    1.配置index.html <!DOCTYPE html> <html> <head> <meta charset="utf-8"> ...

  7. Vue学习【第一篇】:Vue初识与指令

    什么是Vue 什么是Vue Vue.js是一个渐进式JavaScript框架它是构建用户界面的JavaScript框架(让它自动生成js,css,html等) 渐进式:vue从小到控制页面中的一个变量 ...

  8. Vue学习日记(四)——Vue状态管理vuex

    前言 先说句前话,如果不是接触大型项目,不需要有多个子页面,不使用vuex也是完全可以的. 说实在话,我在阅读vuex文档的时候,也很难以去理解vuex,甚至觉得没有使用它我也可以.但是直到我在项目碰 ...

  9. Vue:(三)路由

    (一)基础介绍 vue-router用来构建SPA <router-link></router-link>或者this.$router.push({path:' '}) < ...

随机推荐

  1. IO阻塞模型、IO非阻塞模型、多路复用IO模型

    IO操作主要包括两类: 本地IO 网络IO 本地IO:本地IO是指本地的文件读取等操作,本地IO的优化主要是在操作系统中进行,我们对于本地IO的优化作用十分有限 网络IO:网络IO指的是在进行网络操作 ...

  2. 学习笔记:CentOS7学习之二十一: 条件测试语句和if流程控制语句的使用

    目录 学习笔记:CentOS7学习之二十一: 条件测试语句和if流程控制语句的使用 21.1 read命令键盘读取变量的值 21.1.1 read常用见用法及参数 21.2 流程控制语句if 21.2 ...

  3. [转帖] 飞腾FT2000+ CPU的进展(2019.6)

    中国长城:拟进一步收购飞腾股权,强化信息基础设施国产化平台地位 2019-06-26 09:28 http://www.sohu.com/a/323065095_100016383 今年年中的事情 浪 ...

  4. Oracle 11.2.0.4_Linux单例篇

    Linux 下安装Oracle步骤: 1.设置ip地址  2.设置主机名 3.安装oracle依赖的软件包 mkdir /media/cdrom -p mount /dev/cdrom  /media ...

  5. JSP和Servlet异常处理转发

    <error-page> <!-- 指明异常类型. --> <exception-type>java.lang.ArrayIndexOutOfBoundsExcep ...

  6. Linux下安装jdk中遇到的坑

    比如:我以jdk-8u211-linux-i586.tar.gz为例进行. 下载完成后解压到指定文件下先创建java文件目录,如果已存在就不用创建[root@lyh:] # mkdir -p /usr ...

  7. 【AtCoder】AGC005

    AGC005 A - STring 用一个栈,如果遇到S就弹入,如果遇到T栈里有S就弹出栈顶,否则T在最后的串里,最后计算出的T和栈里剩的S就是答案 #include <bits/stdc++. ...

  8. 一块40克的砝码,摔成4块,利用天平,刚好可以称出1~40g所有整数克,问:这4块分别是多少克

    public static void main(String[] args) { List<Integer> list = new ArrayList<>();//记录每组数的 ...

  9. 消息服务百科全书——High Availability

    1.1为何需要Replication 在Kafka在0.8以前的版本中,是没有Replication的,一旦某一个Broker宕机,则其上所有的Partition数据都不可被消 费,这与Kafka数据 ...

  10. 1、windows安装npm教程 --参考自https://www.cnblogs.com/jianguo221/p/11487532.html

    windows安装npm教程   1.在使用之前,先类掌握3个东西,明白它们是用来干什么的: npm:  nodejs 下的包管理器. webpack: 它主要用途是通过CommonJS 的语法把所有 ...