Процесс сжатия JSA разделен на два этапа
Первым шагом является сжатие синтаксиса, похожее на Dojo SharinkSafe, но безопаснее, чем его и более эффективно.
Второй шаг - сжатие текста, в настоящее время
Алгоритм компрессии компрессора JavaScript.
(http://dean.edwards.name/packer/)
Они могут быть установлены в окне «Настройки».
По умолчанию сначала используется сжатие синтаксиса. Сжатие текста используется на исходной основе, когда файл превышает 1000byte, а текстовое сжатие все еще может быть сжато до 90% от исходного размера.
Вот пример сжатия скрипта, чтобы показать функции сжатия и оптимизации синтаксиса JSA.
Кода -копия выглядит следующим образом:
пытаться {
// xxxx ();
}
поймать (e) {
yyyy ();
функция f1 () {
}
}
Окончательно {
zzzz ();
}
Функция F2 (var1) {
var var2 = 2;
var var3 = 3;
var withobject = {var2: -2}
с (withObject) {
оповещение (var2);
}
}
Сжатые результаты (отформатированы для легкого доступа):
Кода -копия выглядит следующим образом:
zzzz ();
функция F2 (a) {
var var2 = 2;
var b = 3;
var c = {var2: -2};
с (c) {
оповещение (var2);
}
}
Сравнение с другими инструментами сжатия для коэффициентов сжатия:
1. Javascript компрессор (http://dean.edwards.name/packer/)
С его собственным кодом инструмента сжатия в качестве примера (v2.02) упаковщик сжался с размером 7428 байтов (удалить комментарии).
И наш инструмент сжатия может быть сжат до 7 256 байтов
7256 /7428 = 0,9768443726440496
2. Dojo shrinksafe (грубые вещи неэффективны и опасны. Рекомендуется, чтобы исходный пользователь изменил его как можно скорее)
С его собственным исходным кодом в качестве примера (v0.4.1):
Он сжимает размер до 149 518 байтов сам по себе, и мы можем сократить его до 81 261 байта после сжатия
81261 /149518 = 0,5434864029748927
Инструкции по безопасности:
1. Javascript компрессор
Основываясь на сжатии текста, я не смотрел на логику в ней внимательно, но возможность этой проблемы сжатия очень низкая. Наш инструмент сжатия также использует свой алгоритм сжатия в JSI 1.1 A8 и
Не было обнаружено исключения в тесте его интегрированной сторонней библиотеки. И есть также известная структура jQuery, поэтому я считаю, что проблем не будет.
Дополнение (2007-03-12): Сегодня я обнаружил, что у этой вещи есть ошибка при анализе многострочного строкового синтаксиса JavaScript. Тем не менее, эта проблема больше не будет существовать после сжатия синтаксисом JSA.
2. Dojo ShrinkSafe опасно! ! ! ! !
Замените длинное локальное имя переменной на более короткое имя, которое является чрезвычайно небезопасным инструментом сжатия, например:
Кода -копия выглядит следующим образом:
function () {
var withobject = {variable1: 1}
var переменная1 = 2;
с (withObject) {
оповещение (переменная1);
}
}
Сжатие к:
Кода -копия выглядит следующим образом:
function () {
var _1 = {variable1: 1};
var _2 = 2;
с (_1) {
оповещение (_2);
}
}
Это, очевидно, неправильно, этот мусор не обращает внимания на какой -то специальный синтаксис и динамику JavaScript.
Обработка не проводится для функций Eval, операций с уловами и с операторами.
Напротив, JSA является самым безопасным и наиболее эффективным инструментом сжатия, который я знаю в настоящее время.
JSA не только предоставляет функции сжатия кода, но также может использоваться для форматирования и анализа сценариев.
Анализ скриптов может использоваться для просмотра информации о скрипте и найти потенциальные проблемы в сценариях.
Например, проверьте функции и переменные, объявленные в сценарии.
Эти внешние переменные были использованы. и т. д. . Полем