webpack4打包优化

面试:webpack 优化(开发效率、打包策略等) webpack 优化 阅读详情

layout: post
title: webpack4打包优化
categories: webpack
tags:

webpack4打包优化

针对vue cli3.0+,webpack4.0+,nodejs10.0+ 这几个版本打包优化

一、量化、分析

speed-measure-webpack-plugin 时间分析

  • 测量出在你的构建过程中,每一个 Loader 和 Plugin 的执行时长
  • 而它的使用方法也同样简单,如下方示例代码所示,只需要在你导出 Webpack 配置时,为你的原始配置包一层 smp.wrap 就可以了,接下来执行构建,你就能在 console 面板看到如它 demo 所示的各类型的模块的执行时长

demo

在这里插入图片描述

安装

npm i speed-measure-webpack-plugin -D

使用

vue.config.js中配置

const SpeedMeasurePlugin = require('speed-measure-webpack-plugin')
const smp = new SpeedMeasurePlugin({
  outputFormat: 'human'
})
module.exports = {
  configureWebpack: smp.wrap({
    plugins: []
  })
}

webpack-bundle-analyzer 体积分析

  • 分析打包后,各个文件的大小,用于分析 bundle 的
    在这里插入图片描述

安装

npm i webpack-bundle-analyzer -D

使用

const BundleAnalyzerPlugin = require('webpack-bundle-analyzer').BundleAnalyzerPlugin;
module.exports = {
configureWebpack: {
   plugins: [
      new BundleAnalyzerPlugin({
        //  可以是`server`,`static`或`disabled`。
        //  在`server`模式下,分析器将启动HTTP服务器来显示软件包报告。
        //  在“静态”模式下,会生成带有报告的单个HTML文件。
        //  在`disabled`模式下,你可以使用这个插件来将`generateStatsFile`设置为`true`来生成Webpack Stats JSON文件。
        analyzerMode: 'server',
        //  将在“服务器”模式下使用的主机启动HTTP服务器。
        analyzerHost: '127.0.0.1',
        //  将在“服务器”模式下使用的端口启动HTTP服务器。
        analyzerPort: 8888, 
        //  路径捆绑,将在`static`模式下生成的报告文件。
        //  相对于捆绑输出目录。
        reportFilename: 'report.html',
        //  模块大小默认显示在报告中。
        //  应该是`stat`,`parsed`或者`gzip`中的一个。
        //  有关更多信息,请参见“定义”一节。
        defaultSizes: 'parsed',
        //  在默认浏览器中自动打开报告
        openAnalyzer: true,
        //  如果为true,则Webpack Stats JSON文件将在bundle输出目录中生成
        generateStatsFile: false, 
        //  如果`generateStatsFile`为`true`,将会生成Webpack Stats JSON文件的名字。
        //  相对于捆绑输出目录。
        statsFilename: 'stats.json',
        //  stats.toJson()方法的选项。
        //  例如,您可以使用`source:false`选项排除统计文件中模块的来源。
        //  在这里查看更多选项:https:  //github.com/webpack/webpack/blob/webpack-1/lib/Stats.js#L21
        statsOptions: null,
        logLevel: 'info' // 日志级别。可以是'信息','警告','错误'或'沉默'。
      })
    ]
  },
}

二、缓存

webpack缓存的插件有两个

  • DllPlugin 配置比较繁琐
  • hard-source-webpack-plugin

DllPlugin

提取固定三方库预编译,减少打包体积,加快编译速度

使用

  • 在项目根目录下新建 webpack.dll.conf.js,输入以下内容
const path = require('path')
const webpack = require('webpack')
const CleanWebpackPlugin = require('clean-webpack-plugin')

// dll文件存放的目录
const dllPath = 'public/vendor'

module.exports = {
  entry: {
    // 需要提取的库文件
    vendor: [
      'vue-router/dist/vue-router.esm.js',
      'vuex/dist/vuex.esm.js',
      'axios',
      'mint-ui',
      'echarts',
      'toastr',
      'mockjs',
      'es6-promise'
    ]
  },
  output: {
    path: path.join(__dirname, dllPath),
    filename: '[name].dll.js',
    // vendor.dll.js中暴露出的全局变量名
    // 保持与 webpack.DllPlugin 中名称一致
    library: '[name]_[hash]'
  },
  plugins: [
    // 清除之前的dll文件
    new CleanWebpackPlugin(['*.*'], {
      root: path.join(__dirname, dllPath)
    }),
    // 设置环境变量
    new webpack.DefinePlugin({
      'process.env': {
        NODE_ENV: 'production'
      }
    }),
    // manifest.json 描述动态链接库包含了哪些内容
    new webpack.DllPlugin({
      path: path.join(__dirname, dllPath, '[name]-manifest.json'),
      // 保持与 output.library 中名称一致
      name: '[name]_[hash]',
      context: process.cwd()
    })
  ]
}
  • 在 package.json 中加入如下命令,生成dll
"scripts": {
    ...
    "dll": "webpack -p --progress --config ./webpack.dll.conf.js"
}

配置完成以后运行命令

npm run dll

在这里插入图片描述

  • 为了节约编译的时间,这时间我们需要告诉 webpack 公共库文件已经编译好了,减少 webpack 对公共库的编译时间。在项目根目录下找到 vue.config.js,配置如下
const webpack = require('webpack')

module.exports = {
    configureWebpack: {
        plugins: [
          new webpack.DllReferencePlugin({
            context: process.cwd(),
            manifest: require('./public/vendor/vendor-manifest.json')
          })
        ]
    }
}

  • 经过上面的配置,公共库提取出来了,编译速度快了,但需要在index.html引用生成的 dll 文件
<script src="./vendor/vendor.dll.js"></script>
  • 不想手动引入也可以 vue.config.js 在 configureWebpack plugins 节点下,配置 add-asset-html-webpack-plugin
const path = require('path')
const webpack = require('webpack')
const AddAssetHtmlPlugin = require('add-asset-html-webpack-plugin')

module.exports = {
    ...
    configureWebpack: {
        plugins: [
          new webpack.DllReferencePlugin({
            context: process.cwd(),
            manifest: require('./public/vendor/vendor-manifest.json')
          }),
          // 将 dll 注入到 生成的 html 模板中
          new AddAssetHtmlPlugin({
            // dll文件位置
            filepath: path.resolve(__dirname, './public/vendor/*.js'),
            // dll 引用路径
            publicPath: './vendor',
            // dll最终输出的目录
            outputPath: './vendor'
          })
        ]
    }
}

打包速度

  • 打包前
    在这里插入图片描述

  • 打包后
    在这里插入图片描述

包大小(最大的包echarts被移出并预编译)

  • 打包前

在这里插入图片描述

  • 打包后
    在这里插入图片描述

  • 打包前
    在这里插入图片描述

  • 打包后
    在这里插入图片描述

hard-source-webpack-plugin

HardSourceWebpackPlugin 为模块提供中间缓存步骤。为了查看结果,您需要使用此插件运行webpack两次:第一次构建将花费正常的时间。第二次构建将显着加快(大概提升90%的构建速度)

npm i webpack-bundle-analyzer -D
const HardSourceWebpackPlugin = require('hard-source-webpack-plugin')
module.exports = {
  configureWebpack: smp.wrap({
    plugins: [
      // 为模块提供中间缓存,缓存路径是:node_modules/.cache/hard-source
      new HardSourceWebpackPlugin(),
    ]
  })
}

tips: webpack5.0会把hard-source-webpack-plugin内置成一个配置。

三、多进程多实例构建,资源并行解析

  • webpack需要处理的文件是非常多的,构建过程是一个涉及大量文件读写的过程。项目复杂起来了,文件数量变多之后,webpack构建就会特别满,而且运行在nodeJS上的webpack是单线程模型的,也就是说Webpack一个时刻只能处理一个任务,不能同时处理多个任务。

  • 文件读写和计算操作是无法避免的,那能不能让Webpack在同一时刻处理多个任务发挥多核CPU电脑的功能,以提升构建速度呢

多进程构建的方案比较知名的有以下三个

  • thread-loader (推荐使用这个)
  • HappyPack
  • parallel-webpack

thread-loader

webpack4 官方提供了一个thread loader

把这个 loader 放置在其他 loader 之前, 放置在这个 loader 之后的 loader 就会在一个单独的 worker【worker pool】 池里运行,一个worker 就是一个nodeJS 进程【node.js proces】,每个单独进程处理时间上限为600ms,各个进程的数据交换也会限制在这个时间内。

配置长这样:

npm i thread-loader -D
module.exports = {
  configureWebpack: smp.wrap({
    module: {
      rules: [
        {
          test: /\.js$/,
          include: path.resolve("src"),
          use: [{
            loader: "thread-loader",
            // loaders with equal options will share worker pools
            // 设置同样option的loaders会共享
            options: {
              // worker的数量,默认是cpu核心数
              workers: 2,

              // 一个worker并行的job数量,默认为20
              workerParallelJobs: 50,

              // 添加额外的node js 参数
              workerNodeArgs: ['--max-old-space-size=1024'],

              // 允许重新生成一个dead work pool
              // 这个过程会降低整体编译速度
              // 开发环境应该设置为false

              poolRespawn: false,

              //空闲多少秒后,干掉work 进程
              // 默认是500ms
              // 当处于监听模式下,可以设置为无限大,让worker一直存在
              poolTimeout: 2000,

              // pool 分配给workder的job数量
              // 默认是200
              // 设置的越低效率会更低,但是job分布会更均匀
              poolParallelJobs: 50,

              // name of the pool
              // can be used to create different pools with elsewise identical options
              // pool 的名字
              //
              name: "my-pool"
            }
          },
          // your expensive loader (e.g babel-loader)
        ]}
      ]
    }
  })
}

经过测试,thread-loader 对于打包速度几乎没有影响,是因为它本身的额外开销导致,建议只在极高性能消耗的场景下使用

HappyPack

将任务分解给多个子进程去并发执行,子进程处理完后再将结果发给主进程

安装

npm i happypack -D

使用

const HappyPack = require('happypack');
const os = require('os');
const happyThreadPool = HappyPack.ThreadPool({ size: os.cpus().length });

module.exports = {
  configureWebpack: smp.wrap({
    plugins: [
      new HappyPack({
        id: 'babel',
        loaders: ['babel-loader?cacheDirectory=true'],
        threadPool: happyThreadPool
      })
    ]
  }),
  chainWebpack: config => {
		const jsRule = config.module.rule('js');
    jsRule.uses.clear();
    jsRule.use('happypack/loader?id=babel')
      .loader('happypack/loader?id=babel')
      .end();
	}
}

经过测试,在我们的项目中,对 js 和 ts 文件使用 happypack 收益最大
需要注意的是,Vue-loader 不支持 happypack

四、多进程多实例并行压缩

  • 使用 parallel-uglify-plugin 插件
  • uglifyjs-webpack-plugin 开启 parallel 参数
  • terser-webpack-plugin 开启 parallel 参数 (推荐使用这个,支持 ES6 语法压缩)

uglifyjs-webpack-plugin

通过开启 cache 配置开启我们的缓存功能,也可以通过开启 parallel 开启多核编译功能

安装

npm i terser-webpack-plugin -D

使用

const UglifyJsPlugin = require('uglifyjs-webpack-plugin');

module.exports = {
  configureWebpack: smp.wrap({
    optimization: {
      minimizer: [
        new UglifyJsPlugin({
          uglifyOptions: {
            warnings: false,
            parse: {},
            // 删除console debugger 删除警告
            compress: {
              warnings: false,
              drop_console: true,//console
              drop_debugger: false,
              pure_funcs: ['console.log']//移除console
            },
            mangle: true,
            // 删除注释
            output:{
              comments:false
            },
            toplevel: false,
            nameCache: null,
            ie8: false,
            keep_fnames: false
          },
          cache: true,
          parallel: true
        })
      ]
    }
  })
}

五、其他

另外还有一些关于css打包体积的优化

抽离css

安装

npm install --save-dev mini-css-extract-plugin

使用

const MiniCssExtractPlugin = require('mini-css-extract-plugin');

module.exports = {
  plugins: [
    new MiniCssExtractPlugin({
      filename: 'css/[name].[contenthash:8].css'  // 将css文件统一放入css文件夹
    })
  ]  
}

压缩css

安装

npm install -D optimize-css-assets-webpack-plugin

使用

const OptimizeCssAssetsWebpackPlugin = require('optimize-css-assets-webpack-plugin');

module.exports = {
  optimization: {
    minimize: true,
    minimizer: [
        new OptimizeCssAssetsWebpackPlugin()
    ]
  }
}
  • 抽离css和压缩css后打包的速度

在这里插入图片描述

移除未使用的css

  • 在大型项目中,经常会有很多样式内容,在代码中根本未使用,但是会被打包,这些样式需要打包时应该移除

安装

npm i purgecss-webpack-plugin -D

使用

const PurgecssWebpackPlugin = require('purgecss-webpack-plugin');
const glob = require('glob'); // 根据路径查找文件
module.exports = {
  plugins:[
    new PurgecssWebpackPlugin({ //paths要求是绝对路径
      paths: glob.sync(`${path.join(__dirname, 'src/**/*')}`, { nodir: true })
    })
  ]
}
webpack性能优化方案(详细) 因为该插件webpack已经默认安装和集成,所以我们并不需要单独安装和直接使用该插件;只需要提供SplitChunksPlugin相关的配置信息即可;Webpack提供了SplitChunksPlugin默认的配置,我们也可以手动来修改它的配置:比如默认配置中,chunks仅仅针对于异步(async)请求,我们可以设置为initial或者all;SplitChunks自定义配置解析常用配置解析默认值是async另一个值是initial,表示对通过的代码进行处理。 阅读详情

相关推荐

webpack3升级到webpack4优化打包

项目开发至今已有2年多,随着模块的不断迭代,打包的速度逐渐变慢,现在打包大约要用37分钟,这速度堪忧… 本文主要针对打包加速的2种思路: 1、在webpack3的基础上的打包优化 用DllPlugin插件加速打包,最后打包速度大约用9分钟 用happypack+webpack-parallel-uplift-plug-in多线程打包工具,最后打包速度大约在5分种 前面2种方式结合,打包速度能优化到4分钟 DllPlugin插件的配置: 步骤一:在build文件夹下,新建dll.config.js

susan_shuna的博客 1639

多进程打包thread-loader, happyPack和多进程压缩ParallelUglifyPlugin的配置使用

happyPack和ParallelUglifyPlugin的配置使用一、happyPack: 开启多进程打包二、ParallelUglifyPlugin:多进程压缩js三、何时开启多进程打包或者压缩 happyPack和ParallelUglifyPlugin也是提高webpack打包速度的两种方式。 happyPack: 开启多进程打包 ParallelUglifyPlugin:多进程压缩js 一、happyPack: 开启多进程打包 配置使用: 二、ParallelUglifyPlugin:

祥哥的说 8123

vue-cli4打包优化(webpack优化)

项目开始时webpack配置 vue-cli3以后,我们修改webpack配置,需要自己在项目根路径下创建vue.config.js文件 配置proxy跨域 使用vue-cli开发项目,在本地开发环境中,如果遇到跨域问题,可以通过配置peoxy的方式解决跨域问题 module.exports = { devServer: { open: false, // 自动启动浏览器 host: '0.0.0.0', // localhost port: 6060, // 端口号 h

weixin_46057188的博客 2197

使用 happypack 提升 Webpack 项目构建速度

本文简单介绍了 Happypack 的简单使用,不了解的同学可以进来看一看。也许会有所帮助。 Happypack 作用 在使用 Webpack 对项目进行构建时,会对大量文件进行解析和处理。当文件数量变多之后,Webpack 构件速度就会变慢。由于运行在 Node.js 之上的 Webpack 是单线程模型的,所以 Webpack 需要处理的任务要一个一个进行操作。 而 Happypack 的作...

weixin_33751566的博客 1216

webpack4 css打包、压缩、分离、去重等优化配置详解

Webpack 4 目前版本已经到了4.27 相较于前面的版本还是有一些改动的,具体可以参考升级指南 迁移到新版本 这里只介绍 css 的 打包、压缩、分离、去重 的方法; 不懂的或者有更优的方案,欢迎评论交流 用到的插件及loader 插件 描述 备注 mini-css-extract-plugin 主要用于提取css 需要安装 optimize-css-assets-w...

低调的http:// 9506

BK7238(XH-WB3S)固件烧录实战:从AT固件选择到稳定下载全解析

本文详细解析了BK7238(XH-WB3S)模组固件烧录的全过程,从AT固件版本选择到稳定下载的实战技巧。重点介绍了烧录前的准备工作、硬件连接的正确姿势、烧录软件的实战技巧以及疑难问题排查指南,帮助开发者高效完成BK7238模组的固件烧录。

weixin_29159441的博客 251

webpack HappyPack多个进程处理loader

文章目录文章参考什么是HappyPack? 作用是什么?HappyPack的基本原理?使用案例安装依赖库webpack.config.js 配置如何使用 happypack配置说明webpack配置问题:HappyPack: plugin for the loader '1' could not be found? 文章参考 roadhog 构建优化 深入浅出的webpack构建工具—Happy...

黄彪博客 3091

CTP开发实战:如何高效处理预埋单与委托单的完整流程(附代码示例)

本文深入探讨了CTP开发中预埋单与委托单的完整处理流程,从订单生命周期理解、核心代码实现到异步事件处理与系统健壮性构建。通过详细的代码示例和状态机分析,为开发者提供了构建高可靠订单处理系统的实战指南,重点解决了状态同步、异常恢复等关键工程挑战。

weixin_29234239的博客 116

Webpack 4 以及打包优化

在上篇文章基础上https://blog.youkuaiyun.com/weixin_43554698/article/details/89914721 修改上次目录结构 需要下载的依赖package.js { "name": "webpack4-vue", "version": "1.0.0", "description": "", "main": "index.js"...

weixin_43554698的博客 1107

VisionMaster 4.2.0安装

按照顺序安装。

XuXing_java的专栏 3791

微信H5网页授权通用方案:中转页破解域名限制,适配Hash/History路由

在Web开发中,OAuth 2.0授权码模式是实现第三方登录的通用标准,其核心原理是通过授权服务器颁发临时代码,再由客户端交换访问令牌。这一机制在微信公众号H5开发中尤为重要,用于安全获取用户身份。然而,微信平台对网页授权回调域名有严格的数量限制,这成为多子域名、多环境及微前端架构下业务扩展的主要瓶颈。其技术价值在于通过设计一个统一的中转授权页,将授权逻辑与业务逻辑解耦,让所有业务页面共享一个已配置的授权入口,从而突破域名配额限制。该方案的关键在于适配不同的前端路由模式,需精准处理Hash模式与Histor

weixin_42533120的博客 318

webpack4的打包优化

https://www.jianshu.com/p/a88c98ddcf8e

Miss_hhl的博客 282

【异常】came as a complete surprise to me,IllegalArgumentException: The template string is not valid.

是Spring AI中用于生成提示词(prompt)的一个类。提示词对于与大语言模型交互至关重要,因为它们指导模型生成特定类型的响应。允许开发者创建包含占位符的模板字符串,并通过提供具体的值来填充这些占位符,从而动态地生成个性化的提示词。

奶爸的编程之路,也就一周冷个三天 748

webpack4.0打包优化策略整理小结

本文转载于:https://www.jb51.net/article/137449.htm 介绍了webpack4.0打包优化策略整理小结,分享给大家,具体如下: webapck4 新特性介绍-参考资料 当前依赖包的版本 1.优化loader配置 1.1 缩小文件匹配范围(include/exclude) 通过排除node_modules下的文件 从而缩小了loader加载搜索范围...

weixin_33721344的博客 410

优快云独家首发!万字长文,YOLOv5/v7/v8算法模型yaml文件史上最详细解析与教程!小白也能看懂!掌握了这个就掌握了魔改YOLO的核心!

🍀🍀🍀YOLOv5/v7/v8算法模型yaml文件史上最详细解析与教程,全网最强,学不会算我输!!!

Coding... 1万+

Qt5.15.2配置安卓环境

否则,将会跳转到github,你可以自行下载解压到你设置的目录中,然后Qt会自动检测到。以上所需的工具确实有些繁多,而且如果单独下载又涉及科学上网问题,版本问题十分麻烦,好在Qt Creator 4.12之后已经可以自动下载SDK工具,NDK,基础包,openssl,以及gradle等,十分省心。回到正题,无论通过在线安装的方式,安装时勾选了Android,还是编译的方式,编译时编译了Qt Android库,想要使用Qt开发安卓应用仍然需要一些其他工作,包括安装编译安卓项目需要的SDK,NDK等。

weixin_41392061的博客 979

升级优化Webpack4,使你的打包速度提升200%以上!

之前修改公司的运营系统,多年来积累下来的代码使得每次打包构建的时候时间异常漫长,非常难受,一气之下将项目的Webpack从2.x升级到了4.x,原来在Jenkins上一套需要6分钟的流程现在只需2分钟,顿时感到身心舒畅( ̄▽ ̄)/ 并且我顺便把项目划分成多入口项目,实现增量更新,这样就不用每次都打包这么多文件啦! ps:以下配置基于React,可以自行根据实际项目用到的框架和库修改 1. 配置中...

weixin_33709609的博客 3763

PMP–一、二、三模–分类–13.干系人管理

A:确认是否已制定沟通管理计划,使业务干系人认识到项目的成功之处。B:让业务干系人参加冲刺回顾会议。C:与发起人和关键干系人一起确定产品待办事项列表中的优先要务,以便交付商业利益。D:为关键干系人开展收尾调研。C。

stqer的博客 1418

webpack 4打包优化的过程(二)

先声明一下,由于自己是在项目开发过程中遇到的问题,需要随手记录一下,没有精心整理,所以可能有些分散,后期会进行统一整理,多谢大家理解 接上一篇文章的问题,这个警告是从根据官方文档(文档/配置/性能)给出的警告 performance: { hints: 'error' / 'warning' / false / true, // ‘error’: 推荐在生产环境打包使用便于及时发现体积巨大的bundle部署到生产环境; 'warning': 在开发环境使用,便于发现有警告的地方; false: 不提示任

Fired up &GoGoGo 388

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

看完这篇你一定懂 --- Webpack4 打包优化

前面的话 Webpack升级4之后,小柒踩过的很多坑,这篇文章总结Webpack4的一些新特性,以及常见的优化方式。 Webpack4 新特性 不再强制需要webpack.config.js配置文件。默认入口为./src/index.js,默认输出./dist目录,输出文件main.js Webpack不再能单独使用,4.x版本的很多命令都移动到了webpack-cli中。所以必须安装we...

小柒的前端之旅 2969

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

Php进行webpack改造,webpack的4.0打包优化如何实现

这次给大家带来webpack的4.0打包优化如何实现,实现webpack 4.0打包优化的注意事项有哪些,下面就是实战案例,一起来看一下。本文介绍了webpack4.0打包优化策略整理小结,分享给大家,具体如下:webapck4 新特性介绍-参考资料当前依赖包的版本1.优化loader配置1.1 缩小文件匹配范围(include/exclude)通过排除node_modules下的文件 从而缩小了...

weixin_31060209的博客 255

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

webpack4打包优化配置

1、对图片进行压缩和优化 image-webpack-loader可以帮助我们对图片进行压缩和优化 cnpm install image-webpack- --save-dev 复制代码 { test: /\.(png|svg|jpg|gif|jpeg|ico)$/, use: [ 'file-loader', { loade...

weixin_33834137的博客 4095

Webpack + Vue 多页面项目升级 Webpack 4 以及打包优化

0. 前言 早在 2016 年我就发布过一篇关于在多页面下使用 Webpack + Vue 的配置的文章,当时也是我在做自己一个个人项目时遇到的配置问题,想到别人也可能遇到跟我同样的问题,就把配置的思路分享出来了,传送门在这里。 因为那份配置直到现在还有人在关注,同时最近公司帮助项目升级了 Webpack 4,趁机也把之前的配置也升级了一下,而且博客荒废了这么久,都快 9102 年了,不能连年均一...

weixin_30632899的博客 177

webpack4.0打包优化策略

打包优化策略 webpack4.0打包优化策略(一) webpack4.0打包优化策略(二) webpack4.0打包优化策略(三) 提取公共代码与第三方代码 将多个入口重复加载的公共资源提取出来 相同的资源被重复的加载,浪费用户的流量和服务器的成本; 每个页面需要加载的资源太大,导致网页首屏加载缓慢,影响用户体验。 如果能把公共代码抽离成单独文件进行加载能进行优化,可以减少网络传...

大灰狼的小绵羊哥哥的博客 844
上一篇: 封装wx.request请求
下一篇: vscode eslint格式化配置问题
cjvalue
博客等级 码龄8年 4粉丝 16原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值