vue项目如何打包之项目打包优化(让打包的js文件变小)


Posted in Vue.js onApril 30, 2022

通常在一个vue项目中会用到很多插件什么,swiper,axios,vuerouter,vuex,…,那么使用了很多插件势必会造成打包的js文件过大,影响加载速度,造成不好的用户体验,那么我就来讲一件我自己总结打包方式,(让js文件变小)

我使用的命令是 vue ui 可视化打包操作

vue项目如何打包之项目打包优化(让打包的js文件变小)

进入可视化面板

vue项目如何打包之项目打包优化(让打包的js文件变小)

默认情况下,vue-cli 3.0生成的项目,隐藏了webpack配置项,如果我们需要配置webpack

需要通过vue.config.js来配置

在项目根目录中创建vue.config.js文件,

vue项目如何打包之项目打包优化(让打包的js文件变小)

module.exports = {
    chainWebpack:config=>{
        //发布模式
        config.when(process.env.NODE_ENV === 'production',config=>{
            //entry找到默认的打包入口,调用clear则是删除默认的打包入口
            //add添加新的打包入口
            config.entry('app').clear().add('./src/main-prod.js')
        })
        //开发模式
        config.when(process.env.NODE_ENV === 'development',config=>{
            config.entry('app').clear().add('./src/main-dev.js')
        })
    }
}

补充:

chainWebpack可以通过链式编程的形式,修改webpack配置

configureWebpack可以通过操作对象的形式,修改webpack配置

**###7.加载外部CDN

默认情况下,依赖项的所有第三方包都会被打包到js/chunk-vendors.

.js文件中,导致该js文件过大

那么我们可以通过externals排除这些包,使它们不被打包到js/chunk-vendors.

module.exports = {
    chainWebpack:config=>{
        //发布模式
        config.when(process.env.NODE_ENV === 'production',config=>{
            //entry找到默认的打包入口,调用clear则是删除默认的打包入口
            //add添加新的打包入口
            config.entry('app').clear().add('./src/main-prod.js')
            //使用externals设置排除项
            config.set('externals',{
                vue:'Vue',
                'vue-router':'VueRouter',
                axios:'axios',
                moment:'moment'
            })
        })
        //开发模式
        config.when(process.env.NODE_ENV === 'development',config=>{
            config.entry('app').clear().add('./src/main-dev.js')
        })
    }
}

在public 中的index文件中使用cdn引入外部js 从而然打包的js文件体积变小

vue项目如何打包之项目打包优化(让打包的js文件变小)

我们来看下 没有使用externals设置排除项 打包的js体积大小

vue项目如何打包之项目打包优化(让打包的js文件变小)

来看下使用externals设置排除项以后的大小

vue项目如何打包之项目打包优化(让打包的js文件变小)

明显变小了,而且把项目跑在服务器上 明显加载速度提升了很多

其他的优化还有 使用vuerouter 的路由懒加载,这里就不再赘述,vuerouter懒加载解释


Tags in this post...

Vue.js 相关文章推荐
Vue组件生命周期运行原理解析
Nov 25 Vue.js
vue+element UI实现树形表格
Dec 29 Vue.js
如何在Vue项目中添加接口监听遮罩
Jan 25 Vue.js
Vue ​v-model相关知识总结
Jan 28 Vue.js
Vue 实现可视化拖拽页面编辑器
Feb 01 Vue.js
vue实现可拖拽的dialog弹框
May 13 Vue.js
详解Vue的options
May 15 Vue.js
一文带你理解vue创建一个后台管理系统流程(Vue+Element)
May 18 Vue.js
vue-element-admin项目导入和导出的实现
May 21 Vue.js
Vue vee-validate插件的简单使用
Jun 22 Vue.js
vue中 this.$set的使用详解
Nov 17 Vue.js
vue报错function () { [native code] },无法出现我们想要的内容 Unknown custom element
Apr 11 Vue.js
关于vue-router-link选择样式设置
Apr 30 #Vue.js
vue-treeselect的基本用法以及解决点击无法出现拉下菜单
Apr 30 #Vue.js
解决vue自定义组件@click点击失效问题
Apr 30 #Vue.js
Vue操作Storage本地化存储
Apr 29 #Vue.js
使用vuex-persistedstate本地存储vuex
Apr 29 #Vue.js
详解Vue3使用axios的配置教程
Apr 29 #Vue.js
vue生命周期钩子函数以及触发时机
Apr 26 #Vue.js
You might like
thinkPHP引入类的方法详解
2016/12/08 PHP
PHP简单实现解析xml为数组的方法
2018/05/02 PHP
PHP判断访客是否手机端(移动端浏览器)访问的方法总结【4种方法】
2019/03/27 PHP
Firefox getBoxObjectFor getBoundingClientRect联系
2008/10/26 Javascript
强大的jquery插件jqeuryUI做网页对话框效果!简单
2011/04/14 Javascript
JS TextArea字符串长度限制代码集合
2012/10/31 Javascript
JS 毫秒转时间示例代码
2013/09/22 Javascript
jQuery中$.fn的用法示例介绍
2013/11/05 Javascript
千分位数字格式化(用逗号隔开 代码已做了修改 支持0-9位逗号隔开)的JS代码
2013/12/05 Javascript
js拖拽的原型声明和用法总结
2016/04/04 Javascript
jQuery元素属性操作实例(设置、获取及删除元素属性)
2016/09/08 Javascript
静态页面实现 include 引入公用代码的示例
2017/09/25 Javascript
使用mock.js随机数据和使用express输出json接口的实现方法
2018/01/07 Javascript
Vue组件库发布到npm详解
2018/02/17 Javascript
简单了解前端渐进式框架VUE
2020/07/20 Javascript
Python 深入理解yield
2008/09/06 Python
搭建Python的Django框架环境并建立和运行第一个App的教程
2016/07/02 Python
pyhanlp安装介绍和简单应用
2019/02/22 Python
python3使用matplotlib绘制散点图
2019/03/19 Python
Numpy将二维数组添加到空数组的实现
2019/12/05 Python
python输出pdf文档的实例
2020/02/13 Python
python中提高pip install速度
2020/02/14 Python
Java ExcutorService优雅关闭方式解析
2020/05/30 Python
解决Keras中循环使用K.ctc_decode内存不释放的问题
2020/06/29 Python
PyCharm 2020.2 安装详细教程
2020/09/25 Python
Probikekit欧盟:在线公路自行车专家
2019/07/12 全球购物
香港莎莎官网Sasa.com:亚洲著名国际化妆品商城
2019/11/10 全球购物
委托公证书范本
2014/04/03 职场文书
在职证明书范本(2014新版)
2014/09/25 职场文书
构建和谐校园倡议书
2015/01/19 职场文书
某学校的2019年度工作报告范本
2019/10/11 职场文书
高一作文之乐趣
2019/11/21 职场文书
MySQL命令行操作时的编码问题详解
2021/04/14 MySQL
Python预测分词的实现
2021/06/18 Python
详解MongoDB排序时内存大小限制与创建索引的注意事项
2022/05/06 MongoDB
详解Mysql数据库平滑扩容解决高并发和大数据量问题
2022/05/25 MySQL