Rails3 views- JS шаблонная структура каталогов - PullRequest
1 голос
/ 07 апреля 2011

Мне действительно не нравится иметь дублированную структуру каталогов в общедоступной папке, которая содержит шаблоны Javascript, как предлагается здесь .Я собираюсь погрузиться в проект.Любой, кто может отговорить меня от представления всех моих взглядов JS на другие мои взгляды, пожалуйста, объясните причины, по которым этого не делать.Мои мысли:

Используете ли вы Backbone, шаблоны Jammit или любой другой Javascript для создания представления ваших данных, не должен ли этот код в идеале находиться в каталоге / app / views / [object]?Если мы разрабатываем приложение с несколькими способами представления данных, не должны ли все эти представления жить в одном и том же месте?конечно, но если мы используем Jammit / Closure / другой инструмент сжатия JS, то мы уже добавили слой обработки между нашей структурой каталогов и JS, который мы передаем клиенту.Разве это не значит, что мы можем разместить шаблоны там, где это наиболее удобно для организации / обслуживания кода?

Спасибо.

1 Ответ

1 голос
/ 07 апреля 2011

Причина, по которой предлагается не помещать файлы .js в app/views/[object], заключается в том, что они не являются частью приложения Rails. Они на самом деле являются частью приложения / фреймворка Backbone или Jammit, поэтому они не принадлежат каталогу приложения. Если это файлы .js.erb, то они должны находиться в каталоге приложения, но поскольку они не принадлежат каталогу public/javascripts.

Никто не мешает вам сделать это, но поскольку они не являются файлами шаблонов .erb, они на самом деле не принадлежат каталогу приложения. Это публичные файлы .js. Причина, по которой они не являются частью основного приложения Rails, заключается в том, что они не заканчиваются на .erb и функционируют самостоятельно, независимо от контроллеров или классов ruby, таких как изображения и файлы CSS.

Имейте в виду, что если они находятся в каталоге / app / views, то их придется обслуживать через Rails. Другими словами, вам понадобится контроллер сервера, и это добавляет дополнительную сложность и нагрузку на ваши серверы. Более того, если им не требуется передавать данные ruby ​​с ваших контроллеров в представления, у вас будут довольно простые / бессмысленные контроллеры, которые просто обслуживают статические данные. И вам, вероятно, придется переименовать файлы в .js.erb, чтобы они могли обслуживаться через эти контроллеры. Если файлы обслуживаются напрямую из общедоступного каталога, в этом нет необходимости, поэтому все гораздо проще.

Нет ничего плохого в том, что один каталог зеркально отображает другой, это часто случается, например, с RSpec spec / models, spec / views, spec / controllers.

...