我的编程空间,编程开发者的网络收藏夹
学习永远不晚

Vue项目从2.5M优化到200kb的方法是什么

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

Vue项目从2.5M优化到200kb的方法是什么

今天小编给大家分享一下Vue项目从2.5M优化到200kb的方法是什么的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。

需要新建文件'vue.config.js',(这文件名是固定这么写的),与package.json在同一级目录下。

BundleAnalyzer

作用:展示打包图形化信息,会打开一个html页面,帮助自己分析哪些文件过大,可针对其进行优化,上线前 注释掉

安装 webpack-bundle-analyzer 插件

  npm install webpack-bundle-analyzer --save-dev

vue.config.js: 里面:

// 引入const BundleAnalyzerPlugin = require("webpack-bundle-analyzer").BundleAnalyzerPlugin;// 展示图形化信息chainWebpack: config => {  config      .plugin('webpack-bundle-analyzer')      .use(BundleAnalyzerPlugin)}

抽离 css 支持按需加载

安装 mini-css-extract-plugin 插件

 npm install mini-css-extract-plugin -D

vue.config.js里面:

chainWebpack: config => {  let miniCssExtractPlugin = new MiniCssExtractPlugin({    filename: 'assets/[name].[hash:8].css',    chunkFilename: 'assets/[name].[hash:8].css'  })  config.plugin('extract-css').use(miniCssExtractPlugin)}

图片按需加载

安装image-webpack-loader插件

 npm install image-webpack-loader -D

vue.config.js里面:

config.module.rule('images')    .test(/\.(png|jpe?g|gif|webp)(\?.*)?$/)    .use('image-webpack-loader')    .loader('image-webpack-loader')    .options({      bypassOnDebug: true    })    .end()

图片压缩可以在:https://tinypng.com/ 进行批量压缩

gzip压缩代码

安装 compression-webpack-plugin 插件

 npm install compression-webpack-plugin -D

vue.config.js里面:

const CompressionWebpackPlugin = require('compression-webpack-plugin');// 开启gzip压缩  config.plugins.push(    new CompressionWebpackPlugin(      {        filename: info => {          return `${info.path}.gz${info.query}`        },        algorithm: 'gzip',        threshold: 10240, // 只有大小大于该值的资源会被处理 10240        test: new RegExp('\\.(' + ['js'].join('|') + ')$'        ),        minRatio: 0.8, // 只有压缩率小于这个值的资源才会被处理        deleteOriginalAssets: false // 删除原文件      }    )  )

公共代码抽离

vue.config.js里面:

// 开启gzip压缩configureWebpack: config => {  config.plugins.push(    new CompressionWebpackPlugin(      {        filename: info => {          return `${info.path}.gz${info.query}`        },        algorithm: 'gzip',        threshold: 10240, // 只有大小大于该值的资源会被处理 10240        test: new RegExp('\\.(' + ['js'].join('|') + ')$'        ),        minRatio: 0.8, // 只有压缩率小于这个值的资源才会被处理        deleteOriginalAssets: false // 删除原文件      }    )  )}

element-ui 按需加载

安装 babel-plugin-component 插件

 npm install babel-plugin-component --save-dev

babel.config.js里面:

module.exports = {  presets: [    '@vue/app'  ],  plugins: [    [      "component",      {        libraryName: "element-ui",        styleLibraryName: "theme-chalk"      }    ]  ]}

echarts 按需加载:

安装 babel-plugin-equire 插件:

npm install babel-plugin-equire -D

在项目中创建 echarts.js:

// eslint-disable-next-line  const echarts = equire([    // 写上你需要的 echarts api    "tooltip",    "line"  ]);  export default echarts;

babel.config.js里面:

module.exports = {  presets: [    '@vue/app'  ],  plugins: [    [      "component",      {        libraryName: "element-ui",        styleLibraryName: "theme-chalk"      }    ],    "equire"  ]}

具体页面应用:

 // 直接引用 import echarts from '@/lib/util/echarts.js'   this.myChart = echarts.init(this.$refs.chart)

lodash 按需加载:

安装 lodash-webpack-plugin 插件

 npm install lodash-webpack-plugin --save-dev

babel.config.js里面:

module.exports = {  presets: [    '@vue/app'  ],  plugins: [    [      "component",      {        libraryName: "element-ui",        styleLibraryName: "theme-chalk"      }    ],    "lodash",    "equire"  ]}

vue.config.js里面:

const LodashModuleReplacementPlugin = require("lodash-webpack-plugin");chainWebpack: config => {    config    .plugin("loadshReplace")    .use(new LodashModuleReplacementPlugin());}

prefetch 和 preload

删除无用的插件,避免加载多余的资源(如果不删除的话,则会在 index.html 里面加载 无用的 js 文件)

chainWebpack: config => {    // 移除prefetch插件,避免加载多余的资源    config.plugins.delete('prefetch')    / 移除 preload 插件,避免加载多余的资源    config.plugins.delete('preload');}

完整的代码:

const MiniCssExtractPlugin = require('mini-css-extract-plugin');const CompressionWebpackPlugin = require('compression-webpack-plugin');const LodashModuleReplacementPlugin = require("lodash-webpack-plugin");module.exports = {  productionSourceMap: false, // 关闭生产环境的 source map  lintOnSave: false,  publicPath: process.env.VUE_APP_PUBLIC_PATH,  devServer: {    host: "localhost",    port: 3002,    proxy: {      '/api': {        target: "https://tapi.quanziapp.com/api/",        ws: true,        changeOrigin: true,        pathRewrite: {          '^/api': ''        }      },    }  },  chainWebpack: config => {    // 移除 prefetch 插件    config.plugins.delete('prefetch');    // 移除 preload 插件,避免加载多余的资源    config.plugins.delete('preload');     config.optimization.minimize(true);    config.optimization.splitChunks({      chunks: 'all'    })    config      .plugin('webpack-bundle-analyzer')      .use(require('webpack-bundle-analyzer').BundleAnalyzerPlugin)    if (process.env.NODE_ENV !== 'development') {      let miniCssExtractPlugin = new MiniCssExtractPlugin({        filename: 'assets/[name].[hash:8].css',        chunkFilename: 'assets/[name].[hash:8].css'      })      config.plugin('extract-css').use(miniCssExtractPlugin)      config.plugin("loadshReplace").use(new LodashModuleReplacementPlugin());      config.module.rule('images')        .test(/\.(png|jpe?g|gif|webp)(\?.*)?$/)        .use('image-webpack-loader')        .loader('image-webpack-loader')        .options({          bypassOnDebug: true        })        .end()        .use('url-loader')        .loader('file-loader')        .options({          name: 'assets/[name].[hash:8].[ext]'        }).end()      config.module.rule('svg')        .test(/\.(svg)(\?.*)?$/)        .use('file-loader')        .loader('file-loader')        .options({          name: 'assets/[name].[hash:8].[ext]'        })    }  },  configureWebpack: config => {    // config.plugins.push(["equire"]);    if (process.env.NODE_ENV !== 'development') {      config.output.filename = 'assets/[name].[hash:8].js'      config.output.chunkFilename = 'assets/[name].[hash:8].js'    }    // 公共代码抽离    config.optimization = {      // 分割代码块      splitChunks: {        cacheGroups: {          //公用模块抽离          common: {            chunks: 'initial',            minSize: 0, //大于0个字节            minChunks: 2, //抽离公共代码时,这个代码块最小被引用的次数          },          //第三方库抽离          vendor: {            priority: 1, //权重            test: /node_modules/,            chunks: 'initial',            minSize: 0, //大于0个字节            minChunks: 2, //在分割之前,这个代码块最小应该被引用的次数          },        },      }    }    // 开启gzip压缩    config.plugins.push(      new CompressionWebpackPlugin(        {          filename: info => {            return `${info.path}.gz${info.query}`          },          algorithm: 'gzip',          threshold: 10240, // 只有大小大于该值的资源会被处理 10240          test: new RegExp('\\.(' + ['js'].join('|') + ')$'          ),          minRatio: 0.8, // 只有压缩率小于这个值的资源才会被处理          deleteOriginalAssets: false // 删除原文件        }      )    )  },  css: {    extract: true,    sourceMap: false,    loaderOptions: {      sass: {      },    },  },}

以上就是“Vue项目从2.5M优化到200kb的方法是什么”这篇文章的所有内容,感谢各位的阅读!相信大家阅读完这篇文章都有很大的收获,小编每天都会为大家更新不同的知识,如果还想学习更多的知识,请关注编程网行业资讯频道。

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

Vue项目从2.5M优化到200kb的方法是什么

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

Vue项目从2.5M优化到200kb的方法是什么

今天小编给大家分享一下Vue项目从2.5M优化到200kb的方法是什么的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。需要新建
2023-06-27

Ubuntu部署vue项目的方法是什么

这篇文章主要介绍了Ubuntu部署vue项目的方法是什么的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇Ubuntu部署vue项目的方法是什么文章都会有所收获,下面我们一起来看看吧。1.安装nginx。2.在vu
2023-07-04

vue-cli是什么及创建vue-cli项目的方法

vue-cli是vue官方提供的、快速生成vue工程化项目的工具,支持创建vue2和vue3的项目,本文给大家详细讲解vue-cli是什么及创建vue-cli项目的方法,感兴趣的朋友跟随小编一起看看吧
2023-05-16

Vue项目部署上线的方法是什么

本篇内容介绍了“Vue项目部署上线的方法是什么”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!上线前准备1.先在vue.config.js文件
2023-07-05

gitlab上clone项目到本地的方法是什么

今天小编给大家分享一下gitlab上clone项目到本地的方法是什么的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。git c
2023-07-05

Vue优化网页响应速度的方法是什么

这篇文章主要介绍“Vue优化网页响应速度的方法是什么”,在日常操作中,相信很多人在Vue优化网页响应速度的方法是什么问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Vue优化网页响应速度的方法是什么”的疑惑有所
2023-07-04

将项目部署到云主机上的方法是什么

将项目部署到云主机上的方法可以通过以下步骤实现:1. 选择云服务提供商:根据需求和预算选择合适的云服务提供商。2. 创建云主机实例:在云服务提供商的控制台上创建一个云主机实例。选择适当的实例类型、操作系统和其他配置参数。3. 配置安全组和网
2023-09-21

Vue中mixins的使用方法及实际项目应用是什么

这篇文章主要介绍了Vue中mixins的使用方法及实际项目应用是什么的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇Vue中mixins的使用方法及实际项目应用是什么文章都会有所收获,下面我们一起来看看吧。(1)
2023-07-05

将数据从 io.Reader 直接复制到 golang 中的目标 bytes.Buffer 的正确方法是什么?

问题内容我有代码想要将数据从 io.Reader 直接复制到 bytes.Buffer 结构,该结构旨在作为缓存保留在内存中。现在我只是调用 io.Copy(dstBytesBuffer, reader)。但查看 io.Copy 代码,它
将数据从 io.Reader 直接复制到 golang 中的目标 bytes.Buffer 的正确方法是什么?
2024-02-05

中项目启动时实现初始化方法的加载参数是什么

中项目启动时实现初始化方法的加载参数是什么,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。springboot项目启动,初始化方法加载参数今天我看到项目中用到了
2023-06-22

本地编译打包项目部署到服务器且启动的方法是什么

这篇文章主要讲解了“本地编译打包项目部署到服务器且启动的方法是什么”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“本地编译打包项目部署到服务器且启动的方法是什么”吧!一、idea打包项目第一步
2023-07-05

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录