HTML Diff
0 added 0 removed
Original 2026-01-01
Modified 2026-02-26
1 <p>В предыдущем уроке мы дошли до следующей структуры:</p>
1 <p>В предыдущем уроке мы дошли до следующей структуры:</p>
2 <p>В этом случае:</p>
2 <p>В этом случае:</p>
3 <ul><li>Модель предметной области описана с помощью ORM (в других случаях это не обязательно, ведь хранилище отделено от модели)</li>
3 <ul><li>Модель предметной области описана с помощью ORM (в других случаях это не обязательно, ведь хранилище отделено от модели)</li>
4 <li>Функция-обработчик обращается к модели для выполнения запрошенных операций и выводит необходимые данные в шаблон</li>
4 <li>Функция-обработчик обращается к модели для выполнения запрошенных операций и выводит необходимые данные в шаблон</li>
5 <li>Шаблон описывает представление конкретной страницы и строится на данных, переданных из функции-обработчика</li>
5 <li>Шаблон описывает представление конкретной страницы и строится на данных, переданных из функции-обработчика</li>
6 </ul><p>Описанная структура называется<strong>Model-View-Controller</strong>(MVC version 2). Эта структура устроена так:</p>
6 </ul><p>Описанная структура называется<strong>Model-View-Controller</strong>(MVC version 2). Эта структура устроена так:</p>
7 <ul><li><strong>M</strong>- модель предметной области</li>
7 <ul><li><strong>M</strong>- модель предметной области</li>
8 <li><strong>V</strong>- шаблон</li>
8 <li><strong>V</strong>- шаблон</li>
9 <li><strong>C</strong>- наша функция-обработчик (в других фреймворках могут быть другие сущности)</li>
9 <li><strong>C</strong>- наша функция-обработчик (в других фреймворках могут быть другие сущности)</li>
10 </ul><p>MVC разделяет приложение минимум на три слоя и определяет, как слои могут взаимодействовать друг с другом. Это важно для создания модульных приложений - таких, которые легко развивать и модифицировать. При этом никто не запрещает добавлять новые и дробить текущие слои, все это уже зависит от сложности самого приложения.</p>
10 </ul><p>MVC разделяет приложение минимум на три слоя и определяет, как слои могут взаимодействовать друг с другом. Это важно для создания модульных приложений - таких, которые легко развивать и модифицировать. При этом никто не запрещает добавлять новые и дробить текущие слои, все это уже зависит от сложности самого приложения.</p>
11 <p>MVC может быть устроена так:</p>
11 <p>MVC может быть устроена так:</p>
12 <p>Рассмотрим схему подробнее:</p>
12 <p>Рассмотрим схему подробнее:</p>
13 <ul><li><strong>M</strong>- ядро приложения, его бизнес-логика.<strong>M</strong>не знает ничего о других частях приложения и не может на них влиять</li>
13 <ul><li><strong>M</strong>- ядро приложения, его бизнес-логика.<strong>M</strong>не знает ничего о других частях приложения и не может на них влиять</li>
14 <li><strong>V</strong>- получает данные от<strong>C</strong>и иногда от<strong>M</strong>, но такое не приветствуется. И уж точно<strong>V</strong>не должен знать ничего о базе данных. Кстати, этим грешат начинающие разработчики, которые выполняют SQL-запросы прямо из шаблонов</li>
14 <li><strong>V</strong>- получает данные от<strong>C</strong>и иногда от<strong>M</strong>, но такое не приветствуется. И уж точно<strong>V</strong>не должен знать ничего о базе данных. Кстати, этим грешат начинающие разработчики, которые выполняют SQL-запросы прямо из шаблонов</li>
15 <li><strong>C</strong>- использует<strong>M</strong>для выполнения запрашиваемых операций и отвечает за генерацию<strong>V</strong></li>
15 <li><strong>C</strong>- использует<strong>M</strong>для выполнения запрашиваемых операций и отвечает за генерацию<strong>V</strong></li>
16 </ul><p>MVC является<strong>архитектурным шаблоном</strong>или<strong>паттерном проектирования</strong>- это такая повторяемая архитектурная конструкция, которая решает проблему проектирования в рамках некоторого распространенного контекста. В нашем случае контекст - обработка HTTP-запросов.</p>
16 </ul><p>MVC является<strong>архитектурным шаблоном</strong>или<strong>паттерном проектирования</strong>- это такая повторяемая архитектурная конструкция, которая решает проблему проектирования в рамках некоторого распространенного контекста. В нашем случае контекст - обработка HTTP-запросов.</p>
17 <p>Паттернов проектирования очень много на все случаи жизни. Некоторые из них очень простые и ближе к<strong>идиомам</strong>- каким-то локальным участкам кода, которые принято писать тем или иным способом в конкретном языке.</p>
17 <p>Паттернов проектирования очень много на все случаи жизни. Некоторые из них очень простые и ближе к<strong>идиомам</strong>- каким-то локальным участкам кода, которые принято писать тем или иным способом в конкретном языке.</p>
18 <p>Некоторые паттерны - всеобъемлющие, подобные MVC. Они определяют глобальные ограничения, но ничего не говорят о способе реализации. В любом случае паттерны - не догма и не формальная спецификация. Всегда есть место для самостоятельного выбора.</p>
18 <p>Некоторые паттерны - всеобъемлющие, подобные MVC. Они определяют глобальные ограничения, но ничего не говорят о способе реализации. В любом случае паттерны - не догма и не формальная спецификация. Всегда есть место для самостоятельного выбора.</p>
19 <p>В MVC заложена довольно простая, но важная идея - разделение приложения на слои с четкими границами. Такой подход позволяет развивать каждый слой независимо от других, если у вас правильно выстроены зависимости между ними.</p>
19 <p>В MVC заложена довольно простая, но важная идея - разделение приложения на слои с четкими границами. Такой подход позволяет развивать каждый слой независимо от других, если у вас правильно выстроены зависимости между ними.</p>
20 <p>Обратите внимание, что в MVC все связи однонаправленные. Другими словами, в MVC нет двух слоев, которые знают друг о друге одновременно. Если один слой знает о другом, то второй ничего не знает о первом, и наоборот. Модульность - это один из ключевых факторов, делающих приложения по-настоящему качественными с точки зрения разработки. Как вы увидите позже, многие веб-фреймворки построены именно по модели MVC с небольшими модификациями, не влияющими на ключевую идею.</p>
20 <p>Обратите внимание, что в MVC все связи однонаправленные. Другими словами, в MVC нет двух слоев, которые знают друг о друге одновременно. Если один слой знает о другом, то второй ничего не знает о первом, и наоборот. Модульность - это один из ключевых факторов, делающих приложения по-настоящему качественными с точки зрения разработки. Как вы увидите позже, многие веб-фреймворки построены именно по модели MVC с небольшими модификациями, не влияющими на ключевую идею.</p>