RequireJS: Несколько main.js?
Я создаю одностраничное приложение с использованием requireJS и до сих пор люблю его. Я пришел к выводу о разработке других частей сайта за пределами основного приложения и не совсем уверен, как (или если) использовать requireJS для этого.
В моем основном приложении все вызвано этим тегом script:
<script data-main='/scripts/main' src='/scripts/libs/require.js'>
Сейчас я разрабатываю домашнюю страницу, у которой есть свои собственные скрипты. Использование оптимизатора, когда дело доходит до получения живого сайта, который свяжет все эти скрипты в один пакет main.js
. Я изо всех сил пытаюсь понять, где находится мой сайт.
Скажите, что мое приложение зависит от jQuery, и оно добавляется в оптимизированную версию приложения, а что, если я хочу использовать jQuery на главной странице? Я не хочу загружать в свое приложение main.js
только для того, чтобы получить доступ к моему модулю jQuery. Так что да... немного смущен!
Я представляю структуру сайта вроде:
/scripts
- app-main.js //(includes all module dependencies after optimzation)
- home-main.js //(includes all module dependencies after optimzation)
приложения:
<script data-main='/scripts/app-main' src='/scripts/libs/require.js'>
Домашняя страница:
<script data-main='/scripts/home-main' src='/scripts/libs/require.js'>
Вопросы
- Как я могу использовать RequireJS для разработки разных частей сайта?
- Рекомендуется ли иметь несколько файлов main.js?
- Как мои разные файлы
main.js
имеют общие модули, такие как оптимизация почты jQuery?
Ответы
Ответ 1
Поэтому require.js всегда следует использовать на любой странице, чтобы обеспечить модульность и чистое пространство имен. Я считаю, что каждое "приложение" нуждается в нем main.js script. При оптимизации вашего сайта r.js позволяет вам исключать модули из компиляции, которые вы должны делать для jQuery всегда.
Таким образом require.js всегда будет загружать jquery.js "на лету" и большую часть времени из кеша. Поиск других модулей, которые могут быть кэшированы между вашим приложением и домашней страницей, должен выполняться по своему усмотрению и зависит от потока ваших пользователей и других факторов.
Похоже, у вас есть два проекта, приложение и маркетинговый сайт. Я считаю, что те должны быть разделены на достаточно длинные и должны иметь свои собственные соответствующие папки "js", содержащие их собственные main.js.
Ответ 2
В команде requirejs есть несколько примеров для многостраничных приложений на github.
Посмотрите на: https://github.com/requirejs/example-multipage
В основном вы будете иметь следующую структуру:
-
page1.html: страница 1 приложения.
-
page2.html: страница 2 приложения.
-
js app: каталог для хранения модулей, специфичных для приложения.
-
lib: каталог для хранения сторонних модулей, например jQuery.
-
common.js: содержит конфигурацию requirejs, и это будет цель сборки для набора общих модулей.
-
page1.js: используется для основной информации для page1.html. Загружает общий модуль, затем загружает приложение /main 1, основной модуль для страницы 1.
-
page2.js: используется для основной базы данных для page2.html. Загружает общий модуль, затем загружает приложение /main 2, основной модуль для страницы 2.