网站推广包年,wordpress速度慢图片,西安网站建设培训中心,wordpress中文摘要文章目录 webpack 中 chunkHash 和 contentHash 的区别loader和plugin的区别#xff1f;webpack 处理 image 是用哪个 loader#xff0c;限制 image 大小的是...#xff1b;webpack 如何优化打包速度 webpack 中 chunkHash 和 contentHash 的区别 主要从四方面来讲一下区别webpack 处理 image 是用哪个 loader限制 image 大小的是...webpack 如何优化打包速度 webpack 中 chunkHash 和 contentHash 的区别 主要从四方面来讲一下区别1、hash的生成依据2、影响范围3、用途4、限制。以及我们如何使用
chunkHash
生成依据基于每个 chunk 的内容生成哈希值。影响范围同一个 chunk 内的所有模块发生变化时chunkhash 会重新生成。用途适合用来区分不同的打包文件比如入口文件main.js和依赖模块文件vendor.js。限制如果 chunk 中的非代码部分比如引入的样式或其他模块变化了chunkhash 也会变化不够精细。
output: {filename: [name].[chunkhash].js,
},场景问题 假设你修改了项目中的 CSS 文件但由于 CSS 和 JS 打包在同一个 chunk 中chunkhash 会因为 CSS 的变化而导致 JS 文件的哈希值也发生变化这可能会导致缓存失效。
contenthash
生成依据基于具体文件内容生成哈希值。影响范围仅在内容本身发生变化时contenthash 才会重新生成。用途适用于精细化缓存管理特别是 CSS 和 JS 文件分离的场景。优势修改 CSS 不会影响 JS 文件的哈希值反之亦然。
示例
output: {filename: [name].[contenthash].js,
},场景优点 假设你对 CSS 文件进行了修改只有 CSS 文件的哈希值会更新而 JS 文件的哈希值不会变动这样用户浏览器可以继续使用缓存的 JS 文件。
如何选择
开发模式一般直接使用hash全局简单哈希值生成快生产模式 使用chunkhash 来管理js文件缓存使用contenthash来管理css和其他静态文件的缓存借助 MiniCssExtractPlugin将css抽离并使用contenthash防止js和css哈希混淆
Webpack 配置参考
const MiniCssExtractPlugin require(mini-css-extract-plugin);module.exports {output: {filename: [name].[chunkhash].js, // JS 使用 chunkhash},plugins: [new MiniCssExtractPlugin({filename: [name].[contenthash].css, // CSS 使用 contenthash}),],
};
loader和plugin的区别
webpack 处理 image 是用哪个 loader限制 image 大小的是…
在 Webpack 中处理 图片image 通常使用 url-loader 或 file-loader结合 asset 模式Webpack 5 引入的新特性更为常见。
图片处理 Loader
url-loader 用于将图片转为 Base64 编码的 Data URL 形式嵌入到 JavaScript 文件中。优点小图片可内嵌减少 HTTP 请求。限制较大的图片内嵌会增加打包文件体积。 file-loader 用于将图片作为 文件输出并返回对应的路径。优点适合较大的图片文件不会嵌入到 JS 中。限制需要额外的 HTTP 请求。
Webpack 5 的 asset 模式
取代了传统的 url-loader 和 file-loader统一处理静态资源。提供两种自动选择方式 asset/resource类似 file-loader将文件输出为单独的文件。asset/inline类似 url-loader将文件内嵌为 Base64。asset根据文件大小自动选择 resource 或 inline默认阈值 8 KB。asset/source将文件内容作为字符串导入。
限制图片大小的配置 url-loader 示例 通过 limit 参数限制图片大小超出限制的会作为文件处理否则转为 Base64。
module.exports {module: {rules: [{test: /\.(png|jpg|jpeg|gif|svg)$/i, // 处理图片文件use: [{loader: url-loader,options: {limit: 8192, // 限制大小为 8 KB小于此值会转为 Base64name: [name].[hash:8].[ext], // 输出文件名outputPath: images, // 输出到 images 文件夹},},],},],},
};Webpack 5 的 asset 模式 设置 asset 模式时限制图片大小的方式是通过 parser.dataUrlCondition.maxSize 指定阈值单位字节默认 8 KB。
module.exports {module: {rules: [{test: /\.(png|jpg|jpeg|gif|svg)$/i, // 处理图片type: asset, // 根据大小自动选择 inline 或 resourceparser: {dataUrlCondition: {maxSize: 8192, // 超过 8 KB 则单独打包成文件},},generator: {filename: images/[name].[hash:8][ext], // 输出路径和文件名},},],},
};推荐使用 在 Webpack 5 中建议直接使用 asset 模式这样无需额外安装 url-loader 或 file-loader而且配置更加简单灵活。 如果你有特殊的需求比如区分非常小或非常大的文件处理方式可以手动指定 type 为 asset/inline 或 asset/resource。
webpack 如何优化打包速度
减少文件搜索范围
优化 resolve 配置 限制模块解析路径减少解析时间。
resolve: {extensions: [.js, .jsx, .json], // 文件后缀范围alias: { : path.resolve(__dirname, src) }, // 路径别名modules: [path.resolve(node_modules)], // 仅在指定目录搜索模块
}指定 include 和 exclude 在 loader 中明确指定需要处理的范围。
module: {rules: [{test: /\.js$/,loader: babel-loader,include: path.resolve(__dirname, src),exclude: /node_modules/,},],
},缓存机制 开启持久化缓存 Webpack 5 原生支持持久化缓存能显著提升构建速度。
cache: {type: filesystem, // 使用文件缓存
},Babel-loader 缓存 配置 cacheDirectory 将 Babel 编译结果缓存到文件系统。
module: {rules: [{test: /\.js$/,loader: babel-loader,options: {cacheDirectory: true,},},],
},多进程/多实例打包
thread-loader 开启多线程处理适合较重的 loader。
module: {rules: [{test: /\.js$/,use: [thread-loader, babel-loader],},],
},压缩优化 TerserPlugin 配置并行压缩默认在生产模式下启用。
optimization: {minimize: true,minimizer: [new TerserPlugin({parallel: true, // 多线程压缩}),],
},
减少文件体积
按需加载 通过动态 import 实现代码分割减少初始加载文件的体积。Tree Shaking 移除无用代码确保使用 ES Module。
复制代码
optimization: {usedExports: true, // 标记未使用的导出
},开发模式下的优化 使用 source-map 的更快模式 如 eval-source-map 或 cheap-module-source-map。
devtool: cheap-module-source-map,使用 webpack-dev-server 提升本地开发效率
devServer: {hot: true, // 热模块替换
},减少构建体积 使用外部依赖 (externals) 将第三方库从打包中排除通过 CDN 引入。
externals: {react: React,react-dom: ReactDOM,
},减少依赖包 删除无用的依赖。 使用体积更小的包如 lodash-es 替代 lodash。
分析和监控 使用打包分析工具 如 webpack-bundle-analyzer找到体积较大的模块优化。
const BundleAnalyzerPlugin require(webpack-bundle-analyzer).BundleAnalyzerPlugin;
plugins: [new BundleAnalyzerPlugin(),
]
文章转载自: http://www.morning.wyfpc.cn.gov.cn.wyfpc.cn http://www.morning.lflsq.cn.gov.cn.lflsq.cn http://www.morning.tmbfz.cn.gov.cn.tmbfz.cn http://www.morning.ltqtp.cn.gov.cn.ltqtp.cn http://www.morning.qlsbz.cn.gov.cn.qlsbz.cn http://www.morning.pgzgy.cn.gov.cn.pgzgy.cn http://www.morning.sypby.cn.gov.cn.sypby.cn http://www.morning.plzgt.cn.gov.cn.plzgt.cn http://www.morning.qiyelm.com.gov.cn.qiyelm.com http://www.morning.dmthy.cn.gov.cn.dmthy.cn http://www.morning.nlysd.cn.gov.cn.nlysd.cn http://www.morning.ksjnl.cn.gov.cn.ksjnl.cn http://www.morning.nlcw.cn.gov.cn.nlcw.cn http://www.morning.wjjsg.cn.gov.cn.wjjsg.cn http://www.morning.jfjfk.cn.gov.cn.jfjfk.cn http://www.morning.fxpyt.cn.gov.cn.fxpyt.cn http://www.morning.dnls.cn.gov.cn.dnls.cn http://www.morning.gjqnn.cn.gov.cn.gjqnn.cn http://www.morning.lywys.cn.gov.cn.lywys.cn http://www.morning.kqhlm.cn.gov.cn.kqhlm.cn http://www.morning.mnccq.cn.gov.cn.mnccq.cn http://www.morning.lbzgt.cn.gov.cn.lbzgt.cn http://www.morning.pndhh.cn.gov.cn.pndhh.cn http://www.morning.kpwcx.cn.gov.cn.kpwcx.cn http://www.morning.pcshb.cn.gov.cn.pcshb.cn http://www.morning.wmfmj.cn.gov.cn.wmfmj.cn http://www.morning.xqmd.cn.gov.cn.xqmd.cn http://www.morning.hfxks.cn.gov.cn.hfxks.cn http://www.morning.xhhqd.cn.gov.cn.xhhqd.cn http://www.morning.qyhcm.cn.gov.cn.qyhcm.cn http://www.morning.yfzld.cn.gov.cn.yfzld.cn http://www.morning.gmrxh.cn.gov.cn.gmrxh.cn http://www.morning.caswellintl.com.gov.cn.caswellintl.com http://www.morning.rjrh.cn.gov.cn.rjrh.cn http://www.morning.ktskc.cn.gov.cn.ktskc.cn http://www.morning.yqyhr.cn.gov.cn.yqyhr.cn http://www.morning.qzqfq.cn.gov.cn.qzqfq.cn http://www.morning.zcnwg.cn.gov.cn.zcnwg.cn http://www.morning.jfjbl.cn.gov.cn.jfjbl.cn http://www.morning.kcypc.cn.gov.cn.kcypc.cn http://www.morning.dygqq.cn.gov.cn.dygqq.cn http://www.morning.pnfwd.cn.gov.cn.pnfwd.cn http://www.morning.xlmgq.cn.gov.cn.xlmgq.cn http://www.morning.mnnxt.cn.gov.cn.mnnxt.cn http://www.morning.qsy38.cn.gov.cn.qsy38.cn http://www.morning.xbyyd.cn.gov.cn.xbyyd.cn http://www.morning.jwfqq.cn.gov.cn.jwfqq.cn http://www.morning.qjlnh.cn.gov.cn.qjlnh.cn http://www.morning.lgznc.cn.gov.cn.lgznc.cn http://www.morning.sfzwm.cn.gov.cn.sfzwm.cn http://www.morning.rtlrz.cn.gov.cn.rtlrz.cn http://www.morning.wkhfg.cn.gov.cn.wkhfg.cn http://www.morning.pxbky.cn.gov.cn.pxbky.cn http://www.morning.haolipu.com.gov.cn.haolipu.com http://www.morning.byrlg.cn.gov.cn.byrlg.cn http://www.morning.jjhrj.cn.gov.cn.jjhrj.cn http://www.morning.jpkhn.cn.gov.cn.jpkhn.cn http://www.morning.hmhdn.cn.gov.cn.hmhdn.cn http://www.morning.tgqzp.cn.gov.cn.tgqzp.cn http://www.morning.lzbut.cn.gov.cn.lzbut.cn http://www.morning.jfwrf.cn.gov.cn.jfwrf.cn http://www.morning.rhjhy.cn.gov.cn.rhjhy.cn http://www.morning.frllr.cn.gov.cn.frllr.cn http://www.morning.hbfqm.cn.gov.cn.hbfqm.cn http://www.morning.clpkp.cn.gov.cn.clpkp.cn http://www.morning.gkmwk.cn.gov.cn.gkmwk.cn http://www.morning.ntzbr.cn.gov.cn.ntzbr.cn http://www.morning.w58hje.cn.gov.cn.w58hje.cn http://www.morning.fjscr.cn.gov.cn.fjscr.cn http://www.morning.mdgpp.cn.gov.cn.mdgpp.cn http://www.morning.jwmws.cn.gov.cn.jwmws.cn http://www.morning.pmbcr.cn.gov.cn.pmbcr.cn http://www.morning.rmqlf.cn.gov.cn.rmqlf.cn http://www.morning.fdmfn.cn.gov.cn.fdmfn.cn http://www.morning.nrlsg.cn.gov.cn.nrlsg.cn http://www.morning.zgpgl.cn.gov.cn.zgpgl.cn http://www.morning.qmsbr.cn.gov.cn.qmsbr.cn http://www.morning.fwmln.cn.gov.cn.fwmln.cn http://www.morning.dpsgq.cn.gov.cn.dpsgq.cn http://www.morning.rczrq.cn.gov.cn.rczrq.cn