Начинающим программистам: что такое фреймворки и библиотеки
Когда человек начинает программировать, он узнаёт про фреймворки и библиотеки. Попробуем на доступных примерах объяснить, что это такое и чем они полезны. Будем использовать аналогию с постройкой дома. Это несколько упрощает реальное положение вещей, зато помогает понять разницу.
Фреймворки
Представьте: вам нужно построить дом. Можно выбрать готовый типовой проект и немного поиграть с планировкой, пока архитектор не против и вы не трогаете капитальные стены. А можно нарисовать план самому и получить именно тот дом, который хотите — даже если вы хотите цилиндрический дом со входом на втором этаже.
Разница в том, что в типовом проекте уже всё продумано: оптимальное расположение коммуникаций, теплоизоляция стен, способы заливки фундамента, и еще миллион вещей, которые со стороны не видны. Вы получаете тёплый и уютный дом, но в рамках готового проекта.
Так же работает фреймворк. Вы используете готовый шаблон и наполняете его своим кодом. Вы теряете в гибкости, зато программа работает стабильно: всё основное фреймворк берёт на себя. Под капотом фреймворка миллион нюансов: например, работа с файловой системой и базами данных, обработка ошибок, защита паролем.
Без фреймворка вам нужно будет обо всём думать самостоятельно. Это даёт больше свободы, но и больше ответственности. Если криво реализована авторизация в базу данных, через эту кривизну код смогут взломать. Если не написали обработку ошибок, программа может не работать. На языке строительства это эквивалент дома без канализации или когда в стенах не предусмотрели дырки под розетки.
Примеры фреймворков:
- Bootstrap — создание сайтов с адаптивной вёрсткой. Можно рисовать красивые кнопки, верстать текст во много колонок, включать-выключать блоки в зависимости от ширины экрана, делать выпадающие меню и многое другое
- Vue.js — обеспечивает единообразие компонентов и модульный подход к разработке. Можно создавать собственные строительные блоки для страницы, делать шаблоны
- Angular.JS — JavaScript фреймворк от Google для динамических веб-приложений, похож на Vue
- django — фреймворк для Python, нацеленный на скорость: готовые компоненты для баз данных, рисования страниц, админок, окон входа на сайт, шаблонов и множества других вещей
- Ruby on Rails — тоже сильно ускоряет разработку сайтов
Вывод: фреймворк даёт стабильность и удобство разработки, но ограничивает программиста своей архитектурой.
Библиотеки
Продолжаем строительную аналогию. Допустим, с домом вы определились, но в нём теперь нужно сделать ремонт и провести электрику. Это можно сделать с помощью молотка, отвёртки, ручной дрели и зубила, а можно взять специальные инструменты — болгарку, перфоратор и шуруповёрт. Специнструменты — это и есть библиотеки. С ними задача решается быстрее, но чтобы ими пользоваться, нужно умение. Если задача простая и с ней действительно можно справиться только с молотком и отвёрткой — отлично, тогда нам не нужны библиотеки и достаточно встроенных средств языка программирования.
Если расширить пример, то с помощью специнструмента можно даже построить дом: бетономешалка вместо ведра с лопатой, кран вместо ручной разгрузки и так далее. Получается, что написать программу можно с помощью фреймворка, а можно с помощью библиотеки. Библиотека тоже следит за тем, чтобы вы сделали как можно меньше ошибок, но нужно чётко знать все команды и правила. В итоге вы полностью контролируете процесс, но упрощаете себе жизнь, используя уже готовые библиотеки.
Получается, что фреймворк от библиотеки отличается тем, что фреймворк сам задаёт вам правила игры, которые нужно соблюдать, а библиотеками вы командуете сами и используете их возможности в нужный момент.
Примеры библиотек:
- TensorFlow для Python, которая погружает вас в мир искуственного интеллекта
- Almanac Converter — для простой работы с датами и временем
- WebKit — популярнейшая библиотека для работы с веб-страницами
- Scribe Java — простая библиотека для авторизации пользователей
Мы сами решаем, как и когда вызывать библиотечные функции и что с ними делать. Библиотека — это просто набор заранее определённых функций, из которых, как из кирпичиков, можно складывать то, что нам нужно. Ещё одно интересное свойство: внутри фреймворка можно использовать другие библиотеки. Например, если вам нужен адаптивный сайт и удобная работа с формами — используйте Bootstrap для адаптива как фреймворк и подключите к нему библиотеку jQuery.
Что теперь
В одной из будущих статей потренируемся на библиотеках и фреймворках. Не переключайтесь и до скорого!
что это такое? Краткий обзор HTML/CSS, PHP и Python-фреймворков
1 year ago | 19.5K
Статья посвящена одному из важных инструментов программиста — фреймворкам, которые делают разработку сайта более быстрой. Вы узнаете об особенностях фреймворков, их возможностях, назначении.
Фреймворк: что это?
Рассмотрим слово «фреймворк«, которое является действительно новым неологизмом, не так давно появившимся в нашем языке. Слово начали использовать примерно в первой половине XXI века. Если рассматривать перевод слова с английского — это «конструкция» или «структура».
Суть фреймворка заключается как раз в переводе слова. Это программная среда специального назначения, своеобразный каркас, используемый для того, чтобы существенно облегчить процесс объединения определенных компонентов при создании программ. Это основа, которая позволяет добавлять компоненты в зависимости от потребностей. База, на которой можно сформировать программу любого назначения достаточно быстро и без особых затруднений.
Если сравнивать динамическую библиотеку (DLL), которая отличается весьма ограниченным функционалом, и фреймворк, считающийся основой программ — можно выделить существенное преимущество фреймворков. Именно фреймворк является связующим звеном, которое объединяет все используемые программные компоненты. Также внутри фреймворка зачастую есть необходимые тематические библиотеки.
Классификация фреймворков:
- Фреймворки приложений;
- Фреймворки программных моделей;
- Фреймворки концептуальных моделей.
Наша статья рассмотрит фреймворки, используемые для разработки современных веб-проектов и принадлежит второму пункту в классификации.
Сравниваем CMS, чистый код и фреймворк
Если у программиста стоит задача создать сайт, ему необходимо сразу же определить дальнейшую стратегию работы. Есть три пути разработки, каждый программист может выбрать тот, который больше всего подходит под его умения.
- Можно написать требуемый исходный код с нуля. Главным преимуществом этого варианта, является его вариативность — практически никаких ограничений, можно реализовать любой задуманный функционал, потребуются лишь определенные умения. Главным минусом можно назвать трудоемкость процесса, временные затраты. Также придется приложить очень много усилий для тщательного тестирования полученного продукта — придется найти все его изъяны, чтобы создать идеальный веб-проект.
- Использование фреймворков. Существуют определенные ограничения, если проводить параллели с предыдущим способом. Существует основа, в которую нужно добавить определенное количество требуемых компонентов. Данный вариант является рентабельным только для тех, кто хоть немного разбирается в программировании — без определенного количества знаний выполнить поставленную задачу правильно практически не
fructcode.com
Что такое фреймворк? Какие фреймворки самые популярные?
Фреймворк — база программной платформы, каркас, на котором удобно строить решение конкретной задачи. Слово — производное от английских frame и work, «рамка» и «работа». Это неологизм, который носители языка переводят как «остов» или «структура».
Фреймворк определяет архитектуру сайта, приложения или программного продукта. Логика его использования простая: вы выбираете каркас, отталкиваясь от сферы применения и особенностей конечного решения, а после этого заполняете его конкретными модулями и функциями.
Преимущества использования фреймворков
Фреймворки удобны, потому что они обеспечивают высокую скорость и гибкость разработки. Вам не нужно создавать с нуля движок сайта или приложения. Бывает, что вручную практически писать не нужно — только навешивай готовые модули на каркас, настраивай их и интегрируй.
Если у заказчика изменились бизнес-требования, можно добавлять и удалять модули, расширять функциональность.
Легко вводить в команду разработки новых людей. Если они уже работали с фреймворком на одном или на нескольких проектах, то и с решением новых задач на нем легко справятся.
Код проекта на базе фреймворка чище. Его почти не нужно рефакторить, проще отлаживать, расширять и поддерживать.
Недостатки фреймворков
Не все фреймворки одинаково безопасны. Большая часть имеет открытый исходный код, и в нем регулярно находят уязвимости.
При смене фреймворка придется переучиваться. Работать в рамках одного фреймворка в целом можно, но тогда ваши возможности не слишком широки.
Осваивать новый фреймворк чаще всего сложно. И это занимает время.
Чем фреймворк отличается от библиотеки
Библиотека — это набор функций из одной области. Они не влияют на архитектуру сайта или приложения, не ограничивают решение и могут сочетаться с другими библиотеками.
Фреймворк же — это каркас, который определяет архитектуру. Он диктует, как решение будет вести себя по умолчанию. Совмещать два фреймворка в одном продукте — дело неблагодарное.
Внутри фреймворка могут находиться самые разные библиотеки. Их функции могут быть очень далеки друг от друга: к примеру, одна работает с выводом изображений, другая — с приемом оплаты.
Наконец, при использовании фреймворка он сам вызывает классы и функции пользовательского кода. Пользовательский код может реализовывать конкретное поведение, которое встраивается в абстрактный код фреймворка. Управление он получает после вызова.
Здесь же отметим: «фреймворк» не равно «CMS» (системы управления контентом вроде WordPress, которые часто используют для создания сайтов).
Популярные фреймворки
Большая часть популярных фреймворков предназначена для создания сайтов и веб-приложений. Разделить их на группы проще всего по языкам, которые используются для разработки под конкретный фреймворк.
HTML/CSS
Bootstrap — фреймворк с адаптивной версткой, который позволяет быстро создавать стильные сайты с отзывчивым интерфейсом. Они легко подстраиваются под различные размеры окон на разных гаджетах. Фреймворк появился в 2011 году, и сегодня для него существует множество готовых стилей, шаблонов и др.
Semantic UI — молодой фреймворк для переносимых интерфейсов. Он активно развивается, и в сети несложно найти большое количество готовых кнопок, изображений, иконок, надписей и других элементов.
PHP
Yii — довольно старый фреймворк, но с хорошими возможностями. У него высокая производительность, есть кэширование и полная обработка ошибок, поддерживается использование jQuery и миграция с других баз данных.
Symfony — мощный и стабильный фреймворк,интересный для крупных проектов. Гибко настраивается, включает широкий набор функций, множество полезных компонентов для настройки форм, безопасности и создания шаблонов.
Laravel — один из самых популярных сегодня php-фреймворков: он прост в освоении и идеален для мелких и средних проектов.
Python
Flask — фреймворк со скромным базовым набором функций, но легко расширяемый. Его удобно использовать для небольших или специфичных проектов, а также осваивать начинающим специалистам.
Django — самый популярный Python-фреймворк, простой и функциональный. На старте хватает знаний Python на базовом уровне. Имеет стандартную структуру, поддерживает наследование шаблонов, работает с собственной CMS Django.
Tornado — фреймворк, который эффективно решает «проблему 10 000 соединений». Успешно справляется со множеством одновременных подключений, прост в освоении и настройке.
www.anews.com
ТОП-10 фреймворков для веб-разработки в 2019
Актуальный список самых популярных и удобных фреймворков для веб-разработки в 2019 году: бэкенд, фронтенд и 5 языков на выбор.
Стандарты веб-разработки постоянно растут вместе со сложностью современных технологий. Изобретение собственных велосипедов теперь занимает слишком много времени и сил. На помощь растерянному девелоперу спешат фреймворки, готовые снять с его плеч груз забот.
Но тут появляется новая проблема: этих фреймворков так много, что глаза разбегаются. Для фронтенда и бэкенда, гибкие и жесткие, легкие и всеобъемлющие, на PHP, Python, Java, JavaScript (да-да, бесчисленные JavaScript фреймворки). В общем, на любой вкус.
Чтобы ваши глаза не убегали далеко, держите компактную подборку самых лучших инструментов для веб-разработки.
5 backend-фреймворков для веб-разработки
Самые мощные и популярные backend-фреймворки от RESTful API до полноценных MVC. Здесь мы собрали полную коллекцию языков: JS, Python, Ruby, PHP и Java.
Express
JavaScript-фреймворк Express взлетает на волне популярности Node.js. Сейчас это один из самых трендовых инструментов веб-разработки. Его используют крупные компании Accenture, IBM и Uber, а также другие фреймворки, например, Kraken, Sails и Loopback.
Express позиционируется как минималистичный, быстрый и очень гибкий фреймворк. Он предоставляет все необходимые возможности, при этом активно используя все преимущества и мощность Node.js. Поддерживает REST API.
Возможно, самый большой недостаток Express, особенно для начинающих, – слишком большая гибкость. Одну и ту же вещь можно сделать по-разному.
Полезные материалы по Node.js:
Django
Еще один популярный среди IT-лидеров (Google, YouTube, Instagram) фреймворк для веб-разработки, на этот раз на Python. Django имеет Model-View-Template-структуру и следует лучшим принципам проектирования: DRY и Соглашение по конфигурации.
Вы можете больше не беспокоиться о многих сложных и важных вещах – куча полезнейших функций доступна прямо из коробки. Аутентификация, обмен сообщениями, маршрутизация, работа с базой данных, админская часть сайта – все это Django берет на себя.
Особый приоритет отдается безопасности. Фреймворк реализует многие важные принципы защиты самостоятельно, например, предотвращает выполнение кода на уровне шаблонов. Кроме того, есть ряд методов и инструментов, которые могут применяться на усмотрение разработчика.
Полезные материалы по Django:
Rails
Популярный Ruby-фреймворк с классической структурой Model-View-Controller. Rails успешно работает в Airbnb, GitHub, Hulu и Shopify.
Инструмент лоялен к новичкам и имеет невысокий начальный порог вхождения. Однако за сценой там немало магии, стоит сделать несколько первых шагов, и придется карабкаться на крутую горку. Еще один недостаток – сложный процесс разворачивания и запуска на продакшене.
Чтобы сделать работу с фреймворком быстрее и эффективнее, создано множество полезных гемов (gems, пакеты и библиотеки), которые можно подключить к вашему приложению. Rails-сообщество довольно сильное и дружелюбное, кроме того в сети есть немало обучающих ресурсов по этому инструменту.
Полезные материалы по Ruby:
Laravel
MVC-фреймворк для самого распространенного языка веба – PHP. Laravel довольно молод, но уже весьма популярен.
Многие возможности, например, поддержка API, доступны из коробки. Кроме того есть много полезных пакетов с дополнительной функциональностью.
Основная проблема Laravel – недостаточная производительность по сравнению с Django или Express. Для тяжелых проектов это может стать существенным минусом.
Уйму материалов и руководств по Laravel и PHP можно найти на сайте Laracasts.
Полезные материалы по PHP:
Spring
Для полноты картины списку backend-фреймворков для веб-разработки не хватает только Java. Приветствуйте Spring – «стратегически важный фреймворк», профессиональный, достаточно гибкий и очень надежный. По сути, это коллекция фреймворков во фреймворке, большинство из которых может работать независимо друг от друга.
Кривая обучения Spring может быть довольно крутой, особенно если вы плохо знаете Java. Если вы всерьез намерены его освоить, обратите внимание на этот видеокурс для начинающих.
Полезные материалы по Java:
5 frontend-фреймворков для веб-разработки
В этом разделе безгранично царствует язык программирования JavaScript – 5 инструментов, каждый со своей уникальной харизмой и историей успеха.
Angular
Специализация Angular – полноценные одностраничники (SPA), и в этом он по-настоящему хорош. Это детище Google, которое также высоко оценили в Microsoft и Paypal.
Фреймворк достаточно «упрям», он строго навязывает программисту свое видение приложения.
Для разработки используется TypeScript, что скорее достоинство, чем недостаток. Язык JavaScript очень гибок, но эта гибкость может быть причиной множества ошибок.
Основные минусы Angular – его размер по сравнению с другими JS-фреймворками и врожденная недружественность SEO. Впрочем, последний недостаток вполне можно исправить оптимизацией.
Полезные материалы по Angular:
React
Не очень правильно называть React фреймворком, это скорее библиотека компонентов для веб-разработки. Однако его значение так велико, что исторически ни одно сравнение без него не обходится.
Именно React от Facebook ввел «моду» на компонентную архитектуру и виртуальный DOM.
Разработка ведется на особом наречии JavaScript – JSX. Это смесь привычного JS с таким же привычным HTML. И в целом это очень интерфейс-ориентированный инструмент, существенно упрощающий работу с веб-страницей в браузере.
React можно использовать не только на клиенте, но и на стороне сервера.
Полезные материалы по React:
Vue
Начавшись как проект одного разработчика Google, Vue.js очень быстро вырос в один из самых популярных JavaScript-фреймворков.
Это очень гибкий инструмент с прогрессивной структурой, который легко интегрировать в уже существующие проекты. Компонентная архитектура и богатая экосистема позволяет разрабатывать сложные приложения с минимальными затратами.
За спиной Vue не стоит какой-нибудь IT-гигант, но этот фреймворк для веб-разработки уже успел заслужить признание фронтендеров всего мира.
Полезные материалы по Vue:
Ember
В 2015 году Ember был назван лучшим JavaScript-фреймворком. Четыре года спустя он все еще популярен (что удивительно в бурном и непостоянном JS-мире). Сообщество продолжает расширяться, появляются новые функции и релизы. Инструмент используется в Google, Microsoft, Heroku и Netflix.
Из коробки в Ember доступна двусторонняя привязка данных, а также множество полезных функций и компонентов.
Основная цель фреймворка – максимизировать продуктивность разработчика. Для этого он применяет лучшие практики программирования.
Backbone
Очень легкий и стильный фреймворк с MV*-структурой, предназначенный для создания SPA.
Backbone имеет всего одну зависимость – это библиотека Underscore.
Фреймворк обладает богатой экосистемой, которая в сочетании с Mustache и Marionette позволяет создавать полноценные клиентские приложения.
JavaScript фреймворки
React, Angular и Vue уже довольно долго ведут непримиримую борьбу за лидерство. Другие фреймворки тоже не сдаются. Чтобы сделать правильный выбор, нужно понимать, в чем, собственно, разница между ними:
Заключение
Фреймворки для веб-разработки во многом похожи, даже если реализованы на разных языках программирования. Это неудивительно, ведь они решают одни и те же задачи.
Тем не менее, каждый из перечисленных фреймворков индивидуален. У них разные подходы, методы и поведение в разработке.
Не бойтесь изучать новые инструменты и экспериментировать с концепциями. Помните, что даже флагманы IT-мира регулярно пробуют что-то новенькое. Здесь нет тупиков – только новые перспективные пути.
Оригинал: Top 10 Web Development Frameworks in 2019
Расскажите, с какими из фреймворков вы согласны, а с какими – нет?
proglib.io
Обзор PHP фреймворков. Плюсы и минусы, отзывы
На данный момент PHP — один из самых популярных скриптовых языков программирования, с помощью которого были созданы и по сей день создается большое количество различных интернет-проектов: начиная с простых сайтов и заканчивая крупными высоконагруженными проектами электронной коммерции. Высокая скорость развития интернета привели к увеличению разработки различных сайтов: визиток, корпоративных сайтов, промо-сайтов, портфолио, блогов, каталогов, порталов, форумов, интернет-магазинов, крупных индивидуальных проектов.
Чтобы облегчить процесс разработки сайтов, программисты стали повторно использовать куски кода, группируя их в различные модули и компоненты, и объединяя в специальные наборы готовых инструментов, которые получили название — фреймворки.
Фреймворк (framework) — готовый каркас с набором модулей, компонентов, расширения для быстрой, простой и качественной разработки программ.
PHP фреймворки позволяют:
- ускорить процесс разработки веб-приложений
- помогают писать простой и качественный код
- повторно использовать код в проектах
- легко масштабировать проекты
- использовать современные практики программирования
- легче тестировать программный код
- обеспечить безопасность проекта
В данной статье вы увидите список самых популярных PHP фреймворков с плюсами и минусами. Для сравнения инструментов разработки были выбраны следующие PHP фреймворки:
- Laravel
- Yii
- Symfony
- Zend Framework
- Codeigniter
И так, поехали!
Laravel
Laravel — это бесплатный PHP фреймворк с открытым исходным кодом, созданный Тейлором Отвеллом для разработки веб-приложений по архитектурному шаблону MVC.
Можно сказать, что на появление Laravel повлияли остальные PHP фреймворки.
Он был создан как альтернатива фреймворку Codeigniter (о нем будет рассказано ниже), в котором было недостаточно полезных функций для разработки веб-приложений. В качестве основы Laravel выступают компоненты другого фреймворка — Symfony (о нем также, будет рассказано ниже).
Фреймворк Laravel очень популярен среди западных разработчиков веб-приложений.
С помощью менеджера пакетов Composer, фреймворк Laravel позволяет легко устанавливать и подключать различные компоненты для использования в веб-приложении.
Реализация шаблона ActiveRecord — Eloquent ORM, позволяет установить отношения между объектами базы данных веб-приложения и выстраивать удобные запросы для манипуляции данными.
Механизм автозагрузки классов позволяет не подключать вручную файлы через include и предотвращает загрузку не используемых компонентов.
Удобная система миграций помогает упростить развертывание и обновление веб-приложения.
В Laravel есть встроенная поддержка движка шаблонов Blade, с помощью которого можно делать простые представления веб-приложения используя специальный синтаксис.
При создании приложения можно использовать Artisan — интерфейс командной строки для ввода встроенных команд, а также создания своих собственных.
В Laravel есть много полезных функций, позволяющих сделать процесс разработки веб-приложений быстрым, простым и качественным.
Из подобных функций можно отметить dd() — удобный аналог стандартной функции PHP var_dump(). Функция выводит информацию переменной в более понятной форме, разделяя данные на дерево атрибутов и значений, в возможностью поиска и перехода по ним.
Плюсы
- Достаточно неплохая и понятная документация.
- Вокруг фреймворка создана мощная экосистема. Различные курсы, конференции, обучающие материалы позволяют собрать вокруг фреймворка большое количество разработчиков и спонсоров, которые заинтересованы в развитии инструмента и принимают в этом участие. Да, здесь чувствуется запах маркетинга, и неплохой.
- Одним из самых очевидных плюсов Laravel, является гибкая система маршрутизации, позволяющая составить самые разные проверки маршрута веб-приложения. Вы можете выделить маршруты в специальные группы, использовать пространство имен, указать параметры маршрута, использовать регулярные выражения, настроить поддоменную маршрутизацию и многое другое.
- В Laravel много синтаксического сахара. Синтаксис API фреймворка достаточно простой и понятный. Здесь нет длинных и сложных конструкций, а только краткие и продуманные названия функций.
- Laravel содержит удобный механизм обработки ошибок и исключений.
- Фреймворк включает в себя встроенные механизмы аутентификации и авторизации пользователей, которую можно перенастроить под свои потребности.
- Laravel предоставляет из коробки механизмы для кэширования веб-приложения с помощью Memcached и Redis. Кроме этого есть удобные функции для использования простого файлового кэширования данных.
- Laravel предоставляет чистый и простой API поверх популярной библиотеки SwiftMailer с драйверами для SMTP, Mailgun, SparkPost, Amazon SES и sendmail, чтобы сделать отправку почты через локальную или облачную службу по выбору. В том числе есть механизм для построения очередей отправки почты.
- Laravel Cashier обеспечивает выразительный, свободный интерфейс к сервисам биллинга по подписке Stripe и Braintree.
Минусы
- Для русскоязычных разработчиков, без знания английского языка или его слабым знанием, к минусам фреймворка можно отнести довольно небольшое количество статей, примеров кода, переводов официальной документации. Для тех, кто знает английский на уровне чтения технической документации, данный минус можно опустить.
- Синтаксический сахар в Laravel как плюс, так может быть и минусом. Очень легко привыкнуть к нему и позабыть, как пишутся чистые запросы и функции.
- Нарушение обратная совместимости между версиями фреймворка.
- Не логичное расположение каталогов и файлов. Например, по умолчанию в прямо в каталоге /app расположена модель User.php, которую логичней было бы расположить в каталоге /app/Models. Каталог resources с файлами представления размещен в корне приложения, хотя логичней будет его разместить в /app/resources.
Yii фреймворк
Yii — это бесплатный объектно-ориентированный компонентный full-stack PHP фреймворк. В основе Yii лежит другой фреймворк — PRADO, написанный на ASP.NET и впоследствии перенесенный на PHP. Вскоре после построения новой архитектуры, фреймворк PRADO был переименован на Yii. Название фреймворка является аббревиатурой слова «Yes It Is!». Прародителем фреймворка является китайский разработчик Qiang Xue.
Yii можно использовать для разработки любого вида веб-приложений. Благодаря своей основе компонентов, архитектуре и сложной поддержки кэширования, фреймворк подходит для разработки крупномасштабных проектов, таких как порталы, форумы, системы управления контентом (CMS), систем электронной коммерции, RESTful веб-сервисов и т.д.
Yii реализует для использования MVC (Model-View-Controller) архитектурный шаблон и способствует организации кода на основе этого шаблона.
Yii является full-stack фреймворком, предоставляя множество проверенных и готовых к использованию функций: построитель запросов и ActiveRecord для реляционных и NoSQL баз данных, RESTful API, поддержку многоуровневого кэширования и т.п.
Yii чрезвычайно расширяемый фреймворк в котором можно заменить почти каждый кусочек кода и разрабатывать нужные расширения.
Yii предоставляет Gii — визуальный интерфейс для автоматической генерации контроллеров, моделей и отображений.
Плюсы
- Для русскоязычных разработчиков большим плюсом фреймворка, является хорошая документация, множество статей с примерами кода и сообщество.
- Yii не показатель одного человека, фреймворк подкреплен сильной командой разработчиков ядра, а также большим сообществом профессионалов постоянно способствующих развитию Yii.
- Yii способствует быстрому прототипированию веб-приложения. Он относится к инструментам RAID разработки.
- Встроенный механизм создания виджетов представления, например, для размещения на сайте различных блоков: последние посты, категории, навигация, блоки рекламы и т.п.
- Компонент приложения i18n позволяет производить автоматический перевод сообщений веб-приложения.
- Встроенная поддержка автоматической валидации форм и вывода сообщений об ошибках на основе данных из моделей веб-приложения.
- Механизм Active Record для построения реляционной обработки запросов базы данных.
- Множество готовых расширений на Github и их установка через Composer
- Встроенные виджеты для отображения данных: DetailView (строки в таблице), ListView (Список), GridView (таблицы)
- Встроенные механизмы для аутентификации, авторизации, регистрации пользователей
- Содержит встроенную и очень удобную debug панель.
Минусы
- Слабая экосистема вокруг фреймворка среди англоязычного сегмента разработчиков. Сообщество слишком сильно размазано по разным местам: несколько форумов с небольшой активностью, stackoverflow и т.п.
- Хоть фреймворк и позволяет делать код простым, но далеко не элегантным. Если его синтаксис сравнивать с фреймворком Laravel, то он уступает.
- Yii отстает от языка, стандартов и других фреймворков. Новые обновления с действительно полезными функциями выходят не так часто.
- Слишком большая связанность backend и frontend частей Yii2. Фреймворк предлагает использовать библиотеку jQuery и Bootstrap, которые встроены по умолчанию в ядро фреймворка. Этот минус планируется исправить в новой версии фреймворка Yii 3, сделав его компоненты менее связанными.
- Не очень гибкая система маршрутизации: нет возможности сгруппировать роуты.
Symfony
Symfony — свободный PHP фреймворк для быстрой разработки веб-приложений и решения рутинных задач веб-программистов. Разработка и поддержка фреймворка спонсируется французской компанией Sensio.
Symfony состоит из набора не связанных между собой компонентов, которые можно использовать повторно в проектах.
С помощью Symfony было разработано множество крупных проектов:
- систем управления контентом: Magento, Drupal, Opencart
- сервис социальных закладок Delicious
- французский видеохостинг Dailymotion
- движок форума phpbb
В том числе, Symfony повлиял на разработку фреймворка Laravel, где были задействованы его компоненты.
Symfony позволяет устанавливать сторонние пакеты, библиотеки, компоненты и настраивать их с помощью конфигурации в форматах YAML, XML, PHP, а также .env файлах.
Symfony не обеспечивает компонент для работы с базой данных, но обеспечивает тесную интеграцию с библиотекой Doctrine.
Symfony предоставляет функцию почтовой программы на основе популярной библиотеки Swift Mailer. Эта почтовая программа поддерживает отправку сообщений с ваших собственных почтовых серверов, а также с использованием популярных почтовых провайдеров, таких как Mandrill, SendGrid и Amazon SES.
Механизм интернационализации позволяет установить и произвести перевод сообщений веб-приложения на основе выбранного языка или страны.
Symfony предлагает систему логирования ошибок приложения, а также подключить библиотеку логирования Monolog.
Плюсы
- Мощная экосистема вокруг фреймворка, с хорошим сообществом и множеством разработчиков.
- Хорошая и постоянно обновляемая документация для всех версий фреймворка.
- Множество различных не связанных компонентов для повторного использования.
- Предлагает механизм функциональных и модульных тестов для нахождения ошибок в веб-приложении.
- Подходит для сложных и нагруженных веб-проектов.электронной коммерции.
Минусы
- Несмотря на хорошую документацию, фреймворк является сложным для изучения.
Zend Framework
Zend Framework — это свободный объектно-ориентированный PHP фреймворк для разработки веб-приложений, разработанный и поддерживаемый компанией Zend. Данный фреймворк как правило больше всего используют при разработке крупных коммерческих проектов.
Основным спонсором Zend Framework является Zend и компания Rogue Wave , но многие другие внесли компоненты или важные функции в платформу. Такие компании, как Google, Microsoft и StrikeIron, сотрудничают с Zend для предоставления интерфейсов для веб-сервисов и других технологий, которые они хотят сделать доступными для разработчиков ZF.
Компания Zend участвует в разработке ядра языка программирования PHP.
В качестве менеджера зависимостей пакетов Zend Framework использует Composer. Для тестирования веб-приложения применяется PHPUnit, а для непрерывной интеграции служба Travis CI.
Zend Framework следует стандартам PHP-FIG и включает реализацию PSR-7 для интерфейсов HTTP-сообщений.
Поддержка множества баз данных: MariaDB, MySQL, Oracle Database, IBM DB2, Microsoft SQL Server, PostgreSQL, SQLite и Informix.
Гибкий механизм кэширования по памяти или файловой системы.
Плюсы
- Отлично подходит для разработки коммерческих веб-приложений.
- Объектно-ориентированный подход к разработке.
- Несвязанные компоненты для повторного использования в проектах.
Минусы
- Не подходит для быстрой разработки проектов.
- Для русскоязычного сегмента разработчиков мало полезных материалов по разработке.
Codeigniter
CodeIgniter — это популярный PHP микро-фреймворк с открытым исходным кодом, для разработки веб-систем и приложений. Разработан компанией EllisLab, а также Риком Эллисом и Полом Бурдиком.
В CodeIgniter компоненты загружаются и процедуры выполняются только по запросу, а не глобально. Система не делает никаких предположений относительно того, что может потребоваться помимо минимальных основных ресурсов, поэтому система по умолчанию очень легкая.
Компоненты фреймворка слабо связаны между собой и не зависят друг от друга. ем меньше компонентов зависит друг от друга, тем более гибкой и многоразовой становится система.
Хотя CodeIgniter работает довольно быстро, объем динамической информации, отображаемой на страницах, будет напрямую зависеть от используемых ресурсов сервера, памяти и циклов обработки, которые влияют на скорость загрузки страниц.
Поэтому CodeIgniter позволяет кэшировать страницы для достижения максимальной производительности. с помощью встроенного компонента кэширования.
CodeIgniter послужил основой в разработке новых фреймворков: Kohana и Rain Framework. Многие идеи CodeIgniter были применены во фреймворках Fuel PHP и CodeLighter.
Плюсы
- Отличная документация и англоязычное сообщество.
- Высокая производительность фреймворка.
- Небольшой размер фреймворка.
- Предоставляет легкие и простые решения для разработки.
- Подходит для быстрой разработки небольших сайтов и веб-приложений.
- Структура фреймворка не требует строгих правил кодирования.
- Не требует сложной настройки, почти нулевая конфигурация.
- MVC-архитектура веб-приложения.
- Слабая связанность компонентов.
- Множество подключаемых библиотек и помощников.
Минусы
- Долгий застой в развитии Codeigniter 3. Сейчас перешел к новым владельцам Технологическому институту Британской Колумбии (British Columbia Institute of Technology — ВСІТ) и находится в стадии разработки новой версии — CodeIgniter 4.
Плюсы и минусы фреймворков будут пополняться и изменяться по мере возможности, изучения и работы с ними.
Краткая итоговая таблица с описанием особенностей фреймворков:
Laravel | Yii | Symfony | Zend Framework | Codeigniter | |
Лицензия | MIT | BSD | MIT | New BSD License | MIT |
Документация | хорошая | отличная | хорошая | неплохая | лучшая |
Сообщество | сильное англоязычное, русскоязычное слабое | сильное русскоязычное, англоязычное слабое | сильное англоязычное | сильное англоязычное | сильное англоязычное, упадок русскоязычного |
Дополнительные пакеты и расширения | |||||
Установка через Composer | |||||
PHP 7 | |||||
Базы данных | MySQL, Postgres, SQLite и SQL Server | MySQL, MariaDB, SQLite, PostgreSQL, CUBRID, Oracle, MSSQL | MySQL, PostgreSQL, SQLite или любая другая PDO-совместимая СУБД) | MariaDB, MySQL, Oracle Database, IBM DB2, Microsoft SQL Server, PostgreSQL, SQLite и Informix | MySQL, PostgreSQL, MSSQL, SQLite, Oracle. |
Логирование | |||||
Миграции | |||||
Безопасность Защита от SQL- injection, XSS, CSRF |
Вывод
Laravel на данный момент является наиболее перспективным PHP фреймворков и подходит для создания как небольших, так и крупных веб-проектов.
Заниматься разработкой новых проектов на Yii2 по прежнему можно, как и продолжать вести существующие проекты. Версия 3 пока еще находится в разработке, поэтому Yii находится в пролете и лучше для этого взять другой фреймворк, например, Laravel.
Symfony и Zend Framework лучше всего использовать для крупных коммерческих проектов с длительным периодом разработки.
CodeIgniter не умер, а новые владельцы продолжают развитие CodeIgniter 4.
Очень важным фактором в развитии фреймворков является коммерческая направляющая вокруг фреймворка. Если у него нет спонсоров, то рано или поздно, команда разработчиков попросту потеряет всякий интерес к участию в развитии фреймворка. Немалую роль в развитии фреймворка является маркетинг. Нет популярности и пиара вокруг фреймворка, а значит и нет разработчиков, заинтересованных в развитии фреймворка.
PHP фреймворки являются незаменимым инструментом для быстрого возведения фундамента любого сайта. Они помогут ускорить процесс разработки и сделать качественный проект, избежав программирования всех частей с нуля. Использовать или не использовать тот или иной PHP фреймворка — ваше решение.
unetway.com
Фреймворк — это… Что такое Фреймворк?
Фреймворк (англ. framework — каркас, структура) — структура программной системы; программное обеспечение, облегчающее разработку и объединение разных компонентов большого программного проекта. В отличие от библиотек, которые объединяют набор подпрограмм близкой функциональности, фреймворк содержит в себе большое количество разных по назначению библиотек. Употребляется также слово «каркас», а некоторые авторы используют его в качестве основного, в том числе не базируясь вообще на англоязычном аналоге.[1][2][3] Можно также говорить о каркасном подходе[3] как о подходе к построению программ, где любая конфигурация программы строится из двух частей: первая, постоянная часть — каркас, не меняющийся от конфигурации к конфигурации и несущий в себе гнезда, в которых размещается вторая, переменная часть — сменные модули (или точки расширения).
Фреймворк программной системы
Это каркас программной системы (или подсистемы). Может включать вспомогательные программы, библиотеки кода, язык сценариев и другое ПО, облегчающее разработку и объединение разных компонентов большого программного проекта. Обычно объединение происходит за счёт использования единого API.
Примеры: веб-фреймворки Symfony, Django.
Отличается от библиотеки тем, что выполняет код, написанный для него, а не исполняется сам. Пример программного фреймворка — CMF (Content Management Framework), а пример библиотеки — модуль электронной почты.
Также, в отличие от библиотеки, которая объединяет в себе набор близкой функциональности, каркас содержит в себе большое число разных по тематике библиотек.
Фреймворк приложения
Одним из главных преимуществ при использовании каркасных приложений является то, что такие приложения имеют стандартную структуру. Каркасы приложения стали популярны с появлением графических интерфейсов пользователя, которые имели тенденцию к реализации стандартной структуры для приложений. С их использованием стало гораздо проще создавать средства для автоматического создания графических интерфейсов, так как структура внутренней реализации кода приложения стала известна заранее. Для обеспечения каркаса обычно используются техники объектно-ориентированного программирования (например, части приложения могут наследоваться от базовых классов фреймворка).
Одним из первых коммерческих фреймворков приложения был MacApp, написанный Apple под Macintosh. Первоначально созданный с помощью расширенной (объектно-ориентированной) версии языка Паскаль, впоследствии он был переписан на C++. Другие популярные каркасы для Macintosh включали Metrowerks Powerplant и MacZoop (все основаны на Carbon). Также WebObjects от NeXT.
В различной степени фреймворки приложения представляют собой Cocoa для Mac OS X, а также свободные фреймворки, существующие как часть проектов Mozilla, OpenOffice.org, GNOME и KDE.
Microsoft создала похожий продукт для Windows, который называется «Microsoft Foundation Classes» (MFC). На данный момент основным продуктом Microsoft для разработки ПО предлагается .NET Framework.
Кроссплатформенными каркасами приложений для операционных систем Linux, Macintosh и Windows являются, например, widget toolkit, wxWidgets, Qt, MyCore или FOX toolkit.
Фреймворк концептуальной модели
Абстрактное понятие структуры, которое используется в исследованиях для определения возможных способов решения проблемы или представления идеи.
Реализация фреймворка
Фреймворк определяется как множество конкретных и абстрактных классов, а также определений способов их взаимоотношения. Конкретные классы обычно реализуют взаимные отношения между классами. Абстрактные классы представляют собой точки расширения, в которых каркасы могут быть использованы или адаптированы.
Точка расширения — это та часть фреймворка, для которого не приведена реализация. Соответственно каркас концептуальной модели состоит из концептуальных классов, а каркас программной системы из классов языка программирования общего назначения.
Процесс создания фреймворка заключается в выборе подмножества задач проблемы и их реализаций. В ходе реализаций общие средства решения задач заключаются в конкретных классах, а изменяемые средства выносятся в точки расширения.
См. также
Примечания
Ссылки
biograf.academic.ru
Почему я ненавижу фреймворки / Habr
Я собираюсь сделать Java-веб-приложение (да, это будет Java, по некоторым причинам, которые сейчас озвучивать не хочу). В процессе работы, я оцениваю кучу J2EE portlet-enabled JSR-compliant MVC role-based CMS web service application container фреймворков.После кучи потраченного времени на прочтение документации, я уже готов выколоть себе глаза.
Давайте представим, что я решил сделать шкафчик для специй.
Я уже делал небольшие поделки из дерева и думаю, что знаю, что мне нужно: немного дощечек и несколько базовых инструментов: рулетка, пила, уровень и молоток.
Если бы я строил целый дом, а не просто шкафчик для специй, то мне все также требовались бы рулетка, пила, уровень и молоток (не считая остального).
Итак, я иду в магазин за инструментами и спрашиваю продавца, где я могу найти молоток.
— Молоток? — спросил он. — Никто уже давно не покупает молотки. Это старомодно.
Я был очень удивлен и спросил почему.
— Ну, проблема молотков в том, что их очень много видов. Кувалды, столярные молотки, с круглым бойком и т.д. Что если Вы купите один тип молотка, а потом поймете, что Вам нужен другой? Вам придется покупать отдельный молоток для следующей задачи. Как выяснилось, большинство людей хотят иметь один молоток, который бы справлялся со всеми типами задач, с которыми можно столкнуться.
— Хммммм. Ну, звучит разумно. Можете показать мне такой Универсальный Молоток?
— Нет. Мы их больше не продаем. Они устарели.
— Серьезно? С Ваших слов я понял, что Универсальный Молоток – это технология будущего.
— Как выяснилось, если сделать только один тип молотка, способный выполнять те же задачи, что и все виды молотков, тогда он будет не очень хорош для каждой из них. Забивать гвозди кувалдой не очень эффективно. И если Вы хотите убить свою бывшую девушку, то ничто не заменит молотка с круглым бойком.
— Верно. Но если никто больше не покупает Универсальные Молотки и если Вы больше не продаете все старомодные типы молотков, то какие же молотки Вы продаете?
— Вообще-то, мы не продаем никакие молотки.
— Но…
— Наши исследования показали, что людям совсем не нужен Универсальный Молоток. Всегда лучше использовать нужный тип молотка для работы. Поэтому, мы начали продавать фабрики молотков, способные создать любой молоток, какой Вам нужен. Все что Вам нужно — это укомплектовать фабрику рабочими, запустить механизм, купить сырье, оплатить расходы и — БАЦ — у Вас есть именно такой молоток, какой Вам нужен.
— Но мне как-то не хочется покупать фабрику молотков…
— Это хорошо. Потому что мы их больше не продаем.
— Но Вы же только что сказали…
— Мы обнаружили, что большинству людей не нужна целая фабрика. Некоторым людям, например, никогда не понадобится молоток с круглым бойком. (Может у них нет бывших девушек. Или они убили их ледорубом.) Поэтому, нет смысла кому-либо покупать фабрику молотков, которая может произвести любой тип молотка.
— Да, похоже на то.
— Вместо этого мы начали продавать чертежи фабрик молотков, позволяющие нашим клиентам построить их собственные фабрики молотков, специально разработанные для производства только тех типов молотков, которые им нужны.
— Дайте угадаю. Вы их больше не продаете.
— Нет. Конечно же нет. Как выяснилось, люди не хотят строить целую фабрику, только ради того, чтоб произвести пару молотков. Оставьте строительство профессионалам, вот что я всегда говорю.
— И здесь я с вами соглашусь.
— Ага. Поэтому мы прекратили продавать эти чертежи и начали продавать фабрики фабрик молотков. Каждая фабрика фабрик молотков строится для Вас экспертами своего дела, и вам не нужно волноваться о деталях постройки фабрики. Вы получаете все преимущества обладания собственной фабрикой молотков, производящей молотки для ваших потребностей.
— Ну, это как-бы, не совсем…
— Я знаю что Вы скажете! Мы их уже больше не продаем. По каким-то причинам, довольно мало людей покупали фабрики фабрик молотков, поэтому мы придумали новое решение проблемы.
— Угу.
— Когда мы сделали шаг назад и посмотрели глобально на инфраструктуру инструментов, мы обнаружили что люди разочарованы, т.к. им нужно управлять фабрикой фабрик молотков и произведенной фабрикой молотков. Это довольно обременительно, в случае если вам еще нужно управлять фабрикой фабрик рулеток, фабрикой фабрик пил, фабрикой фабрик уровней, не говоря уже о производстве пиломатериалов. Взглянув на ситуацию, мы поняли, что это слишком сложно для тех, кто просто хочет сделать шкафчик для специй.
— Да. Это уж точно.
— Поэтому, на этой неделе мы представим единую фабрику фабрик фабрик инструментов, чтобы каждую фабрику фабрик инструментов Вы могли произвести с помощью одной, объединенной фабрики. Фабрика фабрик фабрик будет производить только те фабрики фабрик инструментов, какие Вам нужны, и каждая из этих фабрик фабрик будет производить фабрику, основанную на Ваших требованиях к инструменту. Окончательный набор инструментов, полученных в результате этого процесса, будет идеален для вашего конкретного проекта. У Вас будет именно тот молоток, который вам нужен, и рулетка, подходящая именно под эту задачу, и все это по нажатию одной кнопки (конечно вам придется немного поработать с конфигурацией, чтобы заставить все это работать именно так как вам надо).
— Так у вас нет никаких молотков? Совсем никаких?
— Нет. Если Вы по-настоящему хотите высококачественный, промышленно разработанный шкафчик для специй, вам нужно нечто более продвинутое, нежели обычный молоток из магазина.
— И что, все сейчас так делают? Все используют единую фабрику фабрик фабрик инструментов, всякий раз, когда им нужен молоток?
— Да.
— Ладно… Я кажется понял, что мне нужно делать. Если сейчас это делается таким образом, будет, наверное, лучше и мне научиться так делать.
— Очень хорошо!
— Эта вещь идет с документацией, верно?
habr.com