Какой Javascript minifier (cruncher) делает то же самое, что Google использует для своих JS API?
Я являюсь разработчиком API Карт Google (javascript). Я заметил, что Google использует Javascript minifier, который имеет следующие функции:
- Сокращает переменные, свойства, аргументы, классы, имена функций и методов, запутывая код. (например, function1 -> a, function2 -> b, function3 -> c)
- Некоторые переменные, классы, свойства и методы могут быть помечены так, чтобы их нельзя было сократить, поэтому их имя остается таким же, как описано в руководстве по API.
- Он перезапускается в каждом подрыве API, подобно задаче сборки, я заметил, что из-за сжатых имен меняется от одной версии к другой.
Я не нашел во всем интернете миниатюру Javascript с этими функциями. Кто-нибудь знает один?
6 ответов
Google теперь открыл минификатор, который они используют, наряду с некоторыми другими внутренними вкусностями JavaScript.
Это все под названием "Инструменты закрытия" и было объявлено ранее в этом месяце.
Вот известные мне минифайеры: упаковщик Дина Эдвардса; Компрессор YUI; JSMIN; и додзё компрессор
В дополнение к этому, GWT-компилятор делает немало для создания эффективных файлов JavaScript из файлов Java. Меня не удивит, если это то, что они используют.
Также есть порт.NET YUI Compressor, который позволяет:-
- интегрировать минификацию / объединение файлов в события после сборки Visual Studio
- интегрировать в TFS Build (включая CI)
- если вы хотите просто использовать DLL в своем собственном коде (например, на минимизации на лету).
Я считаю, что YUICompressor делает #1, за исключением имен функций, и #2, используя специальный синтаксис, который удаляется во время сжатия.
№ 3 - это просто задача сборки, а не функция компрессора.
Простой онлайн-javascript minifier, основанный на сейфе в dojo, можно найти по адресу http://netspurt.com/
То, что вы описываете, это "обфускатор", а не минификатор, и их легко найти, выполнив поиск "Javascript obfuscator".
Наш SD Thicket ECMAScript Obfuscator одновременно и запутывает, и минимизирует.