vue打包优化,webpack的8大配置方案

2024-02-27 9599阅读

vue打包优化,webpack的8大配置方案 第1张

看本专栏目录

关于作者


还是大剑师兰特:曾是美国某知名大学计算机专业研究生,现为航空航海领域高级前端工程师;CSDN知名博主,GIS领域优质创作者,深耕openlayers、leaflet、mapbox、cesium,canvas,webgl,echarts等技术开发,欢迎加底部微信,一起交流。

热门推荐内容链接
1openlayers 从基础到精通,300+代码示例
2leaflet 热门分解学习教程,150+图文示例
3cesium 从0到1学习指南,200+代码示例
4 mapboxGL 从入门到实战,150+图文示例
5canvas 示例应用100+,揭密底层细节
6javascript从基础到高级,示例展示200+
7vue2 实战指南,100+个细节深度剖析

vue打包优化,webpack的8大配置方案 第2张

vue-cli 生成的项目通常集成Webpack ,在打包的时候,需要webpack来做一些事情。这里我们希望它可以压缩代码体积,提高运行效率。

文章目录

    • (1)代码压缩:
    • (2)图片压缩:
    • (3)Tree-Shaking删除未使用代码:
    • (4)代码分割:
    • (5)懒加载:
    • (6)缓存策略:
    • (7)去除未使用的代码:
    • (8)按需加载字体和其他资源:

      vue打包优化,webpack的8大配置方案 第3张

      (1)代码压缩:

      使用 Webpack 的压缩插件,如 UglifyJSPlugin 或 TerserPlugin,来压缩和优化 JavaScript 代码。示例代码:

      const UglifyJSPlugin = require(‘uglifyjs-webpack-plugin’);

      module.exports = {

      plugins: [

      new UglifyJSPlugin()

      ]

      };

      这将压缩和混淆 JavaScript 代码,减小文件大小。

      (2)图片压缩:

      对于图片资源,可以使用图像压缩工具或库,如 imagemin 或 svgo,在 Webpack 构建过程中自动压缩图片。示例代码(使用 imagemin-webpack-plugin):

      const ImageminPlugin = require(‘imagemin-webpack-plugin’).default;

      module.exports = {

      plugins: [

      new ImageminPlugin({

      pngquant: {

      quality: ‘65-80’

      }

      })

      ]

      };

      根据需要配置图片压缩的参数,如质量等。

      (3)Tree-Shaking删除未使用代码:

      启用 Tree-Shaking,删除未使用的代码和依赖。确保在模块导入时使用具体的导出名称,而不是通配符或默认导入。示例代码:

      import { componentA } from ‘./componentA’;

      而不是:

      import * as componentA from ‘./componentA’;

      (4)代码分割:

      将代码分割成多个块,并按需加载,只加载当前页面需要的代码。使用 CommonsChunkPlugin 或 SplitChunksPlugin 来实现。示例代码(使用 CommonsChunkPlugin):

      const CommonsChunkPlugin = require(‘webpack/lib/ CommonsChunkPlugin’);

      module.exports = {

      plugins: [

      new CommonsChunkPlugin({

      name: ‘vendors’,

      minChunks: Infinity

      })

      ]

      };

      将常用的库或第三方模块提取到一个单独的vendors 文件中。

      (5)懒加载:

      实现组件懒加载,只有在需要时才加载对应的组件。使用 Vue 的异步组件或 Webpack 的动态导入。示例代码(使用 Vue 的异步组件):

         
         methods: {
           loadComponent() {
             return () => import('./componentB.vue');
           }
         }
      

      在需要时动态加载组件 B。

      (6)缓存策略:

      利用 Webpack 的缓存机制,避免重复编译相同的代码。配置合适的缓存策略,如设置 cache-loader 或 hard-source-webpack-plugin。示例代码(使用 cache-loader):

      module: {

      rules: [

      {

      test: /.js$/,

      use: ‘cache-loader’,

      loader: ‘babel-loader’

      }

      ]

      }

      使用 cache-loader 来缓存 Babel 编译的结果。

      (7)去除未使用的代码:

      使用 Webpack 的分析工具,如 webpack-bundle-analyzer,来分析包的内容,找出未使用的代码并进行清理。安装和运行 webpack-bundle-analyzer,查看构建结果的分析报告。

      (8)按需加载字体和其他资源:

      使用字体加载库,如 fontface-loader,或其他资源的按需加载库,避免一次性加载所有资源。

      这些方案可以结合使用,根据项目的具体需求和情况进行调整。通过合理配置 Webpack,可以有效减小 Vue 项目打包文件的大小,提高应用的性能和加载速度。记得根据实际情况进行测试和优化,并根据项目的特定需求选择合适的方案。


    免责声明:我们致力于保护作者版权,注重分享,被刊用文章因无法核实真实出处,未能及时与作者取得联系,或有版权异议的,请联系管理员,我们会立即处理! 部分文章是来自自研大数据AI进行生成,内容摘自(百度百科,百度知道,头条百科,中国民法典,刑法,牛津词典,新华词典,汉语词典,国家院校,科普平台)等数据,内容仅供学习参考,不准确地方联系删除处理! 图片声明:本站部分配图来自人工智能系统AI生成,觅知网授权图片,PxHere摄影无版权图库和百度,360,搜狗等多加搜索引擎自动关键词搜索配图,如有侵权的图片,请第一时间联系我们,邮箱:ciyunidc@ciyunshuju.com。本站只作为美观性配图使用,无任何非法侵犯第三方意图,一切解释权归图片著作权方,本站不承担任何责任。如有恶意碰瓷者,必当奉陪到底严惩不贷!

    目录[+]