У меня есть несколько страниц на сайте с использованием RequireJS, и большинство страниц имеют уникальную функциональность. Все они совместно используют множество общих модулей (jQuery, Backbone и т.д.); все они имеют свои собственные уникальные модули. Мне интересно, как лучше всего оптимизировать этот код, используя r.js. Я вижу несколько альтернатив, предложенных различными частями документации и примеров RequireJS и Almond, поэтому я придумал следующий список возможностей, которые я вижу, и я спрашиваю, какой из них наиболее рекомендуется (или если есть другой лучший способ)
- Оптимизируйте один JS файл для всего сайта, используя Almond, который будет загружаться один раз, а затем Оставайтесь в кэше. Недостатком этого самого простого подхода является то, что я загружаю на каждый код страницы, который пользователю не нужен для этой страницы (т.е. Модули, относящиеся к другим страницам). Для каждой страницы загруженный JS будет больше, чем нужно.
- Оптимизировать один JS файл для каждой страницы, который будет включать как общие, так и специальные страницы. Таким образом, я мог бы включать Almond в каждый файл страницы и загружал бы только один JS файл на каждую страницу, что было бы значительно меньше, чем один JS файл для всего сайта. Однако недостатком я вижу, что общие модули не будут кэшироваться в браузере, верно? Для каждой страницы, к которой пользователь обращается, ей придется повторно загрузить основную часть jQuery, Backbone и т.д. (Общие модули), поскольку эти библиотеки будут составлять большую часть каждого уникального одностраничного JS файла. (Кажется, это подход многостраничного примера RequireJS, за исключением того, что в примере не используется Almond.)
- Оптимизировать один JS файл для общих модулей, а затем другой для каждой конкретной страницы. Таким образом, пользователь будет кэшировать файл общих модулей и, просматривая между страницами, должен будет загружать только небольшой JS файл с конкретными страницами. В рамках этой опции я вижу два способа завершить ее, чтобы включить функцию RequireJS:
а. Загрузите файл require.js перед общими модулями на всех страницах, используя синтаксис
data-main
или обычный тег<script>
- вообще не используя Almond. Это означает, что на каждой странице будут три JS файла: require.js, общие модули и специальные модули. б. Кажется, что этот смысл предлагает метод подключения Almond в каждый оптимизированный файл - поэтому мне не пришлось бы загружать require.js, но вместо этого будет включать Almond как в мои общие модули, так и в мои модули, относящиеся к странице. Это правильно? Это более эффективно, чем загрузка require.js upfront?
Спасибо за любой совет, который вы можете предложить относительно наилучшего способа выполнить это.