сжатие файлов .js и .css при нажатии на сайт - PullRequest
8 голосов
/ 16 марта 2012

Я даже не уверен, возможно ли что-то, что я хочу, поэтому я прошу вас, ребята, просто дать мне знать, если кто-то делал это раньше.Итак, моя цель состоит в том, чтобы, когда я нажимаю на «Опубликовать» веб-сайт в VS2010, сжать все файлы javascript в один, то же самое с css, а затем в моем файле макета изменить ссылки из всех различных файлов js и css только на эти два слиянияиз них.Это выполнимо?Или, может быть, это выполнимо, но более ручным способом?

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

Большое спасибо!

Ответы [ 6 ]

13 голосов
/ 16 марта 2012

Это встроено в ASP.net 4.5 . Но пока вам стоит взглянуть на следующие проекты

  • YUI Compressor
    • Целью этого проекта является сжатие любого Javascript и каскадных таблиц стилей до эффективного уровня, который работает точно так же, как и исходный источник, до его минимизации.
  • Кассета
    • Кассета автоматически сортирует, объединяет, минимизирует, кэширует и версии всех ваших шаблонов JavaScript, CoffeeScript, CSS, LESS и HTML.
  • RequestReduce
    • Супер простое решение для автоматического разбрызгивания, минификации и пакетирования
    • Нет необходимости указывать RequestReduce, где находятся ваши ресурсы
    • Ваш CSS и Javascript могут быть где угодно - даже на внешнем хосте
    • RequestReduce находит их во время выполнения автоматически
  • SquishIt
    • SquishIt позволяет вам сжать немного JavaScript и CSS. А также немного LESS и CoffeeScript.
  • Combres
    • .NET библиотека, позволяющая минимизировать, сжимать, комбинировать и кэшировать ресурсы JavaScript и CSS для веб-приложений ASP.NET и ASP.NET MVC. Проще говоря, это помогает вашим приложениям ранжироваться лучше с YSlow и PageSpeed.
  • Chirpy
    • Смешивает, минимизирует и проверяет ваш javascript, таблицу стилей и файлы без точек. Chirpy также может автоматически обновлять T4MVC и другие шаблоны T4.

Скотт Хансельман написал хороший обзорный пост в блоге об этой теме некоторое время назад.

3 голосов
/ 16 марта 2012

Я проголосовал за ответ, в котором упоминалась кассета, но я подробнее опишу этот конкретный выбор.Кассета довольно настраиваема, но в наиболее распространенном варианте она позволяет ссылаться на ресурсы CSS и Javascript с помощью синтаксиса, подобного следующему:

Bundles.Reference("Scripts/aFolderOfScriptsThatNeedsToLoadFirst", "first");
Bundles.Reference("Scripts/aFolderOfScripts");
Bundles.Reference("Styles/aFolderOfStyles");

Затем вы должны отобразить их на своих главных страницах или страницах макета следующим образом:1004 *

@Bundles.RenderStylesheets()
@Bundles.RenderScripts("first")
@Bundles.RenderScripts()

Во время разработки ваши скрипты и стили будут включены в виде отдельных файлов, и кассета попытается помочь вам, обнаружив изменения и попытавшись заставить браузер перезагрузить эти файлы.Этот подход отлично подходит для отладки таких библиотек, как нокаут, когда они делают то, чего вы не ожидаете.И, что самое приятное, когда вы запускаете сайт, вы просто изменяете web.config, а кассета минимизирует и объединяет все ваши файлы в как можно меньшее количество пакетов.

Более подробную информацию вы можете найти в их документации (что довольно хорошо, хотя иногда отстает от разработки): http://getcassette.net/documentation/getting-started

1 голос
/ 16 марта 2012

Я не слышал о минимизации публикации.Я думаю, что использование должно выбирать между динамическим уменьшением типа SquishIt или временем компиляции как YuiCompressor или AjaxMinifier.

Я предпочитаю время компиляции.Я не думаю, что очень важно компилировать время, изменяющее файлы.Если у вас огромные строки кода css / js, вы можете выбрать это действие только для компиляции релиза, и если это поможет опубликовать эти файлы только в необходимых конфигурациях сборки.

1 голос
/ 16 марта 2012

Прежде чем я настроил событие после сборки , он запустил простой пакетный файл, который минимизирует ваши исходные файлы. Затем, если вы находитесь в режиме выпуска (не в режиме отладки), вы бы ссылались на свернутые исходные файлы. http://www.west -wind.com / блог / сообщений / 2007 / Jan / 19 / обнаруживая-ASPNET-Debug-режим

1 голос
/ 16 марта 2012

Посмотрите на Компрессор YUI @ codeplex.com , это может быть очень полезно.

0 голосов
/ 16 марта 2012

Я не знаю, есть ли какой-нибудь возможный способ каким-либо образом подключиться к функциональности с помощью этой кнопки «Опубликовать» / какой бы она ни была, но, безусловно, возможен такой «статический процесс сборки».

Лично я использую Apache ANT, чтобы написать то, что вы там описали. Итак, вы разрабатываете свои несжатые файлы js / html / css, и когда вы закончите, вы вызываете как ant build, который затем сокращает, сжимает, разбивает и публикует все ваше веб-приложение.

Пример сценария: https://github.com/jAndreas/typeof-NaN-2.0/blob/master/build/build.xml

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...