基本概念
完整的手写webpack原理请看
大家一键三连后就可以观看了
如何实现模块打包
A模块 a.js
// a.js
const time = Date.now()
module.exports = 'A:' + time
入口index.js
// index.js
const a = require("./a");
console.log(a);
运行webpack打包
npx webpack
- 整体使用自运行函数 - 任何变量不污染全局
- 变量 o 为模块集合
var o = {
// 原来的a.js
85: (o) => {
const r = Date.now();
o.exports = "A:" + r;
},
},
-
function t 为exports、require模拟函数
r = {}; // 模拟exports对象 function t(e) { // 模拟require函数 var n = r[e]; if (void 0 !== n) return n.exports; var s = (r[e] = { exports: {} }); return o[e](s, s.exports, t), s.exports; } -
入口为自执行函数 引用o 、t变量形成闭包
(() => { const o = t(85); console.log(o); })();
- 由于function t 是变量提升的所以 require函数也可以在子模块里调用 - 这个大家可以自己实验一下。
面试攻略
- 无
点评
- 闭包处处都有,但是能说出经典应用又是一个难题。说Helloworld和背题没啥区别。
365天打卡记录
🔥 创作不易、大家帮然叔 B栈 一键三连
- [如何利用闭包完成类库封装] 📺 Billbill视频 📚 掘金文稿 🐱 Github
- [谈谈闭包与即时函数的应用] 📺 Billbill视频 📚 掘金文稿 🐱 Github
- [分析一下箭头语法为什么不能当做构造函数] 📺 Billbill视频 📚 掘金文稿 🐱 Github
- [闭包与科里化、偏应用函数的关系] 📺 Billbill视频 📚 掘金文稿 🐱 Github
- [如何用闭包制造惰性函数?] 📺 Billbill视频 📚 掘金文稿 🐱 Github
- [什么是闭包?如何产生闭包] 📺 Billbill视频 📚 掘金文稿 🐱 Github
- [new 一个构造函数,如果函数返回
return {}、return null,return 1,return true会发生什么情况?] 📺 Billbill视频 📚 掘金文稿 🐱 Github - [new 一个函数发生了什么?] 📺 Billbill视频 📚 掘金文稿 🐱 Github
- [判断数据类型的方式有哪些?] 📺 Billbill视频 📚 掘金文稿 🐱 Github
- [Number() 的存储空间是多大?如果后台发送了一个超过最大限制的数字怎么办?] 📺 Billbill视频 📚 掘金文稿 🐱 Github
- [0.1 + 0.2 === 0.3 嘛?为什么?怎么解决?] 📺 Billbill视频 📚 掘金文稿 🐱 Github
- [JS 整数是怎么表示的?] 📺 Billbill视频 📚 掘金文稿 [ 🐱 Github ](