Как загрузить JS-файлы для конкретных страниц с помощью RequireJS? - PullRequest
4 голосов
/ 17 марта 2012

У меня есть многостраничный веб-сайт, использующий RequireJS, который загружает файл загрузочной ленты (boot.js), который затем требует app.js.

app.js обрабатывает всю логику, а инициализация всех остальных модулей происходит через app.initModule () (который является просто оболочкой вызова require ())

У меня также есть app.loadPageJS() для загрузки JS-файлов для конкретной страницы (например, на основе window.location.pathname, www.domain.com/path/to/file.html автоматически загрузит / _assets / js / pages / path / to / file.js)

Эту функцию можно включить / выключить и переопределить, добавив класс «no-auto-load» или «auto-load» к телу соответственно.

ТеперьМой подход недостаточно надежен.С одной стороны, перезапись URL сломала бы механизм, а с другой стороны, если loadPageJS отключен, и если у меня нет доступа к тегу body, я не могу включить JS-файл для конкретной страницы (в случае сайтов, использующих системы шаблонов, добавлениекласс для тега body не всегда доступен).

Какие есть другие способы включения кода, специфичного для страницы?Я бы предпочел избегать следующего:

  • добавление кода, специфичного для страницы, в файл global.js и выполнение проверок и выполнение только определенных наборов кодов

  • с использованием переменной pageName (которая, по сути, будет аналогична приведенной выше)

Заранее спасибо.

1 Ответ

0 голосов
/ 17 марта 2012

Если на странице есть разные модули, разделенные уникальными идентификаторами (модуль новостной рассылки, заключенный в div с идентификатором «рассылка» и т. Д.), Вы можете проверить наличие элемента модуля в DOM и условно загрузитьфайл JS, необходимый для запуска этого модуля.Таким образом, вместо того, чтобы быть специфичным для страницы, это специфично для модуля.

...