Фреймворк - это платформа для разработки веб-сайтов и приложений. В отличии от CMS (системы управления контентом) фреймворк состоит только из основных модулей для разработки. Это набор файлов. Графической оболочки, как правило, нет.
Разработчики используют фреймворк, когда нужно создать сложный сайт или приложение. Использование CMS в этом случае нерационально, поскольку придется подстраиваться под особенности выбранной системы. А фреймворки не ограничивают разработчика, дают ему больше возможностей, и в то же время упрощают разработку, потому что все основные методы уже созданы.
По сути это заготовка для работы. Это слово и означает "каркас". Фреймворки используются, чтобы не изобретать велосипед и не писать всю структуру сайта самостоятельно. Также продуманы способы обеспечения безопасности разрабатываемого приложения.
Сайты на фреймворках работают быстрее сайтов на CMS. А если нужно будет что-то доработать, разработчика найти намного проще, чем для сайта на CMS.
Фреймворки подойдут для крупных проектов и интернет-магазинов с количеством товаров более 5000 единиц. Магазины часто не используют CMS, потому что движок не может справиться с большим объемом продукции и начинает тормозить.
Преимущества такого подхода к созданию сайтов:
- Фреймворки увеличивают скорость создания сайта. Разработчику не нужно писать все методы и архитектуру с нуля.
- Скорость работы сайтов при правильной разработке очень высока.
- Безопасность. Все создатели фреймворков следят за своим продуктом и оперативно устраняют уязвимости при их обнаружении.
- Простота сопровождения и доработки, потому что фреймворк имеет привычную для разработчиков архитектуру.
Популярные фреймворки
Laravel
Очень мощный и популярный php-фреймворк. Имеет множество методов. Пользуется спросом на западе. Так как с архитектурой Laravel знакомы многие разработчики, легко найти исполнителя. Очень много учебных материалов - курсов, вебинаров, конференций. У Laravel понятная и хорошо структурированная документация, он прост в изучении.
На сегодняшний день Laravel считается самым перспективным фреймворком.
Yii фреймворк
Php-фреймворк. Расшифровывается как "Yes It Is!". Популярный фреймворк в русскоязычной среде. Имеет подробную и понятную документацию. Легко настраивается.
Zend Framework
Компания ZEND участвует в разработке языка программирования PHP. С ней сотрудничают Google и Microsoft. Этот фреймворк лежит в основе CMS для интернет-магазинов Magento.
Symfony
php-фреймворк. С помощью этого фреймворка были созданы Drupal, OpenCart, форум PhpBB. Laravel также взяло за основу Symfony. Несмотря на хорошую документацию, этот фреймворк считается сложным.
Codeigniter
Php-фреймворк. Очень легкая система, не нагружает сервер. Сайты работают быстро и имеют Высокую производительность. На Codeigniter легко разрабатывать приложения даже тем, кто не знаком с этим фреймворком.
Django
Фреймворк на Python. Популярен среди разработчиков на этом языке. Есть много полезных методов из коробки.
React
Это больше библиотека для разработки на фронтенде. В ее основе лежит JavaScript. Используется JSX.
Плюсы и минусы фреймворков
О преимуществах мы уже говорили выше. Основные плюсы фреймворка:
- можно разработать сайт любой сложности.
- для фреймворка компоненты разрабатываются дешевле, чем аналогичные для CMS.
- легко сопровождать проект.
- простота интеграции с другими сервисами и приложениями.
- скорость работы сайтов.
- безопасность.
- выдерживают большую нагрузку.
- большинство модулей разрабатываются вручную, что позволяет настроить такой модуль конкретно под заказчика и ускорить работу, создать необходимый функционал. Это также и минус, так как готовых решений практически нет. Даже простейшие вещи необходимо делать самостоятельно.
И все же у фреймворков есть и недостатки, иначе все бы их поголовно использовали. Минусы:
- разработка дороже и дольше по сравнению с сайтами на CMS
- все нужно писать самостоятельно. Это и плюс, и минус.
CMS или фреймворк
Если вы задаетесь вопросом, что выбрать для вашего проекта: CMS или фреймворк, - то тут необходимо все взвесить. Это два разных подхода к разработке, каждый имеет свои преимущества и недостатки.
Особенности разработки на CMS:
- Подходят для типовых проектов, когда важно быстро запустить сайт. Подойдут для создания простого интернет-магазина с небольшим количеством товаров, лендинга, корпоративного сайта, блога.
- Имеют множество готовых модулей.
- Разработка дополнительных модулей дороже, чем на фреймворке. Это обусловлено тем, что CMS имеют свою специфику и необычную архитектуру, правила создания модулей, в то время как фреймворк придерживается стандартной архитектуры и не ограничивает разработчиков.
- Скорость работы сайта ниже. Можно оптимизировать, но это будет довольно дорого. И не всегда реально и целесообразно.
- Не выдерживают высокую нагрузку. Если у вас большой объем товаров, страниц, а также посетителей сайта, нужно будет что-то придумывать. Иначе CMS начнет тормозить ваш портал.
- Можно быстро запустить проект. Часто делают пробную версию сайта на CMS, а затем переносят на фреймворк.
- Один из очень жирных плюсов - готовая админка. Для оптимизации сайта делают так: для админки используются средства CMS, а клиентскую часть разрабатывают вручную, не используя модули системы.
- Для расширения функционала придется искать компромиссы с CMS.
- Часто содержат непонятный код, особенно если используются сторонние расширения. Поэтому стоимость создания и доработки модулей для CMS будет выше, чем для фреймворков.
- Для реализации простого сайта нужно обладать минимальными навыками разработки.
- Очень много лишнего функционала, что загружает сайт.
- Первоначальная разработка относительно недорогая.
- Высокая безопасность.
Фреймворк:
- Подходят для сложных проектов, больших интернет-магазинов, каталогов, либо для простых сайтов, которые в будущем будут развиваться, и лучше сразу сделать качественно, чем потом переделывать. Также подходит для тех проектов, которые нельзя быстро сделать на CMS. Это калькуляторы, интернет-магазины с нестандартным функционалом, собственные CRM.
- Для фреймворков почти нет готовых модулей. Если для CMS вы можете найти огромное количество готовых решений, то для фреймворка абсолютно все, что вам нужно, придется писать самостоятельно. Это стоит денег и занимает дополнительное время.
- Разработка дополнительных модулей дешевле, чем на CMS.
- Высокая скорость работы сайта.
- Спокойно выдерживают большую нагрузку при правильной разработке.
- Не получится быстро запустить. Период разработки значительно дольше.
- Админку лучше писать самому. Для типовых задач существуют админки, но фреймворк редко используется для типовых задач. Написание админки - процесс сложный. Сложнее разработки клиентской части сайта.
- Легко расширить функционал.
- Имеет чистый код. Даже неопытный разработчик должен будет придерживаться архитектуры фреймворка, и не очень качественный код будет понятен другим разработчикам.
- Человек, не знакомый с разработкой и объектно-ориентированным программированием, даже простой сайт создать не сможет.
- Лишнего функционала практически нет, а тот, что есть, можно убрать при необходимости.
- Высокая стоимость первоначальной разработки.
- Высокая безопасность. Что создатели CMS, что фреймворков работают над безопасностью их продукта.
Самописный сайт или фреймворк
Мы периодически сталкиваемся с самописными сайтами. Есть только несколько случаев, когда это оправдывает себя:
- У вас простой лендинг, его никто не будет администрировать через админку, а ваших навыков хватает, чтобы вносить изменения на сайт через код.
- Вы разработчик фреймворка.
- Вы начинающий разработчик, и вам нужно потренироваться и написать свою CMS.
Почему не стоит все же заказывать самописный сайт?
- Потратите много времени и денег.
- Зачем изобретать велосипед, когда есть уже готовая основа, которая абсолютно для всех приложений одинакова?
- Вы думаете, что сделаете что-то лучше, чем команда профессионалов с большим опытом и бюджетом, которая долго работает над своим продуктом, всячески обновляет его, исправляет баги и уязвимости?
- Безопасность вашего сайта будет под угрозой по вышеперечисленным причинам.
- Ваш сайт будет уступать по качеству фреймворку по вышеперечисленным причинам.
Сайты на фреймворках
Большинство серьезных сайтов сделано на фреймворках. Крупным ресурсам нужна гибкость и скорость, смысла связываться с CMS им нет.
Вот несколько известных сайтов, которые используют популярные фреймворки:
YouTube
Один из самых известных сайтов.
Использует Django.
DropBox
Приложение для хранения документов и файлов.
Использует Django.
Spotify
Музыкальная библиотека.
Использует Django.
BlaBlaCar
Поиск попутчиков с распределением затрат на бензин. Поездки выходят комфортнее, быстрее и дешевле, чем на автобусе.
Использует Symfony2.
Firefox
Популярный браузер.
Использует Django.
NatGeo Play
Программы и документальные фильмы от National Geographic.
Использует Symfony2.
Поиск людей по интересам.
Использует Django.
The Washington Post
Американская ежедневная газета.
Использует Django.