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