Комплекты кассет и комплекты MVC4
-
29-10-2019 - |
Вопрос
В настоящее время я работаю над прототипом решения ASP.NET MVC 3, которое будет использоваться в качестве основы для нескольких перезаписей проекта (из веб-форм).
Одна из моих целей - реализовать управление скриптами в приложении, а не то, что у нас есть в настоящее время.
MVC 3 имеет недостаток IMHO: если вам нужен конкретный сценарий, указанный в частичном представлении или представлении шаблона - вы можете либо потерять контроль над тем, где находится блок сценария в отображаемом HTML, либо вам придется укажите каждый зависимый файл javascript в родительском представлении.
Я серьезно подумывал об использовании http://getcassette.net/ в качестве основы для решения описанной проблемы. Однако последний выпуск бета-версии MVC4 заставил меня снова усомниться в себе: пакеты MVC действительно похожи на пакеты Cassette, и я снова запутался:
-
Следует ли мне реализовать кассету сейчас, а затем перейти на пакеты MVC4?
-
Должен ли я сам реализовать какой-нибудь упрощенный менеджер сценариев (например, вспомогательный класс Scripts в предварительном просмотре MVC4), а затем перейти на MVC4
-
Или мне следует интегрировать кассету в проект и надеяться, что она будет более перспективной, чем реализация MVC (мне действительно не нравится этот вариант прямо сейчас только из-за огромного количества зависимостей, с которыми поставляется кассета).
У меня нет опыта работы с самой кассетой, и мне очень сложно провести сравнение самостоятельно, и я буду признателен за любые ответы или подсказки.
ИЗМЕНИТЬ: Я просто подумал, что есть еще один вариант: установить бета-пакет nuget для объединения MVC: https:// nuget. org / packages / Microsoft.Web.Optimization
ЗАКЛЮЧЕНИЕ: Чем больше я смотрю на реализацию пакета MVC4, тем большую разницу я замечаю: пакеты MVC4 не решают проблему MVC3, описанную выше - они просто объединяют и минимизируют. Более того, кассета не только способна отображать теги сценария в определенном месте, но также может упорядочивать их в правильном порядке, что нетривиально. Так что на данный момент я не удовлетворен ни одним из решений, и я попытаюсь придумать свою собственную минималистичную реализацию в надежде, что ситуация улучшится в будущем.
Но если вы не боитесь добавлять в проект 5+ зависимостей и кучу изменений web.config - выбирайте кассету. Я надеюсь, что в какой-то момент он будет обновлен, чтобы использовать объединение MVC внутри, чтобы уменьшить дублирование функциональности, и, надеюсь, он станет более модульным.
ОБНОВЛЕНИЕ: Начиная с версии 2.0 Cassette больше нет необходимости включать кофейный скрипт и другие функции Cassette, если вам просто нужны пакеты и разрешение зависимостей js. Так что на данный момент Cassette для меня явный победитель.
Решение
Информация о связке 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 также добавлена новая функция, которая делает его легко уменьшить или «минимизировать» размер загружаемого контента.
Похоже, это то же самое, что и Cassette.При прочих равных используйте решение, родное для ASP.NET MVC.
Другие советы
В конечном итоге я использовал Cassette в своем последнем проекте, и он работает очень хорошо.Если вы используете NuGet, для него действительно не так много настроек, поэтому я думаю, что было бы не так уж сложно использовать Cassette сейчас, а затем переключиться позже, если вы захотите.
Еще одна вещь, которую следует учитывать, - это то, что Cassette выполняет меньше компиляции.Я не уверен, делает ли это пакет MVC4 или нет, так как у меня не было времени прочитать об этом.
Cassette по-прежнему является интересной альтернативой, поскольку в ней есть встроенная поддержка less и coffescript.Он также поддерживает шаблоны HTML, если вас интересуют фреймворки mvc на стороне клиента (магистраль, нокаут и т. Д.)
Так же, как обновление этого, поддержка LESS и CoffeeScript была добавлена в пакет обновления 2 для Visual Studio 2012, поэтому он начинает выглядеть все больше и больше, как будто было бы лучше добавить необходимые преобразования в собственную реализациюBundling / Minification, поддерживаемые MVC4, чем в долгосрочной перспективе с Cassette.