Ответ 1
Если вы используете загрузчик Dojo require()
, есть инструменты сборки, которые вы можете использовать для объединения файлов и минимизации. Согласно сайту, инструменты сборки не включены в официальную версию, поэтому вам придется получить их из версии разработки (в частности, посмотрите в каталоге buildscripts
).
Документация Dojo содержит некоторую информацию о ее сборке, которая также может оказаться полезной.
В качестве доказательства концепции выполните следующие шаги:
-
Перейдите на страницу download и загрузите Source Dojo Toolkit SDK (это единственный, который содержит скрипты util необходимые для сборки).
-
Извлечь в место (ради этого поста, скажем,
/opt/dojo-toolkit
). -
В каталоге инструментов Dojo (т.е.
/opt/dojo-toolkit
) запустите утилиту build:./util/buildscripts/build.sh action=release htmlFiles=/path/to/my/index.html
(осторожно, это замедлило мой двухъядерный двухъядерный сканер для сканирования)
Пример index.html
(этот находится точно в каталоге dojo-toolkit
):
...
<head>
<script src="dojo/dojo.js"></script>
<script>
dojo.require("my.test");
</script>
</head>
...
Вызов require()
ищет вложенные модули (я не мог заставить его работать с модулем верхнего уровня), поэтому в этом случае у меня есть каталог my
внутри dojo-toolkit
, который содержит a test.js
. Этот файл является основным "загрузочным" файлом, который загружается во всех зависимостях. Я просто помещал случайные вызовы require()
в мой:
dojo.require('dijit.ProgressBar');
dojo.require('dijit.Tree');
И это должно сделать это. В основном, при запуске утилиты сборки против вашего HTML файла (тот, который содержит ссылку на dojo.js), убедитесь, что все зависимости найдены, начиная с вершины.
Примечание: система сборки создает каталог release
со встроенным выходом, но сначала он немного вводит в заблуждение - он, кажется, уменьшил каждый отдельный файл, но если вы посмотрите на свой фактический файл начальной загрузки (my/test.js
, в этом случае), это будет объединенный, миниатюрный файл с (я полагаю) все, что вам нужно для запуска вашего приложения.
В противном случае, если вы используете стиль AMD require()
(как в require.js), вы можете использовать его инструмент оптимизации. Согласно сайту, он будет:
-
Объедините все зависимые файлы (включая сам require.js) в один файл. Он анализирует вызов
require()
, чтобы выяснить, какие файлы ему нужно объединить. -
Измените свой JavaScript, используя либо UglifyJS (по умолчанию), либо Closure Compiler.