javascript - mismatched - require js html
RequireJS: Diferencia entre require() y define() (5)
Esta pregunta ya tiene una respuesta aquí:
En RequireJS, ¿cuál es la diferencia básica entre utilizar require () Vs define ();
require([''a''], function(a) {
// some code
});
// A.js
define([''b'',''c'',''d'',''e''], function() {
//some code
});
Cualquier caso de uso sería muy útil.
Creo que siempre usas define para tus definiciones de módulo. Tiene varios sabores para hacerlo, puede definir un módulo con sus dependencias en una matriz como el primer argumento para definir (como en el ejemplo que publicó).
O puede usar el contenedor Simplified CommonJS , algo como esto:
define(function (require) {
var otherModule = require(''otherModule'');
return function () {
return otherModule.operation();
};
});
Tal vez se haya mezclado con el formato de dependencia del servicio JSONP , que utiliza require () para cargar el servicio, y luego especifique define () como la devolución de llamada JSONP que finalmente definirá el módulo una vez que el servicio responda.
Así que al final, utiliza define () para definir módulos y requiere () para cargarlos.
Una diferencia fundamental que me molestó en el uso temprano fue descubrir que una define
nunca podría ser llamada .
Siempre que haya una sola define
por archivo, registrará ese módulo como disponible bajo ese nombre de archivo. Sin embargo, los módulos de define
solo se cargan una vez que una función require
solicita cada uno de ellos.
Definir: si necesita un XXX, primero cargue estas otras cosas, luego devuelva el resultado de esta función.
Requerir: Cargue estas otras cosas, luego ejecute esta función. (no "si")
Ejemplo : Digamos que incluye este archivo JS en su página:
// this is in company/welcomepage.js
define([''company/ui_library''],
function(uiLib) {
console.log(''Welcome to {company}!'');
}
);
Si ese es el único archivo Javascript, podría abrir su página y no habría nada en el registro de la consola, a pesar de que el script le dice que dé la bienvenida al usuario. Sin embargo, eso cambia si en algún lugar de la página, o en otro script, inserta lo siguiente:
require([''company/welcomepage''], function() {
// optionally insert some other page-initialization logic here
});
Ahora, la página pondrá un mensaje de bienvenida en la consola cuando se cargue.
De hecho, con ese segundo en su lugar, no habría necesidad de incluir manualmente welcomepage.js como una etiqueta <script>
; lo cargaría desde su ubicación tan pronto como vea el requerimiento, y se dé cuenta de que lo necesita.
require
y requirejs
son los mismos.
require === requirejs // true
require
es una forma de cargar un módulo que ha sido definido. Por ejemplo, para cargar el módulo logger
podría hacer:
require(["logger"], function(logger){
logger.bla("S");
});
Aquí estoy llamando a require
, especificando un módulo ya definido llamado logger
y usándolo llamando a su método bla
.
define
es una forma de definir un módulo. Por ejemplo para definir un módulo de logger
podría hacer:
// logger.js
define(function(){
return {
bla: function(x){
alert(x);
}
}
});
Aquí llamé a define
y logger
módulo logger
. En este módulo bla
función bla
que quiero exponer.
A veces, define aspectos muy similares a los de las exportaciones, ya que define también puede depender y usar otros módulos, al igual que requieren, puede usar otros módulos Déjame mostrarte el mismo módulo de logger
, esta vez usando un módulo
// logger.js
define(["popup"], function(popup){
return {
bla: function(x){
popup.show(x);
}
}
});
Aquí el módulo de registrador que defined
, también tiene una dependencia llamada popup
y, por lo tanto, parece que se require
.
define cómo declaramos un módulo, de acuerdo con el formato del módulo AMD (hay otros formatos de módulo disponibles como CommonJS , ES2015 , System.register , UMD )
mientras que ..
require es una construcción de carga de módulos que está disponible con cargadores de módulos como RequireJs , SystemJS , el cargador de módulos integrado de Node . Se utiliza cuando desea utilizar un módulo definido en uno de los formatos de módulo mencionados anteriormente.
require () y define (), ambos utilizados para cargar dependencias. Hay una gran diferencia entre estos dos métodos.
Sus chicos muy simples
Requerir (): el método se utiliza para ejecutar funcionalidades inmediatas. define (): el método se utiliza para definir módulos para su uso en múltiples ubicaciones (reutilización).