【优化方案】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

相关文章

javafx 如何将项目打包为 Windows 的可执行文件exe

《javafx如何将项目打包为Windows的可执行文件exe》文章介绍了三种将JavaFX项目打包为.exe文件的方法:方法1使用jpackage(适用于JDK14及以上版本),方法2使用La... 目录方法 1:使用 jpackage(适用于 JDK 14 及更高版本)方法 2:使用 Launch4j(

Node.js 中 http 模块的深度剖析与实战应用小结

《Node.js中http模块的深度剖析与实战应用小结》本文详细介绍了Node.js中的http模块,从创建HTTP服务器、处理请求与响应,到获取请求参数,每个环节都通过代码示例进行解析,旨在帮... 目录Node.js 中 http 模块的深度剖析与实战应用一、引言二、创建 HTTP 服务器:基石搭建(一

Docker集成CI/CD的项目实践

《Docker集成CI/CD的项目实践》本文主要介绍了Docker集成CI/CD的项目实践,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学... 目录一、引言1.1 什么是 CI/CD?1.2 docker 在 CI/CD 中的作用二、Docke

React实现原生APP切换效果

《React实现原生APP切换效果》最近需要使用Hybrid的方式开发一个APP,交互和原生APP相似并且需要IM通信,本文给大家介绍了使用React实现原生APP切换效果,文中通过代码示例讲解的非常... 目录背景需求概览技术栈实现步骤根据 react-router-dom 文档配置好路由添加过渡动画使用

SpringBoot项目引入token设置方式

《SpringBoot项目引入token设置方式》本文详细介绍了JWT(JSONWebToken)的基本概念、结构、应用场景以及工作原理,通过动手实践,展示了如何在SpringBoot项目中实现JWT... 目录一. 先了解熟悉JWT(jsON Web Token)1. JSON Web Token是什么鬼

手把手教你idea中创建一个javaweb(webapp)项目详细图文教程

《手把手教你idea中创建一个javaweb(webapp)项目详细图文教程》:本文主要介绍如何使用IntelliJIDEA创建一个Maven项目,并配置Tomcat服务器进行运行,过程包括创建... 1.启动idea2.创建项目模板点击项目-新建项目-选择maven,显示如下页面输入项目名称,选择

Jenkins中自动化部署Spring Boot项目的全过程

《Jenkins中自动化部署SpringBoot项目的全过程》:本文主要介绍如何使用Jenkins从Git仓库拉取SpringBoot项目并进行自动化部署,通过配置Jenkins任务,实现项目的... 目录准备工作启动 Jenkins配置 Jenkins创建及配置任务源码管理构建触发器构建构建后操作构建任务

Java解析JSON的六种方案

《Java解析JSON的六种方案》这篇文章介绍了6种JSON解析方案,包括Jackson、Gson、FastJSON、JsonPath、、手动解析,分别阐述了它们的功能特点、代码示例、高级功能、优缺点... 目录前言1. 使用 Jackson:业界标配功能特点代码示例高级功能优缺点2. 使用 Gson:轻量

正则表达式高级应用与性能优化记录

《正则表达式高级应用与性能优化记录》本文介绍了正则表达式的高级应用和性能优化技巧,包括文本拆分、合并、XML/HTML解析、数据分析、以及性能优化方法,通过这些技巧,可以更高效地利用正则表达式进行复杂... 目录第6章:正则表达式的高级应用6.1 模式匹配与文本处理6.1.1 文本拆分6.1.2 文本合并6

Redis KEYS查询大批量数据替代方案

《RedisKEYS查询大批量数据替代方案》在使用Redis时,KEYS命令虽然简单直接,但其全表扫描的特性在处理大规模数据时会导致性能问题,甚至可能阻塞Redis服务,本文将介绍SCAN命令、有序... 目录前言KEYS命令问题背景替代方案1.使用 SCAN 命令2. 使用有序集合(Sorted Set)