Использование RequireJS с приложением Rails 3.1 - PullRequest
25 голосов
/ 27 октября 2011

Вопрос

Если вы использовали RequireJS с приложением Rails 3 (esp 3.1), как это работает для вас? Какие-нибудь хитрости конфигурации или другие ошибки, за которыми мне нужно следить?

Фон

Я обдумываю использование RequireJS над конвейером активов на основе Sprockets в Rails 3.1, особенно для кода JavaScript. У меня есть два мотиватора для этого выбора:

  • Я хочу использовать управление модулем RequireJS для моего клиентского кода JS.
  • Я бы хотел систему прекомпиляции, которая могла бы следовать коду моей библиотеки JS в других контекстах. К моему удивлению, прекомпилятор Asset Pipeline является частью Rails, а не частью Sprockets.

Все отзывы оценены, спасибо!

1 Ответ

48 голосов
/ 06 декабря 2011

Для потомков вот где я пришел к этому вопросу:

  • RequireJS обеспечивает реализацию API определения асинхронного модуля *1006*. RequireJS ' Почему AMD? На странице рассказывается, почему вы хотите использовать это.

  • Звездочки и конвейер ресурсов Rails 3 допускают простое структурирование кода JavaScript / CoffeeScript, но не обеспечивают никакой реальной поддержки модулей. Например, в Sprockets нет управления пространством имен.

  • jQuery (по состоянию на 1.7), Underscore, Dojo и многие другие крупные библиотеки реализовали поддержку AMD. Некоторые другие основные библиотеки JS, похоже, поддерживают AMD на ближайшую перспективу (например, Backbone.js).

Конечно, возможно создать приложение Rails, которое интегрирует RequireJS. Чтобы упростить этот процесс, я создал гем requirejs-rails на github с простой настройкой и предварительной компиляцией с поддержкой Asset Pipeline для кода на основе AMD через r.js . Текущий выпуск доступен через:

gem install requirejs-rails

...