Английское слово framework можно перевести как каркас, рама или структура. То есть такое понятие обозначает что-то основательное, например, если сравнивать со строительной отраслью, — конструкцию здания. Например, сегодня практически все многоэтажные дома строятся по монолитно-каркасной технологии. Основа такого сооружения — это железобетонные конструктивные элементы. А уже на них формируются внутреннее наполнение и внешнее оформление сооружения. Или быстровозводимые здания — торговые центры, производственные и логистические комплексы. Там применяются металлические каркасы, которые используют в качестве «скелета». А далее по усмотрению заказчика конструкция обшивается сэндвич-панелями или другими облицовочными материалами. Как правило, основой таких объектов становятся стандартные конструктивные элементы или их специально изготавливают по заказу.
Для чего этот экскурс в строительную отрасль? Просто на таком примере легче объяснить человеку, далекому от программирования, что такое фреймворк. Такой фрагмент кода предназначен для упрощения и ускорения создания сайтов и вообще любого программного обеспечения. Фактически фреймворк представляет собой набор базовых программных модулей (тот же каркас по аналогии со строительством здания). Он выступает основой для разработки других, специфических компонентов программного кода. В результате разработчику остается только написать недостающие компоненты, а архитектуру программы (например, дизайн, структуру, ее выполнение, правила интерпретации кода) задают используемые разработчиком фреймворки. Давайте подробнее поговорим о таких «каркасах», активно применяющихся при создании ПО.
Фреймворк вам в помощь: как облегчить работу по созданию программного кода
Итак, фреймворк — это часть кода, «позаимствованная» у сторонних разработчиков с целью упрощения и ускорения процесса создания программного продукта. Вообще, такие «каркасы» разрабатывают целые команды программистов, работающие в крупных компаниях, например, в том же вездесущем Гугле.
При этом не стоит путать фреймворки с библиотеками. Да, библиотека — это тоже код, написанный разработчиком, или уже имеющийся в стандартном функционале языков программирования. Их использование способствует более эффективному решению типичных задач или часто встречающихся проблем. Однако существуют существенные различия:
- К библиотеке разработчик обращается по своему усмотрению. Он сам решает, когда необходимо использовать некий содержащийся в ней набор функций для выполнения конкретной задачи при написании кода. За порядок выполнения команд ответственность также несет разработчик.
- Фреймворки перебирают на себя контроль за процессом разработки. Они подключают программный код, предоставляя основу для формирования на ней специфических компонентов.
- Можно сказать, что фреймворки ни у кого не спрашивают разрешения на то или иное действие, а сами «решают» степень своего участия в написании кода. Они перебирают на себя создание форм авторизации, таблиц или автоматическую генерацию верстки, могут задавать месторасположение и имена файлов.
- Фреймворк ответственен за формирование архитектуры программы, а библиотеки подключаются к коду по желанию разработчика. Если снова обратиться к аналогиям со строительством, то библиотеку правильнее сравнить с рабочим инструментом, например, бетономешалкой. Применение таких средств полностью зависит от строителя (в нашем случае — от разработчика).
Расширяемость как способ развития функционала
Достоинство фреймворков — возможность их расширения. По сути, такие программные модули позволяют получить основу для создания программного продукта, однако они могут быть дополнены с определенной целью. В то же время сгенерированный фреймворками код, как правило, не изменяется в процессе разработки. А на него, как на каркас, добавляются требуемые компоненты.
Приведем пример: популярный фреймворк на основе HTML и JavaScript AngularJS используют разработчики веб-приложений. Он ответственен за выбор основных характеристик программного продукта: размечает страницы для полной и мобильной версии, синхронизируется с данными сервера, формирует синтаксические особенности шаблона, обеспечивает кроссплатформенность (когда страницы одинаково отображаются на Айфонах и смартфонах с Android «на борту»). Для расширения функционала можно подключить ряд библиотек. Однако подключение Angular к другому фреймворку нереально в принципе, так как в круг его задач входит запуск кода на сайте.