vue-router之前端路由的学习总结

什么是路由

  1. 路由就是通过互联网把信息从源地址传输到目的地的活动 --维基百科
  2. 举例路由器:
  • 路由器提供了两种机制:路由和转送

    • 路由是决定数据包从来源目的地的路径
    • 转送将输入端的数据转移到合适的输出端
  • 路由里有一个非常重要的概念叫路由表
    • 本质上就是一个映射表,决定了数据包的指向

开发中路由的几个阶段

  1. 后端路由阶段
  • URL发送到服务器,服务区进行正则匹配,经过处理,生成HTML或者数据(html,css,js),返回给前端,完成一个IO操作(input:输入,output:输出)
  1. 前后端分离阶段
  • 随着ajax出现,有了前后端分离,有点,后端专注于数据,前端专注将数据渲染到页面上,而且移动端出现后,仍然可以使用之前的后端API数据接口,只是进行不同的样式的渲染
  • URL向静态服务器请求页面数据(多个页面),根据不同的URL请求并回应不同的页面
  1. 单页面父应用阶段
  • SPA最主要的特点就是在前后端分离的基础上加了一层前端路由,也就是前端来维护一套路由规则
  • 改变URL,但是页面不进行整体的刷新

路由的规则

    • URL构成 :
  • 协议://主机:端口/路径?查询(中文)
  • scheme://host:port/path?query#fragment
  1. URL的hash
  • URL的hash也就是‘锚点‘,本质上是改变window.laction的href属性
  1. HTML5的history模式
  • history接口是HTML5新增的,它有五种模式改变你URL而不断刷新页面.
  • history.pushState({},‘‘,‘/foo‘)
  • history.replaceState({},‘‘,‘/foo/bar‘)
  • history.go(-1)/histroy(1)

认识vue-router

  1. 目前前端三大流行的框架都有自己的路由实现
  • Angular的ngRouter,React的ReactRouter ,Vue的vue-router
  1. vue-router是Vue.js官方的路由插件,它和vue.js深度集成,适合用于构建单页项目应用
  2. vue-router是基于路由和组件的
  • 路由用于设定访问路径,将路径和组件映射起来
  • 在vue-router的单页面应用中,页面的路径的改变就是组件的切换

安装和使用Vue-router

  1. npm install vue-router --save(在项目运行时依然需要)
  2. 在工程模块中使用它(因为时插件,通过Vue.use()来安装路由功能)
  • 第一步:导入路由对象(import Vue from ‘vue‘ +import VueRouter from ‘vue-router‘ ),并且调用Vue.use(VueRouter)
  • 第二步:创建路由实例(index.js),并且传入路由映射配置
  • 第三部: 在Vue实例中挂载创建的路由实例
  1. 使用vue-router的步骤
  • 第一步:创建路由组件
  • 第二步:配置路由映射:组件和路径映射关系
  • 第三部:使用路由:通过<router-link></router-link><router-view></router-view>

使用时细节

  1. 路由的默认路径
  • 如何可以让路径默认跳到首页,并且让<router-view>渲染首页的内容
  •   多配置一个映射即可
      {
        path:'/',
        redirect:'/home'
      }
      redirect时重新定向
  1. router-link补充
  • 使用router-link的to的时候,里面一定要用‘/‘开头
  • tag属性,让其渲染成a之外的元素,<router-link to=‘/‘ tag=‘li‘>
  • replace属性:replace不会留下history记录, 所以指定replace的情况下, 后退键返回不能返回到上一个页面中
  • active-class:当对应的路由匹配成功时, 会自动给当前元素设置一个router-link-active的class, 设置active-class可以修改默认的名称
  1. HTML5的hist模式
  • 如果希望使用HTML5的history模式, 非常简单, 进行如下配置即可
  • 在router实例中使用:mode:‘history‘
  1. 路由通过代码跳转
  •   App的vue中:
      <button @linkToHome>首页</button>
    
      methods:{
        linkToHome(){
          this.$router.push('./home')
        }
      }
  1. 动态路由
  •   {
        path:'user/:id',
        component:User
      }
      <div>
        <h2> {{ $route.params.id}} </h2>
      </div>
      <router-link to='/user/123'>用户<router-link>

    路由懒加载

  1. 路由懒加载的主要作用就是将路由对应的组件打包成一个个的js代码块,当这个路由被访问到的时候在加载对应的组件
  2.  const routes=[
         path:'/home'
         component:()=>import('../components/About')
       {
       }
     ]
  3.  方式一: 结合Vue的异步组件和Webpack的代码分析.
       const Home = resolve => { require.ensure(['../components/Home.vue'], () => { resolve(require('../components/Home.vue')) })};
    
     方式二: AMD写法
       const About = resolve => require(['../components/About.vue'], resolve);
    
     方式三: 在ES6中, 我们可以有更加简单的写法来组织Vue异步组件和Webpack的代码分割.
       const Home = () => import('../components/Home.vue')
    
    

    路由嵌套

  4. 比如在home页面中, 我们希望通过/home/news和/home/message访问一些内容.
  5. 实现嵌套的两个步骤:
  •   1. 创建对应的子组件,并且在路由映射中配置对应的子路由
    
        {
          path: '/home',
          component: Home,
          children:[
            {
              path:'news',
              component:HomeNews
            }
          ]
        }
      2.  在组件内部使用`<router-view>`标签

传递参数(params,query)

  1. params类型
  • 配置路由:/router
  • 传递方式:在path后面跟上对应的值
  • 传递后形成的路径:/routr/123,/router/abc
  1. query的类型
  • 配置路由格式:/router,也就是普通配置
  • 传递的方式:对象中使用query的key作为传递方式
  • 传递后形成的路径:/router?id=123,/router?id=abc
  •   传递方式一:
      <router-link
        :to="{
          path:'/profile/'+123,    //params
          query:{name:'why',age:18}  //query
        }"
      ></router-link>
    
      传递方式二:
      methods:{
        toProfile(){
          this.$router.push({
            path:'/profile/'+123,    //params
            query:{name:'why',age:18}
          })
        },
      }
    

    获取参数

  1. 获取参数通过$router对象获取
  • 在使用了vue-router的应用中,路由对象会被注入到每个组件中,赋值为this.$route,并且当路由切换时,路由对象会被更新
  1. $router和$route的区别
  • $router为VueRouter的实例,想要导航到不同的URL,则使用$router.push方法
  • $route为当前router跳转对象里面可以获取name,path,query,parmas

导航守卫

  1. 什么是导航守卫?
  • vue-router提供的导航守卫主要用来监听路由的进入和离开
  • vue-router提供了beforeEach和afterEach的钩子函数,它们会在路由即将改变前和改变后触发
  1. 使用导航守卫beforeEach来完成标题的修改
  • 首先我们可以在钩子当中定义一些标题,可以利用meta来定义,在路由组件path和component下定义 meta{ title:‘关于‘}
  • 其次,利用导航守卫,修改我们的标题
  •   // to:即将进入目标的路由对象,from当前导航的即将要离开的对象,next调用了该方法,才能进入下一个钩子
      router.beforeEach(to,from,next) =>{
        window.document.title = to.meta.title
        next()
      }
  1. 导航守卫补充
  • 1.如果是后置钩子(after),不需要主动调用next()函数
  • 2.上面使用的是全局守卫,其实还有路由独享的守卫,组件内的守卫
  • 3.其它可以去官方进行学习

keep-alive遇见vue-router

  • keep-alive 是 Vue 内置的一个组件,可以使被包含的组件保留状态,或避免重新渲染。
  • 它们有两个非常重要的属性:
  • include - 字符串或正则表达,只有匹配的组件会被缓存
  • exclude - 字符串或正则表达式,任何匹配的组件都不会被缓存
  • router-view 也是一个组件,如果直接被包在 keep-alive 里面,所有路径匹配到的视图组件都会被缓存:
    •     <keep-alive exclude="Profile">
            <router-view></router-view>
          </keep-alive>

原文地址:https://www.cnblogs.com/JCDXH/p/11703202.html

时间: 2024-08-30 11:01:26

vue-router之前端路由的学习总结的相关文章

四、Vue Router 设置动态路由

动态路由配置 像/user/foo和/user/bar都映射到相同的路由.也就是说根据不同的ID,渲染相同的User组件.可以使用动态路径参数来达到这个效果. 动态路径参数使用冒号:标记,后面为参数的名称,参数会被设置到this.$route.params中. <script> // 匹配模式 /user/:username // 匹配到的路径为 /user/evan // $route.params 获取到的参数对象 { useranme: 'evan' } </script>

【前端小小白的学习之路】vue学习记录④(路由传参)

通过上篇文章对路由的工作原理有了基本的了解,现在我们一起来学习路由是如何传递参数的,也就是带参数的跳转. 带参数的跳转,一般是两种方式: ①.a标签直接跳转. ②点击按钮,触发函数跳转. 在上篇文章中我们已经有两个页面(Helloworld.vue&Hello.vue),现在我准备往Hello.vue里面添加3个链接,分别对应两种情况的跳转.  第一步:在原来的Hello.vue里添加路由链接跳转的代码(见第38-44行代码),添加后的Hello.vue代码如下: 1 <template&g

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

通过vue学习一:新建或打开vue项目,创建好项目后,接下来的操作为: src目录重新规划——>新建几个页面——>配置这几个页面的路由——>给根实例注入路由配置 src目录重整 在项目中创建如下对应的文件 ├── App.vue // APP入口文件 ├── api // 接口调用工具文件夹 │ └── index.js // 接口调用工具 ├── components // 组件文件夹,目前为空 ├── config // 项目配置文件夹 │ └── index.js // 项目配置文

Vue Router 路由实现原理实现原理

一.概念 通过改变 URL,在不重新请求页面的情况下,更新页面视图. 二.实现方式 更新视图但不重新请求页面,是前端路由原理的核心之一,目前在浏览器环境中这一功能的实现主要有2种方式: 1.Hash --- 利用 URL 中的hash("#"); 2.利用 History interface 在HTML5中新增的方法. Vue 中,它是通过 mode 这一参数控制路由的实现模式: const router=new VueRouter({ mode:'history', routes:[

Vue系列:Vue Router 路由梳理

Vue Router 是 Vue.js 官方的路由管理器.它和 Vue.js 的核心深度集成,让构建单页面应用变得易如反掌.包含的功能有: 嵌套的路由/视图表 模块化的.基于组件的路由配置 路由参数.查询.通配符 基于 Vue.js 过渡系统的视图过渡效果 细粒度的导航控制 带有自动激活的 CSS class 的链接 HTML5 历史模式或 hash 模式,在 IE9 中自动降级 自定义的滚动条行为 1.动态路由 动态路由,可以将某种模式匹配到的所有路由,并全都映射到同个组件. (通俗点,比如根

Vue.js路由管理器 Vue Router

起步 HTML <script src="https://unpkg.com/vue/dist/vue.js"></script> <script src="https://unpkg.com/vue-router/dist/vue-router.js"></script> <div id="app"> <h1>Hello App!</h1> <p>

vue-learning:38 - router - 前端路由的发展

前端路由的发展 参考博客 前端路由是什么东西? 什么是路由 在jQuery时代,我们使用<a href="https://www.example.com/example/home.html">实现页面切换. 其响应过程是这样的 1.浏览器发出请求 2.服务器监听到指定端口的请求,并解析url路径 3.浏览器根据数据包的Content-Type来决定如何解析数据 4.根据服务器的路由配置,返回相应信息(比如返回html文件的字串,也可以是 json 数据,图片等) 5.浏览器

Vue Router 路由守卫:完整的导航解析流程

完整的导航解析流程 1 导航被触发. 2 在失活的组件里调用离开守卫. 3 调用全局的 beforeEach 守卫. 4 在重用的组件里调用 beforeRouteUpdate 守卫 (2.2+). 5 在路由配置里调用 beforeEnter. 6 解析异步路由组件. 7 在被激活的组件里调用 beforeRouteEnter. 8 调用全局的 beforeResolve 守卫 (2.5+). 9 导航被确认. 10 调用全局的 afterEach 钩子. 11 触发 DOM 更新. 12 用

04 Vue Router路由管理器

路由的基本概念与原理 Vue Router Vue Router (官网: https://router.vuejs.org/zh/)是Vue.js 官方的路由管理器. 它和vue.js的核心深度集成,可以非常方便的用于SPA应用程序的开发. Vue Router包含的功能有: 支持HTML5 历史模式或hash模式 支持嵌套路由 支持路由参数 支持编程式路由 支持命名路由 vue-router的基本使用 基本使用步骤 1.引入相关的库文件 导入vue文件为全局window对象挂载Vue构造函数