2012-04-12 23 views
7

He descargado el sample-project para el latest-release de RequireJS. Su documentation implies todo lo cargado se pasa a la lista de parámetros de la función asociada (en el orden correspondiente).¿Por qué no RequireJS pasa jQuery al alias de funciones?

Así que decidí probarlo ... ¡pero parece que no funciona!

  • Firebug (pestaña neto) muestra jQuery como se carga: por lo RequireJS obvioulsy hizo que parte con éxito
  • Firebug (ficha Consola) muestra '$ no es una función'

Mi pregunta es : ¿Por qué no se completa el alias?

MI código es el siguiente:

<html xmlns="http://www.w3.org/1999/xhtml"> 
<head runat="server"> 
    <title></title> 

    <script src="Scripts/require.js" type="text/javascript"></script> 

    <script type="text/javascript"> 

     require(["scripts/jQuery/Core/jquery-1.7.2.min"], function ($) { 

      // jQuery is not passed-into the function, so the alias fails! 
      $(function() { 
       var stop = ""; 
      }); 
     }); 

    </script> 

</head> 
<body> 
    <form id="form1" runat="server"> 
    </form> 
</body> 
</html> 

MUESTRA Thier se parece a:

//Inside scripts/main.js 
require(["some/module", "a.js", "b.js"], function(someModule) { 
    //... 
}); 
+1

Bueller? Beuller? –

Respuesta

16

jQuery debe ser cargado a través del nombre "jQuery" especial, de lo contrario, ganó' t registrarse a sí mismo (ya que jQuery usa una definición nombrada).

// create an alias that points to proper file 
require.config({ 
    paths : { 
    jquery : "http://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min" 
    } 
}); 

// require jquery usign the path config 
require(["jquery"], function ($) { 
    console.log($); 
}); 

Eso es las razones principales por nombradas definen se considera un anti-patrón y se debe utilizar sólo cuando sea necesario (cuando se tienen varios módulos en el interior mismo archivo).

+0

Gracias, gracias, gracias, gracias! ¡Esto me estaba volviendo loco! –

+0

¡gracias! la única respuesta que funcionó para mí para incluir un archivo jQuery independiente. – nirazul

0

¿Es su carpeta de secuencias de comandos 'Scripts' o 'scripts'?

Está realizando una solicitud para "Scripts/require.js", así como para "scripts/jQuery/Core/jquery-1.7.2.min". Echa un vistazo a la pestaña de Red de Firebug ... Apuesto a que estás generando un 404 allí.

2

Asegúrese de leer "README.md" para el proyecto de ejemplo RequireJS + jQuery. Hay muchas complicaciones con el uso de jQuery que debe decidir sobre la mejor manera de abordarlo para su proyecto durante la configuración inicial. Una vez que haya descubierto lo que es mejor para usted y lo haya implementado, no debería volver a ser un problema.

Gran parte de la complicación también proviene del hecho de que jQuery no es un verdadero módulo AMD, solo tienen un hack en la base de código para hacer una definición si detecta que la función de definición está disponible. Por ejemplo, esto significa que el nombre del módulo jQuery siempre será "jquery" (observe la minúscula 'q') a menos que lo ajuste usted mismo, por lo que si define la ruta en su configuración DEBE tener la clave llamada "jquery" (de nuevo, con una 'q' minúscula) o habrá una discrepancia. Eso nos mordió la primera vez que configuramos RequireJS en nuestro proyecto (llamamos a la clave "jQuery").

+0

Lo haré ... gracias hombre! –

Cuestiones relacionadas