Как Jammit обрабатывает вид определенного JavaScript - PullRequest
1 голос
/ 19 августа 2010

Я пытаюсь принять 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 ]

3 голосов
/ 19 августа 2010

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

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

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

0 голосов
/ 22 апреля 2012

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

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

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

BR, - José

...