Есть ли библиотека.NET для минимизации Javascript?
Я программно создаю файлы javascript из веб-приложения.NET и хотел бы уменьшить его, прежде чем передать его пользователю? Есть ли библиотека или техника для этого на лету?
Поблагодарить
6 ответов
Если вы просто хотите иметь возможность минимизировать строку javascript в C# перед сохранением ее в файл, я бы использовал для этой цели либо MS Ajax Minifier, либо YUI-компрессор.net. Оба из них предоставляют API, который позволяет вам сделать это. Вот пример использования ajax minifier:
var minifier = new Microsoft.Ajax.Utilities.Minifier();
var minifiedString = minifier.MinifyJavaScript(unMinifiedString);
Использование YUI Compressor для.net:
var minifiedString = JavaScriptCompressor.Compress(unMinifiedString);
И библиотеки Minizer ajax, и библиотеки YUI Compressor доступны через Nuget.
Почему бы не использовать написанный javascript minifier непосредственно в.NET (попробуйте, если он работает как код JScript). На ум приходит Uglify.js...
Мы используем C# порт JSMIN: http://www.koders.com/csharp/fidC8F76D32D2FB3B213046C30CD8B362820FFFD604.aspx?s=file
Это работает довольно хорошо.
Я использую это вручную.
http://dean.edwards.name/packer/
я сжимаю файлы, загружаю, затем отменяю пакет, поэтому у меня нетронутый исходный код я упаковываю только производственный код.
Вы можете использовать Closure Compiler, но я бы не советовал сокращать файлы каждый раз, когда пользователь посещает ваш сайт. Гораздо лучше собрать все файлы перед развертыванием новых коммитов. Посмотрите на эту статью об инструментах.
Ну, я думаю, есть три вещи, которые нужно сделать, чтобы минимизировать файл скрипта:
- Укоротить длинные переменные
- Удалить комментарии
- Удалить ненужные пробелы (табуляция, пробел, возврат каретки)
Все они относительно просты для замены во время выполнения, но потребуют немного написания кода. Для сокращения переменных найдите в их области одинаковые переменные, длина которых превышает, например, 2 буквы. Затем используйте сокращение и выполните это в блоке кода (область действия переменной).
Удаление комментариев будет простым. Удаление пробелов также легко. Для однострочного, найти //
и удаляйте до возврата каретки / перевода строки. Пробелы, заменяйте табуляции пробелом, несколько пробелов пробелом, а возврат каретки / переводы новой строки пробелом.