1. 需求描述

最近开发的一个项目,涉及到这样一个需求:随着项目的不断推进,后台管理功能逐渐增多,与此同时,静态路由表也逐渐扩大,需要把静态路由方式转换为动态路由方式。要完成这样一个转换,有几个技术要点需要解决,其中一个就是需要Vue动态加载组件,那么,Vue动态加载组件的常用方式有哪些呢?

2. Vue动态加载组件的两类方式

Vue加载组件主要有正常加载懒加载,示例代码如下:

//正常加载
import index from '../pages/index.vue'
import view from '../pages/view.vue'
//懒加载
const index = resolve => require(['../pages/index.vue'], resolve)
const view = resolve => require(['../pages/view.vue'], resolve)
//懒加载 - 按组
const index = r => require.ensure([], () => r(require('../pages/index.vue')), 'group-index')
const view = r => require.ensure([], () => r(require('../pages/view.vue')), 'group-view')
// 懒加载 - 按组 import,基于ES6 import的特性
const index = () => import('../pages/index.vue')
const view = () => import('../pages/view.vue')

组件懒加载指的是在组件需要使用的时候才加载,即下文中指的组件的动态加载,Vue动态加载组件的方式主要有四种

(1)使用import导入组件,可以获取到组件

var name = 'system';
var myComponent =() => import('../components/' + name + '.vue');
var route={
    name:name,
    component:myComponent
}

(2)使用import导入组件,直接将组件赋值给componet

var name = 'system';
var route={
    name:name,
    component :() => import('../components/' + name + '.vue');
}

(3)使用require 导入组件,可以获取到组件

var name = 'system';
var myComponent = resolve => require.ensure([], () => resolve(require('../components/' + name + '.vue')));
var route={
    name:name,
    component:myComponent
}

(4)使用require 导入组件,直接将组件赋值给componet

var name = 'system';
var route={
    name:name,
    component(resolve) {
        require(['../components/' + name + '.vue'], resolve)
    }
}

或者

var name = 'system';
var route={
    name:name,
    component:(resolve) => require(['../components/' + name + '.vue'], resolve)
}

注意观察以上四种方式,不难发现,四种方式可以归为两类:

2.1 使用import导入组件

vue template动态渲染 vue动态加载模块_Vue


如上图所示,红色方框内的,可以写在组件上,当然也可以用一个变量保存,然后直接引用变量。

2.2 使用require导入组件

vue template动态渲染 vue动态加载模块_动态加载_02


或者

vue template动态渲染 vue动态加载模块_懒加载_03


上2个图中,只是不同的写法形式而已。上图中,红色方框内的,可以写在组件上,当然也可以用一个变量保存,然后直接引用变量。

3. 测试

测试的代码样例,Vue动态加载组件使用import导入组件,截图如下:

vue template动态渲染 vue动态加载模块_动态加载_04

测试的代码样例,Vue动态加载组件使用require导入组件,截图如下:

vue template动态渲染 vue动态加载模块_懒加载_05

4. 结语

Vue动态加载组件主要有两类方式,即import方式和require方式。这些应该是js方面的基本知识点,本文在此不作展开,仅因为工作需要,顺带记录整理。后续研究JS相关的知识的时候,再做进一步拓展。

5. 参考资源

Vue加载组件、动态加载组件的几种方式vue实现路由懒加载及组件懒加载的方式