vue项目webpack打包app.js文件太大导致首次加载非常缓慢的解决方案

 ———————————————— 
版权声明:本文为CSDN博主「攻城狮YanGo」的原创文章,遵循CC 4.0 by-sa版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/weixin_39644462/article/details/90904633

 

对于初学者接触vue项目的时候,一些小项目可能没注意到这一点。对于中大型的项目,打包出来的app.js都有好几M了,导致首次加载的时候非常缓慢,我因为公司需求而急于接收的vue的项目就遇到这个问题,搜索了很多童鞋的方案,大家都比较推荐gzip静态资源压缩,这个需要结合服务器端的配置。
 

 

首先打开/config/index.js文件

 

但是先别急于动手安装,因为 npm install --save-dev compression-webpack-plugin 安装后会报错,很多同鞋都有提到过的,可能是高版本的问题,所以需要在后面指定版本安装(下面是1.1.12版本)的。

npm install --save-dev compression-webpack-plugin@1.1.12

 

 

然后打开/build/webpack.base.config.js文件,找到module.exports的module中的rules

为什么要改这里呢?

因为vue中一些小的静态资源文件是会打包成base64的文件存在css中的或者js中,这里就是控制需要转换的大小,这样减少了js的大小。

 

 

 

服务器端(下面以Nginx为例)

打开配置文件

一般都会默认开启gzip的,但是gzip_static 是没有开启的,所有需要加上 gzip_static on;

如果没有开启gzip的话可以在手动在http{}里添加

http {
    gzip on;
    gzip_static on;
    gzip_min_length  1k;
    gzip_buffers     4 16k;
    gzip_http_version 1.1;
    gzip_comp_level 2;
    gzip_types     text/plain application/javascript application/x-javascript         
    text/javascript text/css application/xml;
    gzip_vary on;
    gzip_proxied   expired no-cache no-store private auth;
    gzip_disable   "MSIE [1-6]\.";
}

 

<think>好的,用户让我介绍一下“npm run build”,我需要详细解释它的用途和流程。首先,用户可能刚接触前端开发,对构建流程不太熟悉,所以要从基础开始讲。 我应该先说明npm是什么,以及package.json里的scripts部分,因为“run build”执行的是那里定义的命令。然后解释构建的目的,比如优化代码、压缩文件、转译ES6等。用户可能需要知道构建后的结果,比如生成dist或build文件夹,以及这些文件如何部署到生产环境。 还要考虑用户可能遇到的问题,比如构建失败的原因,或者如何自定义构建配置。可能需要提到不同的前端框架,比如React或Vue,它们的构建命令可能有所不同,但都是通过npm run build触发。 另外,需要确保使用正确的LaTeX格式,比如行内公式用$...$,独立公式用$$...$$。不过在这个问题中可能用到的技术术语较多,数学公式可能较少,但要留意是否有需要的地方,比如版本号或命令行参数,但暂时没发现需要用LaTeX的地方。 用户可能还想知道构建过程中的具体步骤,比如Webpack的工作流程,代码分割,Tree Shaking等,这些可以稍微提一下,但不要过于深入,以免让初学者感到困惑。同时,要强调构建的重要性,比如提升性能,减少加载时间。 还要提醒用户常见的注意事项,比如构建前确保测试通过,处理环境变量,或者如何分析构建后的文件大小。可能还需要提到缓存问题和持续集成中的使用场景。 最后,确保结构清晰,分点说明,让用户能一步步理解。检查是否覆盖了主要的使用场景和潜在问题,确保回答准确可靠,没有技术错误。</think>我来逐步讲解`npm run build`的用途和执行过程: 1. **基本概念** - `npm`是Node.js的包管理工具 - `run build`是执行`package.json`文件中`scripts`区块定义的`build`命令 - 例如在Vue项目中常见配置: ```json "scripts": { "build": "vue-cli-service build" } ``` 2. **主要作用** - 代码转译:将ES6+语法转换为浏览器兼容的ES5 - 文件优化: - 压缩JavaScript/CSS(例如使用`uglifyjs`) - 图片压缩(通过`image-webpack-loader`等) - 资源整合:合并多个文件减少HTTP请求 - 添加生产环境特性: - 移除调试代码 - 启用代码混淆 - 开启Gzip压缩 3. **典型输出结构** ```bash dist/ ├── css/ │ └── app.[hash].css ├── js/ │ ├── chunk-vendors.[hash].js │ └── app.[hash].js └── index.html ``` (其中`[hash]`是文件内容哈希值,用于缓存控制) 4. **执行流程示例** 当运行`npm run build`时: ```mermaid graph TD A[开始构建] --> B[清理旧构建目录] B --> C[读取项目配置] C --> D[代码转译和打包] D --> E[静态资源处理] E --> F[生成生产版本] F --> G[输出到dist目录] ``` 5. **常见框架的构建命令** - React: `react-scripts build` - Vue: `vue-cli-service build` - Angular: `ng build --prod` 6. **注意事项** - 构建前应确保: ```bash npm install # 安装所有依赖 npm test # 通过测试用例 ``` - 环境变量需通过`.env.production`文件配置 - 可使用`--report`参数生成打包分析报告: ```bash npm run build -- --report ``` 7. **性能优化指标** - 推荐目标值: - JavaScript文件大小 < 200KB(gzip后) - 关键CSS < 50KB - 首屏加载时间 < 3秒(3G网络) 8. **故障排查** 常见错误处理流程: ```bash # 1. 清除缓存 rm -rf node_modules/.cache # 2. 重新安装依赖 npm ci # 3. 再次构建 npm run build ``` 建议在首次构建后,使用`serve -s dist`命令本地测试生产环境版本,验证功能正常后再部署到服务器。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值