2011-10-27 14 views
25

PreguntaRequireJS con rieles 3.1 aplicación

Si ha utilizado RequireJS con un (3,1 ESP) aplicación Rails 3, ¿cómo es que trabaja para usted? ¿Algún truco de configuración u otro truco que deba tener en cuenta?

Antecedentes

Estoy contemplando el uso de RequireJS más activos de tuberías a base de piñones de los rieles en 3.1, específicamente para el código JavaScript. Tengo dos motivadores para esta opción:

  • Quiero aprovechar la administración de módulos de RequireJS para mi código de cliente JS.
  • Me gustaría un sistema de precompilación que pueda seguir mi código de biblioteca JS en otros contextos. Para mi sorpresa, el precompilador de Asset Pipeline es una parte cocida de Rails, no una parte de Sprockets.

Todos los comentarios se agradecieron, gracias!

+1

¿Se puede decir más acerca de por qué usted quiere 'gestión de módulos sobre Piñones RequireJS uno? Estoy pensando en hacer lo mismo para nuestra aplicación Rails: reemplazar los Piñones con RequireJS. – kangax

+4

@kangax, Sprockets realmente no proporciona administración de módulos. Simplemente conglomera un montón de JavaScript en un archivo creado a través de las directivas de Sprockets. Da la casualidad de que publiqué la gema [requirejs-rails] (https://github.com/jwhitley/requirejs-rails/) para integrar RequireJS en Rails, aprovechando los piñones para las conversiones de CoffeeScript. Cerca de la versión 0.5.0 con soporte de precompilación. –

Respuesta

48

Para la posteridad, aquí es donde me he dado en esta pregunta: ¿

  • RequireJS proporciona una implementación de la API Asynchronous Module Definition. RequireJS 'Why AMD? page presenta el caso de por qué desea utilizar esto.

  • Las ruedas dentadas y los rieles 3 El ducto de activos permite la estructuración simple del código JavaScript/CoffeeScript, pero no proporciona ningún soporte de módulo verdadero. Por ejemplo, no hay ningún control de espacio de nombres en Sprockets.

  • jQuery (a partir de 1.7), Underscore, Dojo y muchas otras bibliotecas importantes han implementado el soporte de AMD. Varias otras importantes bibliotecas de JS parecen tener soporte de AMD en el horizonte a corto plazo (por ejemplo, Backbone.js).

Es ciertamente posible crear una aplicación de Rails que integra RequireJS. Para simplificar ese proceso, he creado el requirejs-rails gem on github, con configuración sencilla y precompilación compatible con Pipeline Asset para código basado en AMD a través de r.js. La versión actual está disponible a través de:

gem install requirejs-rails

+1

También para la posteridad, subrayado ya no es compatible con AMD. Sin embargo, Lodash, un reemplazo directo para Underscore, sí lo hace. http://lodash.com – leppert

+2

Gracias por esta joya. ¿Hay alguna aplicación de código Rails que pueda ver que muestre cómo está todo configurado, preferiblemente con Backbone? He leído los documentos, pero soy nuevo en require.js y no tengo experiencia/habilidad con javascript, así que me llevo mucho mejor con un ejemplo de trabajo. – Leahcim

+0

Aquí hay un ejemplo de la aplicación Rails 4 que integra requirejs-rails: https: // github.com/pboling/require-rails-example – rubiii

Cuestiones relacionadas