博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
vue-router源码解析(一)
阅读量:6273 次
发布时间:2019-06-22

本文共 1550 字,大约阅读时间需要 5 分钟。

准备工作

Vue RouterVue.js 官方的路由管理器。它和 Vue.js 的核心深度集成,让构建单页面应用变得易如反掌。

这里主要通过阅读 vue-router 的源码,对平时使用较多的一些特性以及功能,理解其背后实现的思路。

阅读版本 :
3.0.2

目录结构

├── components  // 组件│   ├── link.js   // route-link的实现│   └── view.js   // route-view的实现├── create-matcher.js  // 创建匹配├── create-route-map.js  // 创建路由的映射├── history  // 操作浏览器记录的一系列内容│   ├── abstract.js  // 非浏览器的history│   ├── base.js    // 基本的history│   ├── hash.js    // hash模式的history│   └── html5.js   // html5模式的history├── index.js   // 入口文件├── install.js  // 插件安装的方法└── util   // 工具类库    ├── async.js    // 异步操作的工具库    ├── dom.js    // dom相关的函数    ├── location.js     // 对location的处理    ├── misc.js     // 一个工具方法    ├── params.js   // 处理参数    ├── path.js     // 处理路径    ├── push-state.js  // 处理html模式的 pushState    ├── query.js  //对query的处理    ├── resolve-components.js  //异步加载组件    ├── route.js  // 路由    ├── scroll.js  //处理滚动    └── warn.js  // 打印一些警告

我们知道 , 我们在使用 vue-router 的时候 ,主要有以下几步:

// 1. 安装 插件Vue.use(VueRouter);// 2. 创建router对象const router = new VueRouter({    routes // 路由列表 eg: [{ path: '/foo', component: Foo }]});// 3. 挂载routerconst app = new Vue({    router}).$mount('#app');

其中 VueRouter 对象,就在vue-router 的入口文件 src/index.js

VueRouter 原型上定义了一系列的函数,我们日常经常会使用到。主要有 : go 、 push 、 replace 、 back 、 forward

以及一些导航守护 : beforeEach 、beforeResolve 、afterEach 等等

上面html 中使用到的 router-view ,以及经常用到的 router-link 则存在 src/components 目录下。

下一步

到这里相信你对整个项目结构有一个大概的认识 。 接下来,我们会根据以下几点,一步步拆解 vue-router

  • 导航守卫的原理
  • 路由匹配详解
  • 组件:route-view 和 route-link 都做了些什么 ?
  • 滚动行为的实现
  • 如何实现异步加载组件(路由懒加载)

其他

转载地址:http://thlpa.baihongyu.com/

你可能感兴趣的文章
配置Quartz
查看>>
Linux 线程实现机制分析
查看>>
继承自ActionBarActivity的activity的activity theme问题
查看>>
设计模式01:简单工厂模式
查看>>
多线程讲解
查看>>
项目经理笔记一
查看>>
Hibernate一对一外键双向关联
查看>>
mac pro 入手,php环境配置总结
查看>>
MyBatis-Plus | 最简单的查询操作教程(Lambda)
查看>>
rpmfusion 的国内大学 NEU 源配置
查看>>
spring jpa 配置详解
查看>>
IOE,为什么去IOE?
查看>>
java 用反射简单应用,将Object简单转换成map
查看>>
Storm中的Worker
查看>>
dangdang.ddframe.job中页面修改表达式后进行检查
查看>>
Web基础架构:负载均衡和LVS
查看>>
Linux下c/c++相对路径动态库的生成与使用
查看>>
SHELL实现跳板机,只允许用户执行少量允许的命令
查看>>
SpringBoot 整合Redis
查看>>
nodejs安装以及环境配置(很好的node安装和配置文章,少走很多弯路)
查看>>