React里面的`_dereq _()`是什么?

时间:2015-06-04 17:36:35

标签: javascript reactjs

我正在搜索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_函数的 的工作方式。

4 个答案:

答案 0 :(得分:7)

这可能derequirebrowserify(或其他捆绑包?)模块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}],