Лёгкое и тяжёлое

Jun 01, 2015 22:09

В тяжёлом, монолитном Django есть встроенный ORM. Этот ORM тоже очень тяжёлый и, помимо прочего, web-aware. Если разработчик расширяет этот ORM новым типом поля, он может прямо там же, буквально одной строкой, определить, какой виджет будет представлять это поле в HTML-форме. Форма, разумеется, генерируется встроенным же модулем форм.

В лёгком и модульном Flask используются сторонние ORM, не являющиеся частью фреймворка, например, peewee или mongoengine. Эти ORM очень лёгкие, прямо-таки воздушные… Это была шутка. Эти ORM довольно-таки объёмисты, если говорить о коде, хоть и не имеют никакого понятия о вебе.

Формы во Flask также генерируются сторонним, весьма навороченным компонентом − WTForms. Этот компонент не имеет понятия об источниках данных (хотя в практике программирования HTML-форма в 99% случаев соединена с базой данных). Поэтому сопоставление поля базы данных виджету формы во Flask становится весьма нетривиальным делом. Например, панель управления Flask (Flask-Admin) имеет специальную, довольно хитрую прослойку, размазанную по нескольким файлам. Эта прослойка не просто datasource- и -web-aware, она буквально прибивает гвоздями каждый конкретный ORM к WTForms. В других случаях программист предоставлен сам себе: он может привязывать виджеты к полям при создании отдельных представлений (кто сказал DRY?) либо изобретать своего монстра, подобного тому, что изобрели авторы Flask-Admin.

Что мы имеем в итоге? «Лёгкий» фреймворк использует в полтора раза больше внутреннего кода по сравнению с «тяжёлым» для достижения того же результата. Расход серого вещества программистов при этом… Может быть, некоторым из них будут полезны лишние упражнения на внимание?
Previous post Next post
Up