Через некоторое время я наконец получил подсказку. Это примерно:
Кода -копия выглядит следующим образом:
Создайте анонимную функцию, разработайте окно параметра и передайте ее в окно.
Цель этого процесса -
Кода -копия выглядит следующим образом:
Сделайте свой собственный код, не загрязненный другими кодами, и в то же время он не может загрязнять другие коды.
jQuery Encapsulation
Таким образом, я нашел более раннюю версию jQuery, а код инкапсуляции в номере версии - 1.7.1 - примерно следующее
Кода -копия выглядит следующим образом:
(функция (окно, неопределенное) {
var jquery = (function () {console.log ('hello');});
window.jquery = window. $ = jQuery;
if (typeof define === "function" && define.amd && define.amd.jquery) {
define ("jQuery", [], function () {return jQuery;});
}
}) (окно);
Среди них
Кода -копия выглядит следующим образом:
console.log ('hello');
Он используется для проверки, работает ли он, как упоминалось в начале, поэтому мы можем позвонить в jQuery в окне
Кода -копия выглядит следующим образом:
окно. $
Или
Кода -копия выглядит следующим образом:
window.jquery
Таким образом, мы можем создать аналогичный пакет
Кода -копия выглядит следующим образом:
(функция (окно, неопределенное) {
var ph = function () {
}
})(окно)
По сравнению с вышеизложенным, отсутствуют только два шага
1. Определите символы и глобальные вызовы jQuery
2. Асинхронная поддержка
Поэтому я нашел более раннюю инкапсуляцию jQuery, которая была примерно такой же с точки зрения метода, за исключением. Полем
Кода -копия выглядит следующим образом:
if (typeof window.jquery == "undefined") {
var jQuery = function () {};
if (typeof $! = "Не определено")
jQuery ._ $ = $;
var $ = jQuery;
};
Это так волшебно, что мы не можем переписать предыдущий шаг jQuery. Поэтому мне пришлось увидеть, как выглядит последняя инкапсуляция jQuery. Поэтому я открыл 2.1.1 и обнаружил, что, за исключением добавления большого количества функций, мои идеи в основном не изменяются.
Кода -копия выглядит следующим образом:
(Функция (Global, Factory) {
if (typeof module === "Object" && typeof Module.exports === "Object") {
module.exports = global.document?
фабрика (глобальная, правда):
функция (w) {
if (! w.document) {
Выбросить новую ошибку («jQuery требует окна с документом»);
}
вернуть фабрику (w);
};
} еще {
фабрика (глобальная);
}
} (TypeOf Window! == "Undefined"? Window: this, function (window, nolobal) {
var jQuery = function () {
console.log ('jquery');
};
if (typeof define === "function" && define.amd) {
определить ("jQuery", [], function () {
вернуть jQuery;
});
};
strundefined = typeof undefined;
if (typeof nolobal === strundefined) {
window.jquery = window. $ = jQuery;
};
вернуть jQuery;
}));
При использовании браузера
Кода -копия выглядит следующим образом:
TypeOf Module = "Undefined"
Таким образом, вышеуказанная ситуация оценивается при использовании node.js и т. Д., что также указывает на то, что jQuery становится раздутым.
Пакет из магистрали
Откройте основу и проверьте это
Кода -копия выглядит следующим образом:
(функция (корень, фабрика) {
if (typeof define === 'function' && define.amd) {
Определить (['underscore', 'jquery', 'exports'], function (_, $, exports) {
root.backbone = factory (root, exports, _, $);
});
} else if (typeof exports! == 'undefined') {
var _ = require ('Underscore');
фабрика (корень, экспорт, _);
} еще {
root.backbone = factory (root, {}, root._, (root.jquery || root.zepto || root.ender || root. $));
}
} (this, function (root, backbone, _, $) {
Магистраль. $ = $;
вернуть магистраль;
}));
В дополнение к асинхронной поддержке, она также отражает ее зависимость от jQuery и подчеркивания.
Кода -копия выглядит следующим образом:
Определить (['underscore', 'jquery', 'exports'], function (_, $, exports) {
root.backbone = factory (root, exports, _, $);
});
Это указывает на то, что основная цепь и национально поддерживается требованиями.
Подчеркнутый пакет
Итак, я снова посмотрел на подчеркивание и обнаружил, что эта библиотека заняла другой символ_
Кода -копия выглядит следующим образом:
(function () {
var root = это;
var _ = function (obj) {
if (obj ancessionof _) вернуть obj;
if (! (Этот экземпляр _)) вернуть новый _ (obj);
this._Wrapped = obj;
};
if (typeof exports! == 'undefined') {
if (typeof module! == 'undefined' && module.exports) {
exports = module.exports = _;
}
exports._ = _;
} еще {
root._ = _;
}
if (typeof define === 'function' && define.amd) {
Define ('Underscore', [], function () {
возвращаться _;
});
}
} .call (this));
В целом, это почти анонимные функции, за исключением того, что метод Call () используется в конце.