Что такое `_dereq _()` inside React?
Я просматриваю react-0.13.3.js
, и одна вещь я не могу решить. В самом начале источника существует цепочка из dereq()
.
'use strict';
var EventPluginUtils = _dereq_(19);
var ReactChildren = _dereq_(32);
var ReactComponent = _dereq_(34);
var ReactClass = _dereq_(33);
Но нигде не вижу реализации для этой функции. Что он делает и как это работает? И самое главное, где это объявлено?
Update
Я все еще жду ответа на более полный ответ. Мой главный вопрос - что делает функция _dereq_
и как она работает.
Ответы
Ответ 1
Скорее всего, derequire в сочетании с browserify (или других связующих?) модулей. Это способ переименовать require
в ваш выходной пакет, чтобы избежать столкновений.
Читайте здесь для получения дополнительной информации: https://github.com/calvinmetcalf/derequire/issues/25
Основная идея заключается в том, что разные загрузчики модулей обрабатывают require
по-разному. "Derequire" - это стратегия привязки вашего требования к вашему контексту с помощью другого ключевого слова.
Ответ 2
Это связано с amd загрузчиком модулей. _dereq_
- первый аргумент, поэтому функция require
.
Ответ 3
Вам нужно развернуть line 4
в источнике; это require
.
1: [function(_dereq_, module, exports) {
Ответ 4
Я наткнулся на этот вопрос, после некоторых исследований я считаю, что основная цель этой функции - создать аналогичную функцию 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
поэтому требуемый модуль вызывается в правильном порядке и построен из индекса 1, оттуда он довольно понятен, все зависимости должны быть правильно запрограммированы из массива с самого начала
1: [function (_dereq_, module, exports) {....
}, {"106": 106, "23": 23, "35": 35, "45": 45, "63": 63}],