webpack打包测试_webpack打包后的文件简单分析

webpack

Webpack 是一个前端资源加载/打包工具。它将根据模块的依赖关系进行静态分析,然后将这些模块按照指定的规则生成对应的静态资源。

d79f9a3de26b11ead20629f3e9d7e6bc.png

Webpack 可以将多种静态资源 js、css、less 转换成一个静态文件,减少了页面的请求。

本文主要是分析webpack打包后的文件

新建打包

1. 新建测试模块

新建两个 js , 导出简单的函数

# add.js

const add = (a, b) => a + b;

# sub.js

const sub = (a, b) => a - b;

复制代码

新建主入口方法 index.js,分别引入对应模块方法

# index.js

const { add } = require('./add');

const { sub } = require('./sub');

console.log(add(99, 1));

console.log(sub(99, 1));

复制代码

新建webpack配置

# webpack.config.js

module.exports = {

mode: 'development',

// mode: 'production',

devtool: 'source-map',

entry: resolve('./index.js'),

output: {

path: resolve('./dist'),

}

};

复制代码

执行打包, npm run build

40aac2e2ca2e09ef51bf0c7040c6a97c.png

执行打包后的js,运行正常

1fbc2cce878ddfc9f23c36d1acdcec1d.png

打包后的文件分析

瞄一眼打包后的文件: main.js

ce29bf28c59aaf08acd8702302d0b164.png

从上到下扫一遍后,可以发现其是一个匿名的自执行函数,函数内部定义了一个 webpack_modules 对象,一个闭包:webpack_require 函数,一个 webpack_module_cache 对象,看名字就知道这是一个缓存对象,下面又是一个匿名的自执行函数

展开下面的匿名自执行函数:

3879d08de5dd68f6916ae075639057fc.png

其实就是入口 index.js 里的代码块,对导出模块部分做了相应的处理,其内部调用 webpack_require 函数实现了模块的导入功能

展开 webpack_require 函数:

977e02f363a13b1fc2f78c12014d01f5.png

内部也比较简单,使用了 webpack_module_cache 缓存模块,第一次导入模块时 在 webpack_modules 根据模块id(如 './add.js"')导入相应的模块并写入缓存

展开 webpack_modules :

67519df61ef59ff47a45df602e27abd4.png

其实就是集成了所有模块的一个集合,至此整个模块流程分析完了

END

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值