Могу ли я объединить модули RequireJs и сам require.js в один js-пакет
Я использую RequireJs Optimizer, чтобы объединить все модули в один файл - app.js
На производстве у меня есть два js-файла: app.js и require.js
Рабочий HTML имеет следующий скрипт-тег:
<script data-main="app.js" src="require.js"></script>
Это приведет к двум запросам файлов js при запуске.
Вопрос: возможно ли объединить все, включая все модули и сам файл require.js, в один файл, поэтому у меня только один запрос при запуске?
2 ответа
Ответ здесь http://requirejs.org/docs/optimization.html
Мне пришлось включить require.js через опцию 'include' r.js.
С gulp task и gulp-requirejs это выглядит так:
requirejs({
paths: {
requireLib: 'lib/require'
},
include: ['requireLib'],
out: 'bundle.js'
})
.pipe(insert.append('require(["app"]);'))
Обратите внимание, я должен был добавить require(["app"])
до конца js-bundle для запуска основного модуля.
Теперь я могу ссылаться только на "bundle.js" на странице и иметь один запрос.
<script type="text/javascript" src="bundle.js"></script>
AlmondJS звучит как хорошая подгонка, отрывки из их документации:
Запасной загрузчик AMD для RequireJS. Он обеспечивает минимальное использование AMD API, включая поддержку подключаемых модулей загрузчика. Полезно только для встроенных / встроенных модулей AMD, не выполняет динамическую загрузку.
...
Включая миндаль в собранный файл, нет необходимости в RequireJS. размер миндаля составляет около 1 килобайта при минимизации с помощью Closure Compiler и gzipped.
Например
node r.js -o baseUrl=. name=path/to/almond include=main out=main-built.js wrap=true
Будет выводить что-то вроде этого:
(function () {
//almond will be here
//main and its nested dependencies will be here
}());
По общему признанию я не использовал это, но я слышал об этом.