лучшие практики направляющих, куда поместить незаметный JavaScript

мои приложения направляющих (все 2.3.5) используют общее соединение встроенного JavaScript, rjs, прототипа и jQuery. Давайте назовем это изучением или болезнью роста. В последнее время я был все более страстно увлечен незаметным JavaScript. Это делает Ваш HTML чистым, таким же образом CSS очистила его.

Но большинством примеров, которые я видел, являются небольшие примеры, и они помещают весь JavaScript (jQuery) внутри application.js

Теперь у меня есть довольно большое приложение, и я продумываю способы структурировать мой js. Мне нравится так или иначе, что мой сценарий все еще близко к представлению, таким образом, я думаю что-то как

orders.html.erb
orders.js

где orders.js содержит незаметный JavaScript, характерный для того представления. Но возможно это - просто я являющийся слишком консервативным :)

Я прочитал некоторые сообщения Yehuda Katz об этой самой проблеме здесь и здесь, где он занимается этой проблемой. Это пройдет Ваши js-файлы и только загрузит относящихся к Вашему представлению. Но увы я не могу найти текущую реализацию.

Так мои вопросы:

  • как делают Вы лучше всего структурируете свой незаметный JavaScript; управляйте своим кодом, как делают Вы удостоверяетесь, что очевидно из HTML, что что-то, как предполагается, делает. Я предполагаю, что хорошие имена классов имеют большое значение :)
  • как Вы располагаете свои файлы, загружаете их всех в? только некоторые? Вы используете content_for :script или javascript_include_tag в Вашем представлении для загрузки соответствующих сценариев. Или...?
  • Вы пишете очень родовые функции (как удаление), с параметрами (добавьте дополнительные атрибуты?), или Вы пишете очень определенные функции (DRY?). Я знаю в направляющих 3 существует стандартный набор, и все незаметно там. Но как запустить в направляющих 2.3.5?

Короче говоря: каковы лучшие практики для того, чтобы сделать незаметный JavaScript в направляющих?:)

31
задан Sam Saffron 23 May 2010 в 13:30
поделиться

2 ответа

Я не думаю, что существует одна лучшая практика, но я расскажу вам, что я делаю.

  1. У меня есть ряд js-файлов, каждый со своей целью в каталоге public/javascripts/. Примерами могут быть utility.js chat.js shopping_basket.js и так далее.

  2. Я использую asset packager и определяю одну большую толстую коллекцию для всех моих функций общего использования, а другую - только для функций администратора. Поездки на сервер обходятся слишком дорого. Я в основном включаю все js при первой загрузке страницы, минифицированные в один блок (в общем)

  3. Я разрешаю основные $(document).ready хуки inline на страницах, и держу их очень короткими.

  4. Данные, к которым нужно обращаться моим js-файлам, выводятся в страницу. (Обычно в DOM, иногда как переменные - например, var xyz = 100)

  5. Обычно я разрабатываю контроллеры с выключенным javascript (и убеждаюсь, что все работает), затем включаю его и добавляю несколько if request.xhr?, где это необходимо.


Имейте в виду, что в Rail 3.1 появилась встроенная лучшая практика, см: http://guides.rubyonrails.org/asset_pipeline.html - лично у меня возникли проблемы с производительностью и конфигурацией нового конвейера, однако у многих других он работает очень успешно.

10
ответ дан 27 November 2019 в 22:51
поделиться

Недавно я описал, как я управляю javascript в Ruby on Rails. В основном я разбиваю все на множество мелких, гранулированных файлов, каждому из которых присваивается соответствующее пространство имен, а затем объединяю их все в один файл для производства с помощью asset_packager.

3
ответ дан 27 November 2019 в 22:51
поделиться
Другие вопросы по тегам:

Похожие вопросы: