Модель-представление-контроллер (обычно известный как MVC) — это шаблон проектирования программного обеспечения, обычно используемый для разработки пользовательских интерфейсов, который делит связанную логику программы на три взаимосвязанных элемента. Это делается для того, чтобы отделить внутреннее представление информации от того, как информация представляется пользователю и принимается от него.

Традиционно используемый для настольных графических пользовательских интерфейсов (GUI), этот шаблон стал популярным для разработки веб-приложений. Популярные языки программирования имеют фреймворки MVC, облегчающие реализацию шаблона. — Википедия

Короче говоря, MVC — это программная архитектура, которая помогает значительно упростить структуру веб-приложения; в сочетании со структурой RESTful API, и все безупречно на своих местах.

Структура MVC

Структура MVC состоит из 3 ключевых частей, составляющих эту замечательную структуру:

  • Модель, которая представляет модели баз данных со всеми типами, полями и хуками, характерными для них, которые могут быть MySQL, PostgreSQL, SQLite и т. д., в сочетании с продолжением для интеграции Node.js, Graphene, Flask- MySQL с Python для интеграции с Flask и т. д. или, если вы собираетесь работать с более современными базами данных, у нас есть Firebase и MongoDB, которые обеспечивают более простую интеграцию со всеми веб-фреймворками.

Примером модели может быть пользователь, который будет иметь имя, фамилию, адрес электронной почты и пароль, которые будут представлены полями и типом базы данных, а также крючками, такими как «encryptPassword» и «verifyPassword». ', который будет шифровать и проверять пароль при регистрации нового пользователя или входе существующего пользователя.

  • Просмотр, представляющий страницы или информацию, которые будут отображаться по определенным маршрутам. Например, у нас может быть «/users», который будет отображать информацию обо всех пользователях, и «/users/2», который будет отображать информацию о пользователе с идентификатором 2. Оба эти представления представляют собой представления, которые будут отображать информацию на основе на данных, полученных от внешнего интерфейса, таких как параметры URL или данные GET.

Примером представления/маршрута при работе с разными фреймворками на бэкенде и внешнем интерфейсе, такими как React + Express.js, может быть «/users/2», где при работе только с бэкэнд-фреймворком mvc мы покажем пользователю страницу профиля или страницу пользователя, в противном случае, если вы работаете с внешним и внутренним фреймворком, мы будем извлекать данные пользователя с идентификатором 2 из внутреннего маршрута и передавать их во внешний интерфейс. Посмотреть.

  • Контроллер, представляющий логику всего приложения; здесь мы позволим приложению, чтобы при попадании на маршрут «/users» мы отправили конкретные данные, запрошенные из модели; или, если URL-адрес «/users/2» нажат, мы хотим отправить данные о пользователе с идентификатором 2, а не о сообщениях в блоге или обо всех пользователях.

Примером контроллера может быть «authController», задачей которого будет регистрация пользователя путем получения имени, фамилии, адреса электронной почты и пароля, проверка полей на соответствие полям модели пользователя и, наконец, регистрация пользователя в базе данных. .

Помимо этих трех компонентов, приложение, разработанное с использованием структуры MVC, а также модели RESTful, будет поставляться в сочетании с каким-либо промежуточным программным обеспечением; промежуточное ПО определяется функциями, которые мы можем вызывать всякий раз при доступе к маршруту для дополнительной обработки данных, и ярким примером является случай, когда мы хотим проверить, авторизован ли пользователь для фактического доступа к запрошенным данным. Такой случай может быть, когда пользователь хочет получить доступ к маршруту «/users/2». Если он пользователь с идентификатором 2, он сможет сделать это без проблем, но если у него другой идентификатор или если он вообще не вошел в систему, мы захотим ограничить его доступ делаем ли мы это с помощью JWT или любых других технологий.

Из-за влияния, которое оказала эта программная архитектура, существует множество фреймворков, основанных на одних и тех же принципах, следующих точной ее модели. Такими примерами могут быть ASP.NET MVC (C#), Ruby on Rails (Ruby), Laravel (PHP), CodeIgniter (PHP), Blazer (C#), Django (Python), AngularJS (JavaScript), VueJS (JavaScript) и т. д.

Подведение итогов

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

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