Файл JavaScript для просмотра в Rails - PullRequest
54 голосов
/ 02 марта 2009

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

Должен ли я:

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

Ответы [ 5 ]

110 голосов
/ 02 марта 2009

Загружайте основной 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 будет загружено с yield: javascript_include.

12 голосов
/ 02 марта 2009

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

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

5 голосов
/ 13 ноября 2011

Это меняется с Rails 3.1 и конвейером активов !!!

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

2 голосов
/ 23 октября 2011

Можно использовать 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 %>
0 голосов
/ 20 марта 2014

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

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

def stylesheet(*files)
  content_for(:head) { stylesheet_link_tag(*files) }
end
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...