webpack工程化——缓存(用增量更新代替全量更新)

1.输出文件的文件名

使用substitution(可替换模板字符串)的方式

output: {
	filename: "[name].[contenthash].js",
	...
},

2.提取引导模板

如果要验证这一块的功能,现将./src/index.js文件中异步import的方法注释,换上第一章在的代码

// async function getComponent() {
//   const element = document.createElement("div");
//   const { default: _ } = await import("lodash");
//   element.innerHTML = _.join(["Hello", "webpack"], " ");
//   return element;
// }

// getComponent().then((component) => {
//   document.body.appendChild(component);
// });

import _ from "lodash";

function component() {
  const element = document.createElement("div");

  element.innerHTML = _.join(["Hello", "webpack"], " ");

  return element;
}

document.body.appendChild(component());

执行npm run build
在这里插入图片描述
发现入口bundle体积很大!

接下来修改webpack.config.js文件,将node_modules中依赖部分lodash单独分至一个bundle,再把main中的lodash提取出来

module.exports = {
  ...
  optimization: {
    runtimeChunk: "single",
    splitChunks: {
      cacheGroups: {
        vendor: {
          test: /[\\/]node_modules[\\/]/,
          name: "vendors",
          chunks: "all",
        },
      },
    },
  },
};

执行npm run build
在这里插入图片描述
已经成功地提取了依赖部分

3.模块标识符

查看修改index中的代码是否影响到依赖

第一步,增加一个文件到./src下
在这里插入图片描述
./src/print.js文件内容为

export default function print(text) {
  console.log(text);
};

修改./src/index.js内容为

import _ from "lodash";
import Print from "./print.js"; // new

function component() {
  const element = document.createElement("div");

  element.innerHTML = _.join(["Hello", "webpack"], " ");

  element.onclick = Print.bind(null, "Hello webpack!"); // new

  return element;
}

document.body.appendChild(component());

执行npm run build

不用moduleIds修改index前
在这里插入图片描述
不用moduleIds修改index后
在这里插入图片描述
使用moduleIds修改前
在这里插入图片描述
使用moduleIds修改后
在这里插入图片描述

这里发现没有官网所出现的情况,即使没有使用moduleIds: 'deterministic',vendors的hash值并没有变化。(猜测可能已经整合在webpack中)

为了安全一般加上这个属性

optimization: {
	moduleIds: "deterministic",
	...
},
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值