node javascript requirejs

javascript - node - Comprender cuándo y cómo usar Require.JS



requirejs jquery (2)

Acabo de comenzar a trabajar con Require.JS y no estoy del todo claro en los casos apropiados en los que debería usarse, así como la forma correcta de usarlo en esos casos.

Así es como actualmente tengo las cosas configuradas con Require.JS. Tengo dos funciones, functionA() y functionB() . Ambas funciones requieren una función adicional, functionC() para funcionar correctamente.

Solo quiero cargar functionC () cuando sea necesario, es decir, cuando se llame a functionA () o functionB (). Entonces tengo los siguientes archivos:

functionC.js

functionC(){ //do stuff }

functionA.js

functionA(){ define([''functionC''],function(){ //functionC() is loaded because it is listed as a dependency, so we can proceed //do some functionA() stuff }); }

functionB.js

functionB(){ define([''functionC''],function(){ //functionC() is loaded because it is listed as a dependency, so we can proceed //do some functionB() stuff }); }

Entonces, ¿está configurado correctamente? Y si termino llamando tanto a functionA () como a functionB () en la misma página, ¿se está trabajando extra ya que ambos cargan el archivo functionC.js? Si es así, ¿es eso un problema? Y si es así, ¿hay alguna forma de configurarlo para que primero comprueben si FunctionC.js ya se ha cargado y solo lo cargan si no lo ha estado? Finalmente, ¿es este un uso apropiado de Require.JS?



define() solo debe usarse para definir un módulo. Para el ejemplo anterior, donde una porción de código debe cargarse dinámicamente, usar require() es más apropiado:

functionA.js

functionA(){ require([''functionC''],function(functionC){ //use funcC in here to call functionC }); }

Algunas notas:

  • require([]) es asíncrono, por lo que si la persona que llama de la functionA espera un valor de retorno de esa función, es probable que haya errores. Lo mejor es que la functionA acepte una devolución de llamada que se invoca cuando la functionA termina con su trabajo.
  • El código anterior llamará require() para cada llamada a functionA ; sin embargo, después de la primera llamada, no se aplica ninguna penalización para cargar functionC.js , solo se carga una vez. La primera vez que require() se llama, cargará functionC.js , pero el resto del tiempo, RequireJS sabe que ya está cargado, por lo que llamará a la function(functionC){} sin solicitar functionC.js nuevamente.