Что такое фреймворк и чем он отличается от CMS

19.12.2017 . Web-разработка
Фреймворков существует огромное количество, и не только в программной части сайта (Laravel, Yii, Ruby, Node.js и т.д.), но и в верстке (jQuery, Vue, React.js и т.д.), и в стилях сайта (Bootstrap, Foundation, и т.д). Каждый из них дает одно и тоже – «площадку» для разработчика, с готовыми библиотеками, чтобы он не тратил время на написание одних и тех-же функций (верстки или стилей). А концентрировался конкретно на своей задаче.

В этой статье я хочу рассказать вам что такое php фреймворк в программной части сайта, для чего он нужен, и чем он отличается от систем управлений контентом. Я не буду рассказывать как он устроен, не буду разбирать отдельные фреймворки, сравнивать их возможности. Эта статья рассчитана на новичка, который только пришел в веб-разработку, и не до конца понимает для чего это все нужно.

PHP Фреймворк – это низкоуровневая «платформа» или «каркас» содержащий наборы библиотек и инструментов для упрощения разработки. Обычно, фреймворки используются для создания уникальных сервисов, веб-приложений, или массивных сайтов с массой функционала.

Изначально фреймворк содержит в себе лишь наборы классов упрощающих разработку сайта, например: работа с базой данных, реализация многофункциональных форм, валидация, логирование и т.д.

Для чего он нужен
Ведь моя CMS с тонной плагинов может тоже самое что и ваши модные фреймворки!

Фреймворки используют для выполнения абсолютно любых задач, от обычного блога, до огромной социальной сети (Фейсбук и Вконтакте, например работают на php фреймворках написанные внутри своей компании), и в этом его огромный плюс, ведь изучив один фреймворк на любимом вам языке, например Yii (php язык) вы можете построить любой сервис или веб-приложение.

Для человека, который привык использовать свою любимую CMS в любом проекте, непонятно, какой смысл писать код, например доски объявлений если можно все это сделать установкой одного плагина? Соглашусь с вами, сегодня большинство «нестандартных» задач для сайтов можно решить установкой одного плагина.

Но что если нам нужна лишь одна функция из всех что дает нам этот плагин? Можно конечно попробовать удалить то что нам не нужно, но я вам не советую, это может поломать весь плагин, или даже ваш сайт, если он плотно с ним связан.

Или бывает такая ситуация что нам нужно выполнить сразу две задачи, но одного плагина, который мог выполнить сразу их две – нет. Вы начинаете искать сразу несколько разных плагинов, находите их, устанавливаете, и вы видите, половину того что он нам дает кроме маленькой функции абсолютно не нужно.

А теперь представьте когда вам нужно выполнить сразу десяток мелких задач, и все они в вашей любимой CMS решаются отдельными плагинами? Ведь это сотни файлов, тысячи ненужных строчек кода, и десятки запросов в базу данных при загрузке лишь одной страницы.

В таких ситуациях нас как-бы «заставляют» тащить за собой десятки файлов с не нужным нам кодом, чтобы мы могли выполнить одну или несколько маленьких задач. Из-за этих лишних функций наш сайт заметно замедляется, нагрузка на сервер повышается, и при большом количестве посетителей он может просто «упасть».

Именно в таких ситуациях легче и лучше использовать фреймворк. Вы всегда напишите именно то что вам нужно, и этот функционал будет делать именно то что вы хотите. Ваш сайт не будет грузить десятки или сотни файлов при заходе на одну страницу, и «думать» над ненужными функциями.

Предел в функционале выставляете вы, и вы будете решать чему грузится, а чему – нет. В этом и прелесть фреймворка. Вы получаете полный контроль того что происходит под «капотом» вашего сайта.

Отличия от CMS
И что же я потеряю когда уйду от своей CMS к фреймворку?

Как я упомянул ранее, главное отличие – это количество необходимого функционала необходимое в вашем проекте.

Для начала вам нужно понять для чего вам нужен фреймворк, если вам необходимо поставить блог с парочкой рубрик, то для такой задачи достаточно обычной CMS. Задуматься о фреймворке нужно тогда, когда ваши задачи невозможно решить без установки плагинов. Нет необходимости делать блоги или простой интернет-магазин на фреймворках в связках с каким-нибудь Angular (встречались такие).

Безусловно новичок не сразу разберется в фреймворке, который представляет из себя сотню папок с тысячью файлов, и не имеющий никакого графического интерфейса для управления контентом. Именно на этом моменте большинство так и не решается его использовать, и отдают предпочтение установке сотни плагинов.

Изначально фреймворк не может даже в такие простые вещи как: меню сайта, список статьей в отдельных категориях, управление администраторами и прочее. Он не может это не потому-что бесполезный или ничего не может, а потому-что вам придется писать это самому, все простые вещи будете делать с нуля, будете читать документации, различные обучающие статьи. В итоге придете к тому что у вас будет своя база готовых библиотек для развертывания сайтов, и это в разы ускорит разработку уникального функционала.

Вы будете сосредоточены на разработке только необходимого функционала, и его будет ровно столько, сколько нужно.
Нужен сайт
на OctoberCMS?
Ознакомьтесь с условиями разработки