Средства оптимизации в ShrinkSafe и другие часто используемые параметры

При подготовке к эксплуатации практически любого приложения вам потребуется применить инструмент ShrinkSafe для уменьшения объема, занимаемого программным кодом. Несмотря на то что предыдущие примеры создают оптимизированные сборки, т.е. наряду с внедрением строк шаблонов они минимизируют размеры файлов dojo.js и form.js, тем не менее ShrinkSafe позволит минимизировать каждый файл в сборке.

Вспомните, что объем, передаваемый «по кабелю», начинает обретать смысл, когда речь заходит о производительности с точки зрения пропускной способности. Файлы могут передаваться в сеть с тем же размером, какой они имеют на стороне сервера, однако большинство веб-серверов способны выполнять сжатие с помощью утилиты gzip, если броузер окажется в состоянии обрабатывать такие файлы. Инструмент ShrinkSafe минимизирует файлы за счет удаления таких элементов, как лишние пробелы, комментарии и т. д.; кроме того, размеры файлов могут быть уменьшены еще больше за счет устранения повторяющихся общедоступных символов, таких как dojo, dijit и ваших собственных лексем.

Еще одна примечательная особенность ShrinkSafe заключается в том, что этот инструмент никогда не изменяет общедоступный прикладной программный интерфейс в противовес некоторым инструментам JavaScript, которые пытаются шифровать программный JavaScript, применяя регулярные выражения или другую замысловатую логику для «защиты» сценариев.


Вообще говоря, попытки защитить программный код JavaScript лишены практически какоголибо смысла. Поскольку JavaScript – это язык интерпретирующего типа, у пользователя вашего приложения практически наверняка будет возможность получить доступ к вашему исходному программному коду, а чтобы с помощью отладчика превратить защищенный сценарий в более читабельную форму, требуется приложить не так много усилий.

Проще говоря, ShrinkSafe уменьшает размеры файлов без изменения общедоступных имен. Фактически, если вы заглянете в файл form.js, созданный в предыдущих примерах, то сможете убедиться, что Shrink Safe удалил все комментарии и/или лишние пробельные символы, включая символы перевода строки, и заменил все частные имена более короткими. Обратите внимание, что замена всех имен более короткими, не несущими смысла версиями, опрвдана только для кодирования и при этом совсем не полезна при отладке.

Давайте изменим существующий профиль:
• Добавим минимизацию всех файлов в выпуске с помощью параметра optimize="shrinksafe"
• Определим текст примечания, которое должно находиться в начале каждого минимизированного файла JavaScript, входящего в состав дополнительного (вымышленного) модуля foo, сохранив этот текст в файле CUSTOM_FILE_NOTICE.txt
• Определим текст примечания, которое должно находиться в начале окончательного файла form.js, воспользовавшись тем же самым файлом CUSTOM_FILE_NOTICE.txt
• Определим собственное имя каталога для выпуска с помощью параметра releaseName="form"
• Определим собственный номер версии сборки с помощью параметра version="0.1.0."

Ниже дается содержимое измененного файла профиля form.profile.js, приводившегося выше в примере 16.1.


Обратите внимание, что примечания должны оформляться в стиле комментариев JavaScript. Относительный путь к файлам примечаний определяется от каталога util/buildscripts, но можно указать и абсолютный путь:
dependencies ={
layers: [
{
copyrightFile : "CUSTOM_LAYER_NOTICE.txt",
name: "form.js",
dependencies: [
"dijit.form.Button",
"dijit.form.Form",
"dijit.form.ValidationTextBox"
]
}
],
prefixes: [
[ "dijit", "../dijit" ],
[ "foo", "../foo", "CUSTOM_FILE_NOTICE.txt" ]
]
};

Команда запуска сборки в этом случае получилась достаточно простой; она помещает результаты в каталог release/form, расположенный по соседству с каталогом dojo, содержащим исходные тексты:
bash build.sh profile=form action=release optimize=shrinksafe
releaseName=form
version=0.1.0

Чтобы задействовать получившуюся версию библиотеки в своем приложении, достаточно просто указать пути к сжатым файлам dojo.js и form.js в тегах SCRIPT в заголовке страницы, как показано ниже.

При этом файл dojo.js должен подключаться первым, потому что form.js зависит от него:

Fun With Forms!






Вот и все.


В этом случае приложению потребуется выполнить всего два синхронных запроса для загрузки в страницу программного кода JavaScript (в который уже включены все необходимые шаблоны). Доступ к остальным ресурсам, подключаемым к сборке через список prefixes, будет обеспечиваться стандартными инструкциями dojo.require. Если вы твердо уверены, что никакие другие дополнительные ресурсы JavaScript, помимо dojo.js и вашего файла слоя, вам не потребуются, вы можете подключить только отдельные ресурсы из структуры каталогов с выпуском. Однако при этом вам придется проделать дополнительную работу по выявлению зависимостей со встроенными темами CSS, такими как tundra, потому что некоторые таблицы стилей могут использовать относительные пути и относительные URL в инструкци ях @import..



Оцените статью: (0 голосов)
0 5 0

Статьи из раздела Dojo на эту тему:
Вопросы производительности
Запуск сборки
Настройка профиля
Настройка профиля (более грамотный вариант)
Платформа тестирования Dojo (DOH)