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 19 Vue.js
如何使用 vue-cli 创建模板项目
Nov 19 Vue.js
vue自定义插件封装,实现简易的elementUi的Message和MessageBox的示例
Nov 20 Vue.js
vue中实现点击空白区域关闭弹窗的两种方法
Dec 30 Vue.js
Vue过滤器,生命周期函数和vue-resource简单介绍
Jan 12 Vue.js
Vue+Bootstrap实现简易学生管理系统
Feb 09 Vue.js
vue前端工程的搭建
Mar 31 Vue.js
vue使用节流函数的踩坑实例指南
May 20 Vue.js
vue如何使用模拟的json数据查看效果
Mar 31 Vue.js
vue实现Toast组件轻提示
Apr 10 Vue.js
vue项目proxyTable配置和部署服务器
Apr 14 Vue.js
vue elementUI批量上传文件
Apr 26 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
短波的认识
2021/03/01 无线电
PHP插入排序实现代码
2013/04/04 PHP
Laravel Reponse响应客户端示例详解
2020/09/03 PHP
详解new function(){}和function(){}() 区别分析
2008/03/22 Javascript
js简单的弹出框有关闭按钮
2014/05/05 Javascript
在JS中操作时间之getUTCMilliseconds()方法的使用
2015/06/10 Javascript
jQuery实现tab选项卡效果的方法
2015/07/08 Javascript
基于JS实现移动端访问PC端页面时跳转到对应的移动端网页
2020/12/24 Javascript
AngularJS中指令的四种基本形式实例分析
2016/11/22 Javascript
简单理解js的冒泡排序
2016/12/19 Javascript
jQuery实现CheckBox全选、全不选功能
2017/01/11 Javascript
AngularJS自定义指令之复制指令实现方法
2017/05/18 Javascript
jquery实现图片跟随鼠标的实例
2017/10/17 jQuery
微信小程序实现图片预览功能
2018/01/31 Javascript
JavaScript 中的 this 工作原理
2018/06/20 Javascript
jQuery+vue.js实现的多选下拉列表功能示例
2019/01/15 jQuery
一步快速解决微信小程序中textarea层级太高遮挡其他组件
2019/03/04 Javascript
vue里如何主动销毁keep-alive缓存的组件
2019/03/21 Javascript
jQuery实现form表单基于ajax无刷新提交方法实例代码
2019/11/04 jQuery
python 装饰器功能以及函数参数使用介绍
2012/01/27 Python
python正则表达式判断字符串是否是全部小写示例
2013/12/25 Python
教你用 Python 实现微信跳一跳(Mac+iOS版)
2018/01/04 Python
python中验证码连通域分割的方法详解
2018/06/04 Python
详细分析Python collections工具库
2020/07/16 Python
HTML5 CSS3打造相册效果附源码下载
2014/06/16 HTML / CSS
英国汽车零件购物网站:GSF Car Parts
2019/05/23 全球购物
商务英语本科生的自我评价分享
2013/11/15 职场文书
应届优秀本科大学毕业生自我鉴定
2014/01/21 职场文书
美德好少年主要事迹
2014/01/29 职场文书
幼儿园庆六一活动方案
2014/03/06 职场文书
求职自我评价怎么写
2015/03/09 职场文书
python 实现体质指数BMI计算
2021/05/26 Python
OpenCV中resize函数插值算法的实现过程(五种)
2021/06/05 Python
Axios取消重复请求的方法实例详解
2021/06/15 Javascript
Python PIL按比例裁剪图片
2022/05/11 Python
HTML中实现音乐或视频自动播放案例详解
2022/05/30 HTML / CSS