【优化方案】vue项目chunk-vendors.js、app.js文件太大

2024-02-24 20:10

本文主要是介绍【优化方案】vue项目chunk-vendors.js、app.js文件太大,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

没做优化前

第一步: 前端配置

先安装  "compression-webpack-plugin": "^5.0.1", 插件,为了不会出现兼容先,按照当前版本

然后在vue.config.js文件中修改配置

(1)将打包的js文件分割成多个js以免加载很慢

(2)打包时将js文件转gzip格式

const webpack = require('webpack')

const CompressionWebpackPlugin = require('compression-webpack-plugin')

const productionGzipExtensions = ['js', 'css']

module.exports = {

  devServer: {

    open: true,

    proxy: {

      [process.env.VUE_APP_BASE_JAVA_API]: {

        target: process.env.VUE_APP_BASE_JAVA_URL, // 测试

        changeOrigin: true,

        pathRewrite: {

          ['^' + process.env.VUE_APP_BASE_JAVA_API]: ''

        }

      },

      [process.env.VUE_APP_BASE_PHP_API]: {

        target: process.env.VUE_APP_BASE_PHP_URL, // 测试

        changeOrigin: true,

        pathRewrite: {

          ['^' + process.env.VUE_APP_BASE_PHP_API]: ''

        }

      }

    },

  },

  // 静态资源路径

  publicPath: './',

  // 输出文件目录

  outputDir: 'dist',

  // 静态资源目录

  assetsDir: 'other2',

  // 生产环境是否生成 sourceMap 文件

  productionSourceMap: false, //不输出map文件

  configureWebpack: {

    externals: {

      'vue': 'Vue',

      'vuex': 'Vuex',

      'vue-router': 'VueRouter'

    },

    plugins: [

      // Ignore all locale files of moment.js

      new webpack.IgnorePlugin(/^\.\/locale$/, /moment$/),

      // 配置compression-webpack-plugin压缩

      new CompressionWebpackPlugin({

        algorithm: 'gzip',

        test: new RegExp('\\.(' + productionGzipExtensions.join('|') + ')$'),

        threshold: 10240,

        minRatio: 0.8

      }),

    ],

    // 开启分离 js

    optimization: {

      runtimeChunk: 'single',

      splitChunks: {

        chunks: 'all',

        maxInitialRequests: Infinity,

        minSize: 20000,

        cacheGroups: {

          vendor: {

            test: /[\\/]node_modules[\\/]/,

            name(module) {

              // get the name. E.g. node_modules/packageName/not/this/part.js

              // or node_modules/packageName

              const packageName = module.context.match(/[\\/]node_modules[\\/](.*?)([\\/]|$)/)[1]

              // npm package names are URL-safe, but some servers don't like @ symbols

              return `npm.${packageName.replace('@', '')}`

            }

          }

        }

      }

    },

    //关闭 webpack 的性能提示

    performance: {

      hints: false

    }

  },

  transpileDependencies: ['webpack-dev-server/client'],

  chainWebpack: (config) => {

    config.entry.app = ['babel-polyfill', './src/main.js'];

    const svgRule = config.module.rule('svg');

    svgRule.uses.clear();

    svgRule

      .use('babel-loader')

      .loader('babel-loader')

      .end()

      .use('vue-svg-loader')

      .loader('vue-svg-loader');

    /* 添加分析工具*/

    if (process.env.NODE_ENV === 'production') {

      if (process.env.npm_config_report) {

        config

          .plugin('webpack-bundle-analyzer')

          .use(require('webpack-bundle-analyzer').BundleAnalyzerPlugin)

          .end();

        config.plugins.delete('prefetch')

      }

    }

  }

}

 配置好打包后的效果

第二步:服务器nginx配置

具体可以参考:nginx服务器配置

这篇关于【优化方案】vue项目chunk-vendors.js、app.js文件太大的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/743228

相关文章

深度解析Java项目中包和包之间的联系

《深度解析Java项目中包和包之间的联系》文章浏览阅读850次,点赞13次,收藏8次。本文详细介绍了Java分层架构中的几个关键包:DTO、Controller、Service和Mapper。_jav... 目录前言一、各大包1.DTO1.1、DTO的核心用途1.2. DTO与实体类(Entity)的区别1

MyBatisPlus如何优化千万级数据的CRUD

《MyBatisPlus如何优化千万级数据的CRUD》最近负责的一个项目,数据库表量级破千万,每次执行CRUD都像走钢丝,稍有不慎就引起数据库报警,本文就结合这个项目的实战经验,聊聊MyBatisPl... 目录背景一、MyBATis Plus 简介二、千万级数据的挑战三、优化 CRUD 的关键策略1. 查

SQLite3 在嵌入式C环境中存储音频/视频文件的最优方案

《SQLite3在嵌入式C环境中存储音频/视频文件的最优方案》本文探讨了SQLite3在嵌入式C环境中存储音视频文件的优化方案,推荐采用文件路径存储结合元数据管理,兼顾效率与资源限制,小文件可使用B... 目录SQLite3 在嵌入式C环境中存储音频/视频文件的专业方案一、存储策略选择1. 直接存储 vs

如何在Spring Boot项目中集成MQTT协议

《如何在SpringBoot项目中集成MQTT协议》本文介绍在SpringBoot中集成MQTT的步骤,包括安装Broker、添加EclipsePaho依赖、配置连接参数、实现消息发布订阅、测试接口... 目录1. 准备工作2. 引入依赖3. 配置MQTT连接4. 创建MQTT配置类5. 实现消息发布与订阅

springboot项目打jar制作成镜像并指定配置文件位置方式

《springboot项目打jar制作成镜像并指定配置文件位置方式》:本文主要介绍springboot项目打jar制作成镜像并指定配置文件位置方式,具有很好的参考价值,希望对大家有所帮助,如有错误... 目录一、上传jar到服务器二、编写dockerfile三、新建对应配置文件所存放的数据卷目录四、将配置文

前端如何通过nginx访问本地端口

《前端如何通过nginx访问本地端口》:本文主要介绍前端如何通过nginx访问本地端口的问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、nginx安装1、下载(1)下载地址(2)系统选择(3)版本选择2、安装部署(1)解压(2)配置文件修改(3)启动(4)

怎么用idea创建一个SpringBoot项目

《怎么用idea创建一个SpringBoot项目》本文介绍了在IDEA中创建SpringBoot项目的步骤,包括环境准备(JDK1.8+、Maven3.2.5+)、使用SpringInitializr... 目录如何在idea中创建一个SpringBoot项目环境准备1.1打开IDEA,点击New新建一个项

HTML中meta标签的常见使用案例(示例详解)

《HTML中meta标签的常见使用案例(示例详解)》HTMLmeta标签用于提供文档元数据,涵盖字符编码、SEO优化、社交媒体集成、移动设备适配、浏览器控制及安全隐私设置,优化页面显示与搜索引擎索引... 目录html中meta标签的常见使用案例一、基础功能二、搜索引擎优化(seo)三、社交媒体集成四、移动

HTML input 标签示例详解

《HTMLinput标签示例详解》input标签主要用于接收用户的输入,随type属性值的不同,变换其具体功能,本文通过实例图文并茂的形式给大家介绍HTMLinput标签,感兴趣的朋友一... 目录通用属性输入框单行文本输入框 text密码输入框 password数字输入框 number电子邮件输入编程框

HTML img标签和超链接标签详细介绍

《HTMLimg标签和超链接标签详细介绍》:本文主要介绍了HTML中img标签的使用,包括src属性(指定图片路径)、相对/绝对路径区别、alt替代文本、title提示、宽高控制及边框设置等,详细内容请阅读本文,希望能对你有所帮助... 目录img 标签src 属性alt 属性title 属性width/h