Ответ 1
Поскольку я не видел ответа примерно через месяц, я отвечу на этот вопрос в меру своих текущих знаний.
Rails 3.1 (в настоящее время в релизе-кандидате 4) представляет sprockets, который скомпилирует весь javascript в проекте rails в один файл. Он даже поставляется с инструментами для минимизации и сжатия javascript, чтобы все это сразу передавалось клиенту.
Связано со звездочками - конвейер ресурсов Rails 3.1. Насколько я понимаю, это иерархия/абстракция папок. Javascripts могут входить в 3 папки:
/apps/assets/javscripts/
Файлы Javascript, специфичные для приложения, включая application.js
. Это должно содержать только манифест файлов javascript, которые вы хотите включить в свой проект. Инструмент rails new
сгенерирует этот файл и включит jquery в манифест.
/lib/assets/javascripts/
Файлы Javascript, написанные разработчиком, более общие цели. (Мое впечатление, что это будет для javascript-библиотек, которые вы разрабатываете, чтобы переходить в несколько приложений)
/vendor/assets/javascripts/
Файлы сторонних javascript (т.е. JQuery, Modernizr)
Все файлы в этих папках будут отображаться клиенту внутри /assets/
, абстрагируя пути файлов на стороне сервера. Я предполагаю, что это предназначено, чтобы помочь разработчику организовать файлы javascript.
Чтобы ответить на мой собственный вопрос
- Поместите функции javascript в отдельные файлы, группируйте их логически. В моем тестовом приложении указано, что вложенные папки внутри
.../assets/javascripts/
в порядке , если и только если путь вложенной папки включен в манифест.- т.е. положив
//= subfolder/js_file
в манифест, будет работать. Ввод//= js_file
не будет, еслиjs_file
находится внутри.../javascripts/subfolder/
- DHH упоминает "правило 13" в своем разговоре (см. ниже). Если количество javascripts в папке превышает 13, оно начинает выглядеть беспорядочным и неуправляемым. Это будет подходящее время для группировки файлов javascript в подпапки.
- т.е. положив
- Используйте встроенный Rails 3.1 minifier и компрессор (или установите предпочтительный камень)
- Рефакторинг javascript-кода время от времени. Перемещение функций на
/lib/assets/javascripts/
с течением времени. (Цель состоит в том, чтобы в конечном счете распознать, когда вы хотите писать функции javascript общего назначения в отличие от конкретных приложений и исключить этот шаг рефакторинга)
Дополнительные ресурсы
сообщение в блоге, в котором перечислены все изменения в Rails 3.1
DHH talk on Rails 3.1 изменения, 16 мая 2011 (~ 1 час)