2012-09-06 15 views
6

Tengo un proyecto Javascript fueron la mayoría de los módulos están utilizando algunas librerías de terceros como dependencias 'globales' (en particular, jQuery y jQuery plugins)consejos para migrar una aplicación javascript para usar AMD (por ejemplo RequireJS)

me gustaría para "limpiar" el proyecto (para expresar todas las bibliotecas como dependencias requirejs), sin embargo, en mi caso es una tarea grande (muchos archivos, muchas librerías de terceros).

¿Cómo puedo hacer que la migración sea más fácil/rápida?

  • ¿Puedo "falso" por medio de dependencias amd envolviendo las librerias de terceros en módulos que sólo les carga (con la orden! Plugin?)
  • ¿Es seguro módulos que se cargan librerías de terceros mezclar como módulos y módulos que usan directamente el global?
  • Si quisiera automatizar cosas, ¿hay alguna herramienta que pueda usar para 'analizar' un módulo requirejs para decirme si se usa un símbolo en particular?

Editar: Lo que quiero decir con mi última pregunta es "¿Sería posible volver a escribir automáticamente mis archivos js para que explícitamente importen dependencias en lugar de depender de los globales del navegador?"

+0

¿Puede explicar su última pregunta. ¿Por qué razón quieres analizar los módulos? –

+0

@ AndreasKöberle Edité mi pregunta, esperando que aclare las cosas. – phtrivier

Respuesta

0

Tuve un similar question sobre la necesidad de ajustar el código de un tercero en los módulos de AMD. Mi conclusión fue que no hay beneficios en mi caso (gran aplicación Backbone). Entonces debería preguntarse si realmente necesita importar jquery por ejemplo por AMD. Esto terminará en módulos en los que importa jquery cada vez, que es una gran cantidad de código repetitivo propenso a errores.

En resumen, no tiene sentido utilizar AMD para el código que usará en cualquier caso.

+0

No es cierto. Incluir jQuery en cada definición de módulo * es * útil, especialmente cuando se trata de pruebas unitarias. Además, si está utilizando Backbone, los únicos archivos que debería usar jQuery son las vistas. – lededje

1

¿Puedo "falso" el uso de las dependencias del amd envolviendo las librerias de terceros en módulos que simplemente cargarlos

Sí se puede, RequireJS tiene un config cuña que está diseñado sólo para eso .

Tome un vistazo a este artículo que le ayudará a organizar el código JavaScript en la RequireJS http://www.stefanprodan.eu/2012/09/intro-requirejs-for-asp-net-mvc/

+0

Según entendí, la opción 'shim' estaba allí para configurar las dependencias * entre * libs de terceros (el ejemplo canónico es Backbone, que necesita jquery para cargarse), sin usar el complemento 'order!'. Me gustaría usar shim * al final *, pero por el momento no puedo, ya que no puedo expresar que mis componentes dependen de una lib (no tendría 'define ([" backbone "], función (Backbone) ', por ejemplo). Todavía uso 1.0 con el complemento '¡ordenar!', pero me gustaría solucionarlo. – phtrivier

Cuestiones relacionadas