Как Jammit обрабатывает вид определенного JavaScript

Я пытаюсь использовать Jammit в своем приложении на Rails.

Конфигурация по умолчанию, представленная в документации, захватывает все js-файлы, включая просмотр конкретного javascript:

embed_assets: on

javascripts:
  workspace:
    - public/javascripts/vendor/jquery.js
    - public/javascripts/lib/*.js
    - public/javascripts/views/**/*.js
    - app/views/workspace/*.jst

stylesheets:
  common:
    - public/stylesheets/reset.css
    - public/stylesheets/widgets/*.css
  workspace:
    - public/stylesheets/pages/workspace.css
  empty:
    - public/stylesheets/pages/empty.css

Рассмотрим случай, когда представление конкретного javascript должно выполняться только для определенного представления:

$(function(){
  alert("View specific message here!");
}

Как я могу избежать такого эффекта?

С уважением, Алексей Захаров

2 ответа

Решение

Я предпочитаю заключить этот "view-specific-javascript" в функцию. И затем вызовите эту функцию в зависимости от страницы, которую вы на самом деле загружаете. Таким образом, все ваши JavaScripts могут кэшироваться браузерами как один файл, и вы можете выполнять те части JS, которые вам нужны.

Так что я бы добавил <script> тег к конкретному html.erb шаблон, который вызывает вашу функцию просмотра при загрузке страницы.

Надеюсь, это поможет...

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

$(function() {
  $('#my-view-object').someBehaviour();
}

Так в чем же подвох? Основное отличие состоит в том, что код JS имеет тенденцию быть связанным с определенными объектами, а не страницами. В случае, если вы реорганизуете свои взгляды, вам также придется изменить свой JS. Другая проблема заключается в том, что JS должен находиться внизу страницы, чтобы выжать максимум из браузера. Если вы помещаете записи сценариев в свои представления, то, скорее всего, они окажутся по всей HTML-разметке страницы и замедлят рендеринг.

BR, - Хосе

Другие вопросы по тегам