一次vue-cli 2.x项目打包优化经历(优化xlsx插件)
一、分析各模块打包后大小
用vue-cli创建的项目,已经集成 webpack-bundle-analyzer。
详见文件 build/webpack.prod.conf.js,代码如下:
if (config.build.bundleAnalyzerReport) {
  const BundleAnalyzerPlugin = require('webpack-bundle-analyzer').BundleAnalyzerPlugin
  webpackConfig.plugins.push(new BundleAnalyzerPlugin())
}
运行npm run build --report后,会提示:
Webpack Bundle Analyzer is started at http://127.0.0.1:8888
Use Ctrl+C to close it
在该网址上可查看详细信息。
二、发现项目里打包后比较大的模块
发现xlsx(官方github地址:https://github.com/SheetJS/js...)打包后很大,因为在好多组件里都引用了 import XLSX from 'xlsx',每个组件都会包含这个xlsx。
三、优化
将引用放在 src/main.js 中,只引用一次,再绑定的Vue的prototype上。
import Vue from 'vue'
import XLSX from 'xlsx'
Vue.prototype.$XLSX = XLSX
其他组件里使用,直接调用this.$XLSX就可以了。
四、结论
一次引用,绑定到Vue的prototype上,在组件里使用。这样能避免组件每次都import,也避免组件打包后很大。
原文地址:https://segmentfault.com/a/1190000014284449
一次vue-cli 2.x项目打包优化经历(优化xlsx插件)的更多相关文章
- vue cli创建typescript项目
		使用最新的Vue CLI @vue/cli创建typescript项目,使用vue -V查看当前的vue cli版本 安装命令 npm install -g @vue-cli 创建项目 vue cre ... 
- vue cli 3.x 项目部署到 github pages
		github pages 是 github 免费为用户提供的服务,写博客,或者部署一些纯静态项目. 最近将 vue cli 3.x 初始化项目部署到 github pages,踩了一些坑,记录如下. ... 
- @vue/cli 3.x项目脚手架 webpack 配置
		@vue/cli 是一个基于 Vue.js 进行快速开发的完整系统. @vue/cli 基于node服务 需要8.9以上版本 可以使用 nvm等工具来控制node版本 构建于 webpack ... 
- Electron+Vue – 基础学习(2): 项目打包成exe桌面应用
		项目创建完成,启动正常,接下来就是项目打包了.将测试Demo打包成exe桌面应用,点击exe文件,运行项目. 书接上文,创建项目有三种方式 Git拷贝.直接创建:通过electron社群提供的命令行工 ... 
- 基于@vue/cli 的构建项目(3.0)
		1.检测node的版本号 注意:1.Vue CLI需要Node.js的版本 8.9+(推荐8.11.0+) 所以在安装Vue CLI之前先看下node的版本 node -v 2.安装@vue/cli ... 
- Vue Cli 3.x项目如何部署到IIS子站点下
		Vue Router在IIS下的部署参考:https://router.vuejs.org/zh/guide/essentials/history-mode.html#%E5%90%8E%E7%AB% ... 
- VUE CLI 3.0 项目引入 ElementUI
		ElementUI 官网: http://element-cn.eleme.io/#/zh-CN/component/installation 一.通过npm安装依赖包 1. 进入到项目目录,执行指令 ... 
- vue cli创建的项目 当你后期使用了ES6语法,如何解决浏览器兼容问题
		最近开发了一个项目,开发过程中,由于需要使用了async await ,于是发现,只有少数的浏览器支持,极大多数的浏览器是不支持这玩意的,在网上各种找解决方案,基本都是失败,最后总结了两个方案之后,尝 ... 
- @vue/cli 构建得项目eslint配置
		如下:package.json // package.json { "name": "ecommerce-mall-front", "version& ... 
- VUE CLI 3.0 项目引入 Mock.js
		mockjs 官网:http://mockjs.com/ 之前没有使用过 mockjs 的同学,请参考官网文档,数据生成规则和方法的调用都有详细说明. 一.通过npm安装依赖包 1. 进入到项目目录, ... 
随机推荐
- changing permissions of Read-only file system in linux
			up vote 2 down vote favorite 1 i use this command to make a bootable flash disk of linux mint sudo ... 
- android-----JNI中的log打印【转】
			本文转载自:http://blog.csdn.net/zengraoli/article/details/11644815 1. 导入log头文件 在你使用的 .c/ .cpp 文件中 导入 log. ... 
- RDA 升级
			烧录BOOT升级方式: 1.连接 2.烧录BOOT 1)升级“bootrom_raw.bin” 99K,这种升级方式需要Tera Term 工具,按“F5” U盘升级. 编译的升级文件“RR8503 ... 
- linux下.a/.so/.la目标库区别
			在linux平台上编译时,常会遇到目标库的疑问,有静态库也有动态库,单个理解都不太难,但是对复杂的工程而言,一旦混合到一起去,对整个工程的理解和调用,将会造成很大困扰,本文就汇总这几种常见编译结果文件 ... 
- 自定义Git(转载)
			转自:http://www.liaoxuefeng.com/wiki/0013739516305929606dd18361248578c67b8067c8c017b000/00137621280731 ... 
- 2.android
			ImageButton action_btn = (ImageButton) findViewById(R.id.action_btn);action_btn.setOnClickListener(n ... 
- All Discs Considered(拓扑排序)
			http://poj.org/problem?id=1778 题意:有两个DVD,第一个DVD上有编号为1~n1的安装包,第二个DVD上有编号为n1+1~n1+n2的安装包,给出m组关系(a,b) 表 ... 
- Django day26 HyperlinkedIdentityField,序列化组件的数据校验以及功能的(全局,局部)钩子函数,序列化组件的反序列化和保存
			一:HyperlinkedIdentityField(用的很少):传三个参数:第一个路由名字,用来反向解析,第二个参数是要反向解析的参数值,第三个参数:有名分组的名字 -1 publish = ser ... 
- Spring中常用的注解,你知道几个呢?
			今天给大家分享下Spring中一般常用的注解都有哪些.可能很多人做了很长是了但有些还是不知道一些注解,不过没有关系,你接着往下看. Spring部分 1.声明bean的注解 @Component 组件 ... 
- Netty(1) - 理解
			官网:netty.io ---------------------------------------------------------------------------------------- ... 
