Модел-изглед-контролер (MVC), обяснен чрез поръчка на напитки в бара

Ако сте били в бар, тогава MVC не е толкова труден.

Рамките на модел-изглед-контролер (MVC) са важна част от изграждането на модерни уеб приложения. Влезте в стая на уеб разработчици и най-вероятно ще бъдете засипани със споменавания за Ruby on Rails, Angular или Django.

По-общо, MVC логиката може да се използва за описване на почти всеки процес на уеб разработка, който използва език като PHP, Ruby, Python или JavaScript.

Въпреки това…

Много уеб разработчици се ориентират в този мистериозен свят, като проникват през плевелите с усмивка на лице. Когато старши разработчик или съотборник трябва да погледне кода от един от тези разработчици, те веднага ще извикат, последвано от бърза лекция за често срещаните практики за кодиране.

Това не е начин да се премине през живота! Всъщност моделът на MVC в съвременната уеб разработка може лесно да бъде обяснен чрез поръчка на напитка от барман. И да, това означава, че ако сте били в бар, тогава можете да разберете основния структурен модел, споделен от всички уеб приложения.

Смело хакване през препятствията, докато реалността не се удари

Какво представлява шаблонът MVC?

  • Модел : Структурира вашите данни в надеждна форма и ги подготвя въз основа на инструкциите на контролера
  • Изглед : Показва данни на потребителя в лесен за разбиране формат въз основа на действията на потребителя
  • Контролер : Приема потребителски команди, изпраща команди към модела за актуализации на данни, изпраща инструкции за преглед за актуализиране на интерфейса.

Или под формата на диаграма:

Това беше скучно. В бара.

Начинаещ уеб разработчик влиза в лента ...

Влизате в бар в петък вечер и се приближавате до бармана. Тъй като барът вече е претъпкан, вие прокарвате тълпа, докато най-накрая привлечете вниманието на бармана, и изригвате: „Един Манхатън, моля!“

Вие сте потребителят и вашата поръчка за напитки е заявката на потребителя . За вас Манхатън е просто любимата ви напитка и вие доста надеждно знаете, че това ще бъде сладка и вкусна напитка.

Барманът ви кима бързо. За бармана Манхатън не е вкусна напитка, а просто поредица от стъпки:

  1. Грабнете чаша
  2. Добавете уиски
  3. Добавете вермут
  4. Добавете горчиви
  5. Разбъркайте напитката
  6. Добавете череша
  7. Поискайте кредитна карта и таксувайте.

Мозъкът на бармана е контролерът . Щом произнесете думата „Манхатън“ на език, който те разбират, работата започва. Тази работа по природа е подобна на приготвянето на маргарита или ягодово дайкири, но използва различни съставки, които никога няма да бъдат объркани. Барманът може да използва само инструментите и ресурсите, които са зад бара. Този ограничен набор от инструменти е моделът и включва следното:

  • Ръцете на барман
  • Шейкъри / оборудване за смесване
  • Течности
  • Смеси
  • Очила
  • Гарнитури

Може би в по-любителския бар може да имат помощник-робот! Или автоматичен миксер за напитки. Няма значение за вашия конкретен барман, който може да използва само наличните ресурси.

И накрая, готовата напитка, която можете да видите и консумирате, е гледката. Изгледът се изгражда от ограничените опции от модела и се подрежда и предава чрез контролера (т.е. мозъка на бармана).

Поуки

  • Искате ли още едно питие? Крещенето на празната ви чаша, гледката, няма да ви донесе абсолютно никаква полза. Трябва да говорите с бармана.
  • Времето, прекарано между бармана, чул искането, и започването на създаването на напитката трябва да бъде абсолютно минимално. Това понякога е известно като „слаб контролер“ - с други думи, контролерът трябва да съдържа минимално количество логика и да делегира колкото е възможно повече на модела. Страхотният барман не само ще запомни рецепти, но и ще приготвя съставките и инструментите по надежден начин всяка вечер, така че е необходимо минимално количество търсене и подреждане, след като клиентите започнат да поръчват.
  • Може ли барманът да излее всички съставки директно в устата на клиентите и да очаква клиентът да го размахне и да смеси напитката? Да, вероятно предполагам. Искате да запазите колкото се може повече от вашата логика в модела, за разлика от изгледа. С други думи, приготвянето на напитката зад бара е за предпочитане пред смесването в устата на клиента.
  • Ако поръчате бира, бармана едва ли ще трябва да направи нещо. Може би просто ще свалят капачката и ще ви предадат питието. Като се има предвид това, все още трябва да поискате бармана. Бирата няма да се появи магически пред вас.

Обвързване с връзката към уеб разработката

Ето как се развива същият процес в модерно уеб приложение:

  • Потребителят прави заявка по маршрут, да речем / дома.
  • В контролера получава това искане и дава определен набор от поръчките, които са свързани с този маршрут. Тези инструкции могат да бъдат или за изглед, който да актуализира или да обслужва определена страница, или за модела да изпълнява специфична логика. Да приемем, че тази заявка има свързана логика.
  • Моделът изпълнява логиката, изтегля от база данни и изпраща обратно последователен отговор въз основа на инструкциите на контролера.
  • След това контролерът предава тези данни на изгледа, за да актуализира потребителския интерфейс.

Винаги, когато влезе заявка, тя първо трябва да отиде до контролера, преди да може да бъде преобразувана в инструкции за изгледа или модела. Статията в уикипедията Ruby on Rails съдържа допълнителен преглед, ако търсите повече.

Всеки път, когато трябва да научите нова рамка за уеб разработка, ще срещнете този последователен модел на MVC. И ако дадена рамка се различава от това, можете да бъдете сигурни, че авторите ще обяснят новия си модел с препратки към MVC.

Това трябва да направи ученето много по-лесно - след като веднъж се развиете с MVC, всяка нова рамка може да се побере във вашата зона на комфорт.

Хареса ли ви това ръководство? Кажете ми в коментарите!