javascript - node - RequireJs-Define vs Require
requirejs jquery (2)
Para los módulos, no devuelvo un objeto que he estado usando require en lugar de definir. Por ejemplo, decir que tengo el siguiente complemento jQuery (jquery.my-plugin.js):
require([''jquery''], function($) {
$.fn.myPlugin = function(options) {
...
};
});
Ahora si digo lo siguiente en otro módulo:
require([''jquery'', ''jquery.my-plugin''], function($) {
$(''#element'').myPlugin();
});
Descubrí que esto no funciona porque myPlugin no se ha registrado. Sin embargo, si cambio el requerimiento a una definición dentro de mi módulo jquery.my-plugin, entonces funciona bien.
Apreciaría que alguien pudiera aclarar por qué tengo que hacer esto. Me gusta entender algo completamente antes de seguir adelante y usarlo. Gracias
A continuación se muestra el código que debe estar dentro de jquery.my-plugin.js que define un módulo llamado ''jquery.my-plugin'' que se puede usar como una dependencia en otro lugar.
define([''jquery''], function($) { //jquery is a dependency to the jquery.my-plugin module
$.fn.myPlugin = function(options) { //adds a function to the *global* jQuery object, $ (global since jQuery does not follow AMD)
...
};
});
A continuación hay una sección de código en la que desea adjuntar su función de complemento al objeto jQuery global y luego usarlo ...
require([''jquery.my-plugin''], function() { // jquery.my-plugin is loaded which attaches the plugin to the global JQuery object as shown above, then this function fires
//the only reason $ is visible here is because it''s global. If it was a module, you would need to include it as a dependency in the above require statement
$(''#element'').myPlugin(); //the $ refers to the global object that has the plugin attached
});
Básicamente, cuando utilizas require
estás diciendo "quiero esto, pero también quiero todas sus dependencias". Entonces en el ejemplo a continuación, estamos requiriendo A, pero require buscará todas las dependencias y asegurará que estén cargadas antes de continuar.
require([''a''], function(a) {
// b, c, d, e will be loaded
});
// File A
define([''b'',''c'',''d'',''e''], function() {
return this;
});
La regla general es usar define
cuando se quiere definir un módulo que será reutilizado por la aplicación y se usa require
para simplemente cargar una dependencia.