我正在搜索react-0.13.3.js
,有一件事我无法解决。在源头开始时,有一堆dereq()
次呼叫。
'use strict';
var EventPluginUtils = _dereq_(19);
var ReactChildren = _dereq_(32);
var ReactComponent = _dereq_(34);
var ReactClass = _dereq_(33);
但我没有看到该功能的实现。它做什么以及如何工作?最重要的是,它在哪里宣布?
我还在等待更全面的接受。我的主要问题是 _dereq_
函数的和 的工作方式。
答案 0 :(得分:7)
这可能derequire与browserify(或其他捆绑包?)模块ID结合使用。这是一种在输出包中重命名require
以避免冲突的方法。
请在此处阅读以获取更多信息:https://github.com/calvinmetcalf/derequire/issues/25
基本思想是不同的模块加载器以不同的方式处理require
。 " Derequire"是一种通过不同的关键字将您的需求绑定到您的上下文的策略。
答案 1 :(得分:1)
它与amd module loader有关。 _dereq_
是第一个参数,因此它是require
函数。
答案 2 :(得分:1)
您需要在源代码中展开line 4
;它require
。
1: [function(_dereq_, module, exports) {
答案 3 :(得分:0)
我偶然发现了这个问题,经过一些研究,我认为使用此功能的主要目的是在浏览器上构建类似npm的功能,并处理导入不同功能的模块依赖。
如果你直接走到IIFE的末端(约20k~行)
你会看到类似于下面的结构
(function e(t, n, r) {
function s(o, u) {
...
}
...
}) ({... //blah blah blah, all the funcitons
}, {}, [1])
the variable t is all the functions modules
the variable n is an empty array
the variable r is 1 here
所以require模块以正确的顺序调用,并且是从索引1构建的,从那里开始,它非常不言自明,所有依赖关系需要在一开始就从数组中正确编程
1: [function (_dereq_, module, exports) {....
}, {"106": 106, "23": 23, "35": 35, "45": 45, "63": 63}],