Когда я должен использовать структуру MVC в JavaScript?

Я знаю, что эта тема, вероятно, станет субъективной, поэтому речь идет не о моем конкретном веб-приложении, над которым я работаю.

Для JavaScript я не работал с библиотеками MVC, такими как Backbone.js, но я вижу преимущество в развязке логики и просмотров. С другой стороны, просто не стоит тратить время на изучение структуры и адаптацию приложения к ее использованию. Более того, обработка всех просмотров в JavaScript делает SEO намного сложнее, я думаю.

Итак, как мне решить, имеет ли смысл использовать Backbone.js или аналогичную структуру, учитывая концепцию веб-приложения? На чем зависит решение?

Любая помощь, чтобы сделать вопрос более объективным, приветствуется.

Ответ 1

Существует множество клиентских javascript MVC (или MV *) фреймворков. Большинство из них, похоже, имеют другое представление о том, что такое MVC и как он должен работать вместе с вашим веб-приложением.

Вам следует рассмотреть структуру MV *, если сложность управления javascript на вашей стороне клиента становится сложной. Если у вас есть команда, создающая высокодинамичное одностраничное приложение (SPA), которое выполняет много асинхронной связи с бэкэнд, тогда вы захотите его рассмотреть. В противном случае легко получить очень грязный код javascript.

Структура MV * поможет вам одним или несколькими из следующих способов:

  • определяя, как должен быть структурирован код. Это делается в разной степени в зависимости от того, насколько упрямствуем рамки. Backbone, например, считает себя библиотекой, а не каркасом и, таким образом, оставляет больше решений, принимаемых пользователем
  • путем привязки html к модели. Поэтому, если ваши данные изменятся, страница будет автоматически обновлена ​​(и наоборот).
  • предоставляя полезные функции, такие как история URL (для одностраничных приложений) и валидация

Ответ 2

Я думаю, это зависит от вашего проекта. Вот контрольный список, который может помочь вам решить, следует ли использовать фреймворк MVF frontend или нет.

  • Множество запросов ajax для бэкэнд
  • Многие из ваших функций не требуют полной перезагрузки страницы. Подобно добавлению комментария, разбивки на страницы или бесконечного прокрутки.
  • У вас есть модели /REST API для бэкэнд. Вы можете просто копировать/использовать ту же структуру на передней панели.
  • Вы используете функции манипуляции логикой /dom на разных страницах.

Я добавлю больше, если найду больше очков. Это то, что я могу сейчас думать, и это не полный список. Любые предложения приветствуются.

Ответ 3

Как вы знаете, структура MVC может быть включена в javascript, используя backbone.js с underscore.js и другие подобные библиотеки, в основном фокусирующиеся на каждом поле формы как на свойство в сущности, так что объекты могут использоваться в разных целях. Структура MVC поддерживается для удобства в javascript Эта структура хороша для привязки событий, манипуляции с dom, сериализации и т.д.

В зависимости от цели приложения для выбора какой структуры подходит ее структура mvc или mvvm для javascript. Структура MVVM может быть включена в javascript через angular.js или knockoutjs или другие библиотеки для динамической привязки для просмотра компонента Javascript можно использовать
MVVM-архитектура будет полезна для сохранения привязки поля формы без перезагрузки или ajax. Существует много приложений, поддерживающих архитектуру в js, и я указал только на несколько.

например: Сериализовать входные данные формы в JSON, используя Backbone.js

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