webpack用externals优化echarts

2020-01-14 01:08:19

参考地址 一次webpack 的externals配置带来的优化体验

externals官方解释:


防止将某些 import 的包(package)打包到 bundle 中,而是在运行时(runtime)再去从外部获取这些扩展依赖(external dependencies)。


1.优化前


使用echarts的一个项目,使用npm run build 打包以后还有6m左右的大小,如下:



这里打包以后文件明显过大,可能会造成用户体验差。


2.优化


考虑到可能是因为引入的echarts过大,打包时将echarts打包进去了引起的。externals可以将echars脱离webpack打包,可以用来解决这个问题。


2.1 在webpack配置文件中配置externals。


在webpack.base.conf.js文件中配置外部扩展externals,如下:


 externals: {

   echarts: 'echarts',

  },

1

2

3

如下图:



2.2 在模板文件index.html文件中使用cdn引入echarts


使用前需要在模板文件index.html文件中使用cdn引入echarts,否则会报echartsundefined的错误。如下:


<script src="https://cdn.bootcss.com/echarts/4.2.1-rc1/echarts.min.js"></script>

1


2.3 在需要使用echarts的地方直接使用


配置外部扩展externals以后,在vue文件中就不需要再使用import或者require引入echarts了,可以直接使用,比如初始化图表就可以直接使用this.$echarts.init()。如下:




2.3 再次打包


再次使用cnpm run build打包,此时dist文件夹已经只有1m多了,大小直接减小了5M,效果立竿见影啊。如下:



打包报告:


打包的时间也有缩短,只有12ms左右,





  • 2020-06-20 06:31:16

    mac下全局配置adb环境

    不提示“command not found”,而是出现一长串帮助说明,那就证明adb已经配置好了。

  • 2020-06-20 06:31:39

    Android 无线调试手机(WiFi 调试)

    手机需要开启 USB 调试 手机和电脑要在同一个局域网(连接同一个 WiFi) adb connect 连接成功后要拔出 USB 线,不然出现同时连接两个设备的问题 执行命令 ”adb tcpip 6666“ 后可能需要重新开启 USB 调试

  • 2020-08-16 16:09:30

    android WebView 注入js 几种方式

    有时我们开发中需要将js 注入到我们本地,有可能你会说,放在Web不就可以了吗,的确,但是需求就是这样的

  • 2020-11-05 23:20:29

    mac更新node版本

    initializer function 0x0 not in mapped image for /usr/local/bin/node,除了上面的问题 你或许还出现过 no such file or directory 这样的提示,总之更新完以后node直接不能用了。

  • 2020-11-07 16:31:02

    nginx配置X-Frame-Options允许多个域名iframe嵌套

    有时候我们需要允许多个url的来源,但是又不能全部开放,所以应该匹配第三种方法ALLOW-FROM url,那么多个url该如何配置呢,百度了所有网站都没有找到,那么这里写给大家,其实很简单: add_header X-Frame-Options 'ALLOW-FROM https://xxx.xxxxxx.com https://xxx2.xxxxxxx.com'; 就是使用空格隔开就好了!

  • 2020-11-08 08:31:51

    meteor在不同端口启动服务

    当没有任何参数时,run是默认行为,在幕后,它3000端口开启node.js服务器实例,同时开启监听3001端口的MongoDB服务