Подтвердить что ты не робот

Файл JavaScript для просмотра в Rails

В соответствии с рекомендациями "ненавязчивого JavaScript" я хочу разделить логику JavaScript на
отдельные файлы. Однако я не знаю, как их организовать.

Должен ли я:

  • Просто бросьте все javascript приложения в файл Application.js и загрузите его с помощью страницы макета? Это простой подход, но в итоге у меня будет раздутый Application.js. Некоторые пользователи могут захотеть посетить только пару страниц, но весь этот файл будет предварительно загружен, что не очень хорошо.
  • Или мне нужно создать отдельный файл javaScript для каждого представления и загрузить их самостоятельно? Это создает набор вопросов. Как связать каждый js файл с соответствующим представлением?
    Спасибо.
4b9b3361

Ответ 1

Загружать основной JavaScript в application.js каждый раз. Теперь создайте файлы для разных нужд. Создайте файл form.js, файл myfancypart.js и т.д. Не загружайте их в макет application.html.erb. Загружайте их динамически, когда они вам понадобятся:

application.html.erb:

<%= javascript_include_tag "application" %>
<%= yield :javascript_includes %>

верхняя часть вашего view.html.erb:

<% content_for :javascript_includes do %>
  <%= javascript_include_tag "forms.js" %>
<% end %>

Все содержимое блока content_for будет загружено с выходом: javascript_includes.

Ответ 2

Я предлагаю поместить все это в один файл, который вы можете затем свернуть и сжать. Клиенту нужно будет загрузить его только один раз, поскольку он будет кэшироваться при всех последующих запросах.

Еще одна вещь, которая может вас заинтересовать - это sprockets, менеджер зависимостей javascript, который вы можете установить с помощью gem. Вы можете получить дополнительную информацию о звездочках на веб-сайте (http://getsprockets.org/) или на странице github (https://github.com/rails/sprockets). Это делает написание больших приложений на JavaScript намного более управляемым.

Ответ 3

Это изменяется с помощью Rails 3.1 и конвейера активов!!!

Разделяйте файлы лучше, как вы указываете. Вопросы о том, как ссылаться на них и связывать их, уходят с rails 3.1, целью которого является их компиляция в отдельные файлы для производства.

Ответ 4

Можно использовать Jammit для включения файлов css и javascripts

для деталей: http://documentcloud.github.com/jammit/

Использование:

шаг 1:

Добавить js файлы в assets.yml(см. код ниже)

JavaScripts:

footer:

- app/javascripts/lib/*.js
- app/javascripts/jquery-plugins/*.js
- app/javascripts/custom/*.js
- app/javascripts/application.js

Заголовок:

- app/javascripts/core/*.js
- app/javascripts/head/*.js

Шаг 2:

Добавьте простой код в макет приложения:

<%= include_javascripts :header %>
<%= include_javascripts :footer %>

Ответ 5

возможно, вы хотите использовать application_helper

def javascript(*files)
  content_for(:head) { javascript_include_tag(*files) }
end

def stylesheet(*files)
  content_for(:head) { stylesheet_link_tag(*files) }
end