¿Cuándo debería usar require () y cuándo usar define ()?

He estado jugando con requirejs durante los últimos días. Estoy tratando de entender las diferencias entre definir y requerir.

Definir parece permitir la separación de módulos y permitir que se cumpla el orden de dependencia. Pero descarga todos los archivos que necesita para empezar. Mientras que solo requiere cargar lo que necesita cuando lo necesita.

¿Pueden estos dos usarse juntos y con qué fines se deben usar?

Con define , registra un módulo en require.js del que puede depender en otras definiciones de módulo o requerir instrucciones. Con require que “solo” cargue / use un módulo o archivo JavaScript que puede ser cargado por require.js. Para ejemplos, eche un vistazo a la documentación

Mi regla de oro:

  • Definir: si quiere declarar un módulo, otras partes de su aplicación dependerán de.

  • Requerir: si solo quieres cargar y usar cosas.

Del código fuente require.js (línea 1902):

 /** * The function that handles definitions of modules. Differs from * require() in that a string for the module should be the first argument, * and the function to execute after dependencies are loaded should * return a value to define the module corresponding to the first argument's * name. */ 

La función define() acepta dos parámetros opcionales (una cadena que representa una ID de módulo y una matriz de módulos requeridos) y un parámetro requerido (un método de fábrica).

El retorno del método de fábrica DEBE devolver la implementación de su módulo (de la misma manera que lo hace el Patrón de Módulo ).

La función require() no tiene que devolver la implementación de un nuevo módulo.

Usando define() se está preguntando algo como “ejecutar la función que estoy pasando como parámetro y asignar lo que devuelve a la ID que estoy pasando, pero antes, verificar que estas dependencias estén cargadas” .

Usando require() está diciendo algo así como “la función que paso tiene las siguientes dependencias, verifique que estas dependencias estén cargadas antes de ejecutarlo” .

La función require() es donde usted usa los módulos definidos, para asegurarse de que los módulos estén definidos, pero no está definiendo nuevos módulos allí.

el método “define” para facilitar la definición del módulo y el método “require” para manejar la carga de la dependencia

define se utiliza para definir módulos con nombre o sin nombre en función de la propuesta que utiliza la siguiente firma:

 define( module_id /*optional*/, [dependencies] /*optional*/, definition function /*function for instantiating the module or object*/ ); 

require, por otro lado, se usa normalmente para cargar código en un archivo JavaScript de nivel superior o dentro de un módulo si desea obtener dependencias dinámicamente

Consulte https://addyosmani.com/writing-modular-js/ para obtener más información.

require () y define () ambos utilizados para cargar dependencias. Existe una gran diferencia entre estos dos métodos.

Es muy simple chicos

Require (): El método se usa para ejecutar funcionalidades inmediatas. define (): el método se usa para definir módulos para su uso en múltiples ubicaciones (reutilización).