Выбор согласованного подхода к ответам Ajax в MVC

#javascript #ajax #asp.net-mvc #razor

#javascript #ajax #asp.net-mvc #razor

Вопрос:

В 95% случаев я возвращаю частичные представления на запросы ajax, отбрасывая ответ в предопределенное местоположение в существующем HTML.

Но теперь я хочу разработать последовательный подход к ответам ajax, и система частичного просмотра не всегда сокращает время (например, если я хочу отобразить дополнительные данные или сообщения об ошибках в ответе).).

Я колеблюсь между следующими 3 подходами, с плюсами / минусами для каждого.

Какой из них (ов) я выберу, окажет значительное влияние на мои базовые модели, подход к созданию плагинов JS и т. Д. Поскольку я буду развертывать подход по всему сайту, объем данных ответов ajax не является незначительным.

Я хотел бы получить отзывы от более опытных разработчиков:

  • Подтверждение / опровержение / добавление к плюсам / минусам, как я их вижу
  • Какие-либо подводные камни или ошибки, которых следует избегать?
  • Я делаю ошибки — например, есть ли способы избежать «минусов»?
  • Используете ли вы какой-либо из этих подходов в своих приложениях MVC? Что вы сочли лучшим и почему?

1. Верните HTML PartialView

Плюсы

  • Быстрый и простой в реализации
  • Отлично подходит, используя преимущества встроенной модульности MVC и шаблонов razor
  • Обработка ответов в JS может быть последовательной и стандартизированной — мы всегда имеем дело с результатом HTML

Минусы

  • Нет способа предоставить дополнительные данные или обратную связь об ошибках
  • Негибкий в целом
  • Недостаточно эффективно

2. Верните HTML как часть ответа JSON

Плюсы

  • Наиболее полный и гибкий вариант
  • Можно использовать razor для создания шаблонов представлений, допуская при этом дополнительные данные
  • Обработка ответов в JS может быть частично стандартизирована, если мы используем response.Errors response.SuccessHtml , и т.д.

Минусы

  • Самый сложный в реализации — требует рендеринга razor views вне контроллера
  • Предположительно, это самый «дорогой» вариант — накладные расходы на создание шаблонов для HTML-кода и физически большую часть данных в ответе

3. Возвращайте чистый JSON-ответ — без HTML

Плюсы

  • Самый быстрый ответ с точки зрения размера данных
  • Я видел, что этот подход рекомендован (не помню, где)

Минусы

  • Не очень похоже на MVC — да, мы можем использовать mustache или аналогичный шаблон, но было бы лучше повторно использовать те же самые razor views, что и при обычной загрузке страницы
  • Создание шаблонов Mustache может усложниться, если мы хотим начать использовать операторы if / else и другую логику в наших представлениях
  • Несколько возможностей для стандартизации обработки ответов JS

Комментарии:

1. «Не очень похоже на MVC» … но ни одна из них не является большой тенденцией к одностраничным приложениям, если вы имеете в виду только .Net MVC. Весь вопрос не по теме из-за «в первую очередь на основе мнений»

2. Что ж, я хотел бы проверить плюсы / минусы подходов, как я их вижу. Возможно, я не подумал обо всем, и у меня могут быть некоторые неправильные базовые предположения. Я рассматриваю этот вопрос как основанный на опыте, а не только на мнении.

3. «Мало возможностей для стандартизации обработки ответов JS» … конечно, есть … используйте коды состояния ответа и обещания с ajax, которые отклоняются, когда коды не равны 200

4. @charlietfl спасибо, это именно тот отзыв, на который я надеялся