Вопрос

Я пытаюсь усыновить Джаммит в моем применении рельсов.

Конфигурация по умолчанию, предоставленная в документации, захватывает все файлы 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!");
}

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

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

Это было полезно?

Решение

Я предпочитаю завершить этот «специфичный для представления Javascript» в функции. А затем вызовите эту функцию в зависимости от страницы, которую вы фактически загружаете. Таким образом, все ваши Javascripts могут кэшироваться браузерами в виде единого файла, и вы можете выполнить части JS, которые вам нужны.

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

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

Другие советы

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

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

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

Бр, - Хосе

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top