Стратегии организации Javascript для Rails 3 - PullRequest
4 голосов
/ 25 ноября 2010

В настоящее время я работаю над приложением с большим количеством кода JavaScript.Я пишу встроенный код javascript на каждой странице / части, однако большая часть кода используется повторно где-то еще.Я пытаюсь найти способ преобразовать эти маленькие сценарии в нечто более удобное и удобное в обслуживании.Я использую jQuery, поэтому я не использую ни один из встроенных генераторов JS.

До сих пор я думал о следующем:

  • Простоперенесите все в application.js и воспользуйтесь новыми помощниками в стиле UJS.Это только немного лучше, чем у меня сейчас, потому что я получу большой неуклюжий файл JS.

  • Используйте js_erb gem , который обеспечивает способнапишите исходный код javascript в app/javascripts и получите i18n, шаблоны HTML и компиляцию автоматически.

  • Используйте sprockets-rails , что также кажется хорошей альтернативой, даже у меня никогдапопробовал, и я не уверен, что он совместим с rails3.

Есть ли у вас какой-либо опыт / предложение в такой теме?

Ответы [ 3 ]

1 голос
/ 08 июля 2011

Sprockets 2.0 сейчас находится в стадии активной разработки и будет поставляться с Rails 3.1 как часть ActionPack.Проще всего либо дождаться Rails 3.1, либо перейти на новейший Rails 3.1.0.rc4, указав на него свой Gemfile, например:

gem 'rails', :git => 'git://github.com/rails/rails.git', :tag => 'v3.1.0.rc4'

и выполнить

bundle install
* 1008Тем временем, начните с того, как это работает:
0 голосов
/ 24 февраля 2011

Я группирую код JS в файлах, отдельно от партиалов

  1. Частицы можно кэшировать, и для обновлений JS не требуется удаление html-кэша
  2. Лучшая организация кода, поскольку функциональность усложняется, было бы проще управлять и оптимизировать
  3. Со временем JS будет увеличиваться в размерах, и вы можете использовать CDN для доставки JS, это большое повышение производительности для времени загрузки страницы
0 голосов
/ 26 ноября 2010

Лично я группирую код javascript в файлы, которые имеют смысл, а затем включаю их на страницах, которые этого требуют. Например, если у вас есть код, который вызывается на большинстве страниц, я бы включил его в application.js. Но если у меня есть код, который включен только на моих страницах контроллера пользователя, я бы создал файл user.js и включил его только на этих страницах. Делая это, код организован таким образом, что мне легко поддерживать. Для этого могут быть некоторые компромиссы в производительности, но в моем случае ремонтопригодность важнее.

...