let _Vue = null;
export default class VueRouter {
static install(Vue) {
// 1、判断当前插件是否已经被安装
if (VueRouter.install.installed) {
return;
}
VueRouter.install.installed = true
// 2、把 Vue 构造函数记录到全局变量
_Vue = Vue
// 3、把创建 Vue 实例时候传入的 router 注入到全部 Vue 实例上
// _Vue.prototype.$router = this.$options.router
// 混入
_Vue.mixin({
beforeCreate() {
// 只在 new Vue() 实例中执行,不在组件中执行
if (this.$options.router) {
_Vue.prototype.$router = this.$options.router
}
}
})
}
constructor(options) {
this.options = options;
this.routeMap = {};
// 创建一个响应式对象 data
this.data = _Vue.observable({
current: '/'
})
this.init();
}
init() {
this.createRouteMap();
this.initComponents(_Vue);
this.initEvent()
}
createRouteMap() {
// 遍历所有路由规则,把路由规则解析成键值对的形式,存储到 routeMap 中
this.options.routes.forEach(route =
学习十四、手写最简单的vue-router的history模式
最新推荐文章于 2024-09-06 13:29:35 发布
本文将深入探讨如何从零开始手写一个简单的Vue-Router history模式。通过理解History模式的工作原理,我们将实现基本的路由切换和URL管理,为前端应用提供更友好的URL结构。
摘要由CSDN通过智能技术生成