Кассетные комплекты против MVC4-комплектов
В настоящее время я работаю над прототипом решения ASP.NET MVC 3, которое будет использоваться в качестве основы для нескольких переписываний проекта (из веб-форм).
Одна из целей, которые я ставлю перед собой, - это реализовать некоторое управление сценариями в приложении, а не то, что у нас есть в настоящее время.
MVC 3 имеет недостаток IMHO: если вам нужен определенный скрипт, указанный в частичном представлении или представлении шаблона - вы можете в конечном итоге либо потерять контроль над расположением блока скрипта в визуализированном HTML, либо указать каждый отдельный зависимый файл javascript в родительском представлении.,
Я серьезно подумывал об использовании http://getcassette.net/ в качестве основы для решения описанной проблемы. Однако последний выпуск бета-версии MVC4 заставил меня снова усомниться: пакеты MVC действительно похожи на пакеты кассет, и я снова запутался:
Должен ли я реализовать кассету сейчас, а затем перейти на пакеты MVC4?
Должен ли я сам реализовать какой-то упрощенный диспетчер скриптов (например, вспомогательный класс Scripts в предварительном просмотре MVC4), а затем перейти на MVC4
Или я должен интегрировать кассету в проект и надеяться, что она будет в большей степени ориентирована на будущее, чем реализация MVC (мне действительно не нравится этот вариант сейчас, просто из-за большого количества зависимостей, с которыми поставляется кассета).
У меня нет опыта работы с самой кассетой, и мне очень трудно проводить сравнение самостоятельно, и я буду признателен за любые ответы или подсказки.
РЕДАКТИРОВАТЬ: Я только что понял, что есть еще один вариант: установка бета-пакет Nuget для комплектации MVC: https://nuget.org/packages/Microsoft.Web.Optimization
ЗАКЛЮЧЕНИЕ: Чем больше я смотрю на реализацию пакета MVC4, тем большую разницу я замечаю: пакеты MVC4 не решают проблему MVC3, описанную выше - они просто выполняют пакетирование и минимизацию. Более того, кассета не только способна отображать теги сценария в определенном месте, но и способна упорядочивать их в правильном порядке, что не является тривиальным. Поэтому в настоящий момент меня не устраивает ни одно из решений, и я постараюсь придумать собственную минималистичную реализацию, надеясь, что ситуация улучшится в будущем.
Но если вы не боитесь добавить 5+ зависимостей и кучу изменений web.config в ваш проект - перейдите на кассету. Я надеюсь, что в какой-то момент он будет обновлен, чтобы использовать связывание MVC внутри, чтобы уменьшить дублирование функциональности, и, надеюсь, станет более модульным.
ОБНОВЛЕНИЕ: Начиная с версии 2.0 кассеты, больше нет необходимости включать кофейный сценарий и другие функции кассеты, если вам просто нужны пакеты и разрешение js-зависимостей. Так что на данный момент Кассета является явным победителем для меня.
4 ответа
Информация о комплектации ASP.NET MVC находится здесь: http://weblogs.asp.net/scottgu/archive/2011/11/27/new-bundling-and-minification-support-asp-net-4-5-series.aspx.
ASP.NET добавляет функцию, которая позволяет легко "связывать" или "объединять" несколько файлов CSS и JavaScript в меньшее количество HTTP-запросов. Это заставляет браузер запрашивать намного меньше файлов и, в свою очередь, уменьшает время, необходимое для их извлечения.
В следующем выпуске ASP.NET также добавлена новая функция, которая позволяет легко уменьшить или "минимизировать" размер загружаемого содержимого.
Похоже, это по сути то же самое, что и кассета. При прочих равных условиях используйте решение, которое является родным для ASP.NET MVC.
Я закончил тем, что использовал Кассету в своем последнем проекте, и он работает довольно хорошо. На самом деле, если вы используете NuGet, настройки не так уж и велики, поэтому я думаю, что не будет слишком сложно использовать кассету сейчас, а потом переключаться позже, если вы захотите.
Еще одна вещь, которую следует учитывать, это то, что кассета делает меньше компиляции Я не уверен, что комплектация MVC4 делает это или нет, так как у меня не было времени, чтобы прочитать об этом.
Кассета - все еще интересная альтернатива, поскольку она имеет встроенную поддержку less и coffescript. Он также поддерживает HTML-шаблоны, если вы заинтересованы в клиентских инфраструктурах mvc (backbone, knockout и т. Д.)
В дополнение к этому, в пакет обновления 2 для Visual Studio 2012 была добавлена поддержка LESS и CoffeeScript, поэтому все больше и больше выглядело так, как будто было бы лучше добавить, какие преобразования вам нужны, к собственной реализации Bundling/ Минификация поддерживается в MVC4, чем переход на кассету в долгосрочной перспективе.