vue.js 按需加载ElementUI 和 echarts

本文介绍了如何在 Vue.js 项目中实现 ElementUI 和 ECharts 的按需加载,以减少项目体积。通过 `require` 和 `requireAsync` 函数同步或异步引入所需模块,并配合 code-splitting 进行进一步优化。同时,展示了如何配置 `.babelrc` 文件以按需加载 ElementUI 的特定组件。
摘要由CSDN通过智能技术生成

1. vue按需加载echarts

当我们只需要 echarts 的 line 和 tooltip 模块的时候,我们会这么写:

import echarts from 'echarts/lib/echarts'
import 'echarts/lib/chart/line'
import 'echarts/lib/component/tooltip'

当引入了这个插件后,我们只需要这个 :

// eslint-disable-next-line
const echarts = equire([
  'line',
  'tooltip'
])

这个插件会自动帮我们转化为上面的形式

安装

npm i babel-plugin-equire -D

然后,在 .babelrc 文件中添加该插件

{
  "plugins": [
  	 // other plugins
  	 ...
  	 
    "equire"
  ]
}

引入这个插件后,在 babel 编译时会注入两个全局函数:equire 和 equireAsync

equire(modules)

  • 同步加载模块,返回 echarts 对象
  • 参数 modules 是一个数组,传入需要按需加载的模块名称,具体名称参见转化规则

equireAsync(modules)

  • 异步加载一个模块,返回一个初始化函数
  • 参数 modules 是一个数组,传入需要按需加载的模块名称,具体名称参见转化规则

用法

新建一个文件 initEcharts.js 用于初始化 echarts 模块,然后编写如下代码:

@/src/utils/initEcharts.js

// eslint-disable-next-line
const echarts = equire([
  'line',
  'tooltip'
])

export default echarts

在需要用到 echarts 的地方引入上面的 initEcharts.js 文件

import echarts from '@/src/utils/initEcharts'

这样,最后打包出来的文件就只有包含 echarts 的核心模块和 line/bar 两个图表模块

配合 code-splitting

将上面文件的 equire 替换为 equireAsync,这个时候 equireAsync() 返回的是一个函数,函数执行后会返回一个 promise对象

// eslint-disable-next-line
const initEcharts = equireAsync([
  'line',
  'tooltip'
])

export default initEcharts

在其他文件中使用:

import initEcharts from '@/src/utils/initEcharts'

initEcharts()
  .then(echarts => {
    // do somthing with echarts
  })

完整用例可以参考

 同步加载 

<template>
 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值