Я пытаюсь понять, как настраивается jQuery.Модуль библиотеки библиотеки JQuery
С самого начала jQuery автоматически вызывает функцию, которая экспортирует модуль.
Как работает настройка?
Вот некоторые более подробные подвопросы, которые могли бы ответить на более общий вопрос:
- Что такое использование рекурсивного вызова
function(w)
вmodule.exports
? - Что такое переменная
noGlobal
? - Где именно находится
factory
и в каком его виде? - Почему аргумент
factory
вызывается с одним аргументом и с двумя? - Что должен содержать аргумент
global
? (Хотелось бы, чтобы было типа, как и в C++ ...)
(function(global, factory) {
if (typeof module === "object" && typeof module.exports === "object") {
// For CommonJS and CommonJS-like environments where a proper `window`
// is present, execute the factory and get jQuery.
// For environments that do not have a `window` with a `document`
// (such as Node.js), expose a factory as module.exports.
// This accentuates the need for the creation of a real `window`.
// e.g. var jQuery = require("jquery")(window);
// See ticket #14549 for more info.
module.exports = global.document ?
factory(global, true) :
function(w) {
if (!w.document) {
throw new Error("jQuery requires a window with a document");
}
return factory(w);
};
} else {
factory(global);
}
// Pass this if window is not defined yet
}(typeof window !== "undefined" ? window : this, function(window, noGlobal) {
еще один вопрос: откуда взялся аргумент w? – Beginner
@Beginner Когда глобальный объект не содержит 'document', он возвращает функцию, которая принимает один аргумент' w'. Этот объект будет «оконным» объектом с «документом», который может быть создан с помощью чего-то вроде jsdom. –
Означает ли это, что w - глобальная переменная, доступная в случае отсутствия документа? – Beginner