基础知识,加载器
//加载器Loader, 里面有一个自执行的函数,感叹号是分隔符(分号也是)
//这样写是把调试器与功能代码写到了一起。可以解耦,将功能代码另写一个文件
!function (e) {
var t = {};
function n(r) {
if (r[r])
return t[r].exports;
var o = t[r] = {
i: r,
l: !1,
exports: {}
};
return e[r].call(o.exports, o, o.exports, n),
o.l = !0,
o.exports
}
n(0)
}([
function () {
console.log("foo")
},
function () {
console.log("bar")
}
])
!function (e) {
var t = {};
function n(r) {
if (r[r])
return t[r].exports;
var o = t[r] = {
i: r,
l: !1,
exports: {}
};
return e[r].call(o.exports, o, o.exports, n),
o.l = !0,
o.exports
}
n("1002")
}({
"1001":
function () {
console.log("foo")
},
"1002":
function () {
console.log("bar")
}
}
)
如何找到加载器的位置呢?
思路一:
要找n, 先找n.n(),它们应该在同一个域内的
注意, S1:从o开始找n.n, 而不是o(), 别搞错,然后在console里定位;如下图
S2:
接着往上找,就找到了
注意一下下图:鼠标悬浮在o上和选中o()再悬浮,得到的函数位置是不一样的
第二种办法:如图:
如果在当前的位置打上断点,再点debug调试按钮时发现,断点不起作用。这是因为这个变量是文档在加载的时候生成的,所以按F5就有效了,就可以了。
开整代码
-
在上图中合上第一行的位置,发现:
说明这是一个多文件的格式
小工具
代码中注意的问题
- 注意补环境
self = global - 将内部的t导出来
self.t = t - function(){}前加感叹号,前一句加上分号,分隔开。