Después de estar confundido por un tiempo, finalmente obtuve una pista. Es más o menos:
La copia del código es la siguiente:
Cree una función anónima de autosuficiencia, diseñe la ventana de parámetros y pase en el objeto de la ventana.
El propósito de este proceso es,
La copia del código es la siguiente:
Haga que su propio código no esté contaminado por otros códigos, y al mismo tiempo, no puede contaminar otros códigos.
encapsulación de jQuery
Así que encontré una versión anterior de jQuery, y el código de encapsulación en el número de versión es 1.7.1 es más o menos lo siguiente
La copia del código es la siguiente:
(función (ventana, indefinida) {
var jQuery = (function () {console.log ('hello');});
Window.jquery = Window. $ = jQuery;
if (typeof define === "function" && define.amd && define.amd.jquery) {
Define ("jQuery", [], function () {return jQuery;});
}
})( ventana );
Entre ellos
La copia del código es la siguiente:
console.log ('hola');
Se usa para verificar si funciona como se menciona al principio, por lo que podemos llamar a jQuery en la ventana
La copia del código es la siguiente:
Ventana. $
O
La copia del código es la siguiente:
ventana.jquery
Para que podamos crear un paquete similar
La copia del código es la siguiente:
(función (ventana, indefinida) {
var ph = function () {
}
})(ventana)
En comparación con lo anterior, solo faltan dos pasos
1. Defina los símbolos y las llamadas globales de jQuery
2. Soporte asincrónico
Así que encontré la encapsulación JQuery anterior, que era aproximadamente la misma en términos de método, excepto. .
La copia del código es la siguiente:
if (typeof window.jquery == "indefinido") {
var jQuery = function () {};
if (typeof $! = "indefinido")
jQuery ._ $ = $;
var $ = jQuery;
};
Es tan mágico que no podemos reescribir el paso anterior jQuery. Así que tuve que ver cómo se ve la última encapsulación de jQuery. Así que abrí 2.1.1 y descubrí que, excepto por agregar muchas funciones, mis ideas básicamente no cambian.
La copia del código es la siguiente:
(función (global, fábrica) {
if (typeof module === "objeto" && typeof módulo.exports === "objeto") {
módulo.exports = global.document?
Factory (global, verdadero):
función (w) {
if (! w.document) {
arrojar un nuevo error ("jQuery requiere una ventana con un documento");
}
Return Factory (W);
};
} demás {
fábrica (global);
}
} (ventana de typeof! == "Undefined"? Ventana: esta, función (ventana, noglobal) {
var jquery = function () {
console.log ('jQuery');
};
if (typeof define === "function" && define.amd) {
Define ("jQuery", [], function () {
regresar jQuery;
});
};
Strundefined = typeOf indefinido;
if (typeof noglobal === strundefined) {
Window.jquery = Window. $ = jQuery;
};
regresar jQuery;
}));
Al usar un navegador
La copia del código es la siguiente:
typeoF módulo = "Undefinado"
Por lo tanto, la situación anterior se juzga cuando se usa Node.js, etc., lo que también indica que JQuery se está hinchando.
Paquete de columna vertebral
Abra la columna vertebral y échale un vistazo
La copia del código es la siguiente:
(función (root, fábrica) {
if (typeof define === 'function' && define.amd) {
Define (['Subscore', 'jQuery', 'exportaciones'], función (_, $, exportaciones) {
root.backbone = fábrica (root, exportaciones, _, $);
});
} else if (typeof exports! == 'indefinido') {
var _ = requirir ('subterráneo');
fábrica (raíz, exportaciones, _);
} demás {
root.backbone = factory (root, {}, root._, (root.jquery || root.zepto || root.ender || root. $));
}
} (esta, función (root, backbone, _, $) {
Backbone. $ = $;
retorno de la columna vertebral;
}));
Además del soporte asincrónico, también refleja su dependencia de jQuery y subrayado.
La copia del código es la siguiente:
Define (['Subscore', 'jQuery', 'exportaciones'], función (_, $, exportaciones) {
root.backbone = fábrica (root, exportaciones, _, $);
});
Indica que la columna vertebral es compatible de forma nativa por necesidades.
Paquete subrayado
Entonces, volví a mirar subrayado y descubrí que esta biblioteca ocupaba otro símbolo_
La copia del código es la siguiente:
(función() {
var root = this;
var _ = function (obj) {
if (obj instancia de _) return obj;
if (! (esta instancia de _)) devuelve nuevo _ (obj);
this._wrapped = obj;
};
if (typeof exports! == 'indefinido') {
if (typeof module! == 'Undefined' && Module.exports) {
exports = módulo.exports = _;
}
exports._ = _;
} demás {
root._ = _;
}
if (typeof define === 'function' && define.amd) {
Define ('subrayado', [], function () {
devolver _;
});
}
} .call (this));
En general, son funciones casi anónimas, excepto que el método de llamada () se usa al final.