Фреймворк что такое

Типы веб-фреймворков

У фреймворков есть две основные функции: работа на серверной стороне (бэкенд) и работа на клиентской стороне (фронтенд).

Фронтенд-фреймворки связаны с внешней частью приложения. Простыми словами, они отвечают за внешний вид приложения. Бэкенд отвечает за внутренне устройство приложения. Рассмотрим оба типа поподробнее.

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

  • Django — Python;
  • Zend — PHP;
  • Express.js — JavaScript;
  • Ruby on Rails — Ruby.

Чтение по теме: Django или Ruby on Rails: какой фреймворк выбрать?

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

  • Backbone+Marionette;
  • Angular;
  • Ember.js;
  • Vue.js.

Все эти фреймворки используют JavaScript.

Многофункциональные фреймворки. Meteor известен как фулл-стек веб-фреймворк. Это значит, что он удовлетворяет почти все потребности как со стороны клиента, так и со стороны сервера, что делает Meteor чрезвычайно популярным. Вам не нужно тратить время на то, чтобы наладить взаимодействие между двумя фреймворками через REST API — вы можете просто выбрать Meteor и ускорить процесс разработки. Но это не главная особенность этого фреймворка. Обе стороны — серверная и клиентская — работают на одном языке, поэтому вы можете создавать и использовать для них один и тот же код. Следующая особенность — «режим реального времени» — когда вы что-то меняете в одном интерфейсе, изменения происходят и в остальных. В качестве примера можно взять документ или таблицу с общим доступом. Когда вы добавляете комментарии или как-то изменяете содержимое, другие пользователи тоже это видят.

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

Более легковесные варианты специализируются на решении конкретных задач — такие фреймворки называются микрофреймворками. Они не предоставляют «из коробки» всё, что нужно, однако иногда лучше разложить функциональность на несколько подоходов (фреймворки, микрофреймворки, библиотеки). Функциональность микрофреймворков можно расширять с помощью сторонних приложений и создавать небольшие проекты на их основе или совместить микрофреймворк с основным «большим» фреймворком.

Например, если ваше приложение основано на Django и вам нужны веб-сокеты, то вы можете воспользоваться микрофреймворком aiohttp.

Другой пример: если ваше приложение не очень большое и вам нужна только простая маршрутизация URL и шаблоны с несложным контекстом, вы можете использовать Flask с Jinja2 (или другим шаблонизатором) вместо Django.

Особенности и архитектура

Несмотря на то, что все фреймворки отличаются друг от друга и выбрать какой-нибудь из них может быть очень сложно, есть несколько вещей, общих для них всех. Речь идёт об архитектуре и особенностях, которые так же важны, как и функции.

Архитектура

Архитектура почти всех фреймворков основана на декомпозиции нескольких отдельных слоёв (приложения, модули и т.д.), что означает, что вы можете расширять функциональность исходя из своих потребностей и использовать изменённую версию вместе с кодом фреймворка или использовать сторонние приложения. Такая гибкость является ещё одним ключевым преимуществом фреймворков. Существует множество open-source сообществ и коммерческих организаций, которые создают приложения или расширения для популярных фреймворков, например, Django REST Framework, ng-bootstrap и т.д.

MVC — Модель, Представление и Контроллер (Model-View-Controller) — три составляющих каждого веб-фреймворка.

Модель содержит все данные и уровни бизнес-логики, её правила и функции.

Представление отвечает за визуальное отображение данных, например, диаграммы, графики и т.д.

Контроллер просто трансформирует данные для команд предыдущих двух составляющих.

Они неотделимы друг от друга, поэтому важно как следует во всём разобраться, чтобы избежать ошибок во время работы приложения.

Особенности

Теперь давайте посмотрим на некоторые общие особенности, которые делают фреймворки многофункциональными и удобными на практике.

Веб-кэширование

Кэширование просто помогает хранить разные документы и позволяет избежать надоедливой перегрузки сервера. Пользователи могут использовать его в разных системах при определённых условиях. Также оно работает на серверной стороне. Например, вы могли заметить кэшированные веб-страницы на странице результатов поисковой выдачи Google.

Скаффолдинг

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

Система веб-шаблонов

Система веб-шаблонов представляет собой набор разных методологий и программного обеспечения, реализованных для создания и развёртывания веб-страниц. Для обработки веб-шаблонов используются шаблонизаторы. Они являются инструментом фреймворка, отвечающим за веб-публикацию.

Сопоставление URL

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

Приложения

Множество типов веб-приложений поддерживаются веб-фреймворками. В основном они применяются для создания таких приложений, как блоги, форумы, CMS и т.д.

Вся эта функциональность свойственна всем фреймворкам. Однако, как ни парадоксально, с таким широким ассортиментом разработчик теряется и не может ничего выбрать. Поэтому вам нужно придумать критерии, согласно которым можно выбрать лучший инструмент, облегчающий разработку. Например, ваш выбор может зависеть от предпочитаемого языка программирования. Как было упомянуто ранее, фреймворки можно найти на всех языках. Кроме того, нужно обратить внимание на круг возможностей набора инструментов фреймворка. Если он покрывает ваши потребности, то вы на верном пути. Говоря о предпочтениях, стоит отметить, что они могут служить как во благо, так и во вред. Конечно, лучше использовать фреймворки, которые проще изучить, однако порой написанные по правилам старой школы и редко используемые, но подходящие фреймворки, могут привести вас к успеху.

Руководства

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

Например, Tutorialspoint — кладезь разных руководств, покрывающих структуру каждого фрейморка и предоставляющих информацию по разным деталям. Есть руководства по Java-фреймворкам, PHP-фреймворкам и Zend.

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

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

Если у вас появляются какие-то вопросы, то стоит заглянуть на StackOverflow.

Этим сайтом пользуются разработчики по всему миру. Здесь они делятся своим опытом и помогают другим решать их проблемы. Просто задайте вопрос, и вам предложат несколько возможных решений.

Итак, с фреймворками не так сложно разобраться, как кажется. Не тратьте время на панику — посмотрите пару руководств и попробуйте поработать со своим первым фреймворком.

Отличие от библиотеки

«Фреймворк» отличается от понятия библиотеки тем, что библиотека может быть использована в программном продукте просто как набор подпрограмм близкой функциональности, не влияя на архитектуру программного продукта и не накладывая на неё никаких ограничений. «Фреймворк» же диктует правила построения архитектуры приложения, задавая на начальном этапе разработки поведение по умолчанию — «каркас», который нужно будет расширять и изменять согласно указанным требованиям. Пример программного фреймворка — C.M.F. (Content Management Framework), а пример библиотеки — модуль электронной почты.

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

Другим ключевым отличием «фреймворка» от библиотеки может быть инверсия управления: пользовательский код вызывает функции библиотеки (или классы) и получает управление после вызова. Во «фреймворке» пользовательский код может реализовывать конкретное поведение, встраиваемое в более общий — «абстрактный» код фреймворка. При этом «фреймворк» вызывает функции (классы) пользовательского кода.

Фреймворк приложения

Одно из главных преимуществ при использовании «каркасных» приложений — «стандартность» структуры приложения. «Каркасы» стали популярны с появлением графических интерфейсов пользователя, которые имели тенденцию к реализации стандартной структуры для приложений. С их использованием стало гораздо проще создавать средства для автоматического создания графических интерфейсов, так как структура внутренней реализации кода приложения стала известна заранее. Для обеспечения каркаса обычно используются техники объектно-ориентированного программирования (например, части приложения могут наследоваться от базовых классов фреймворка).

Одним из первых коммерческих фреймворков приложения был MacApp, написанный Apple для Macintosh. Первоначально созданный с помощью расширенной (объектно-ориентированной) версии языка Object Pascal, впоследствии он был переписан на С++. Другие популярные каркасы для 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) являются, например, Unity 3D, widget toolkit, wxWidgets, Qt, MyCoRe или FOX toolkit.

> Фреймворк концептуальной модели

Абстрактное понятие структуры, которое используется в исследованиях для определения возможных способов решения проблемы или представления идеи.

Ссылки

Фреймворк на Викискладе

Для улучшения этой статьи желательно:

  • Найти и оформить в виде сносок ссылки на независимые авторитетные источники, подтверждающие написанное.

Приветствую вас, мои постоянные читатели и случайные посетители cccp-blog.com!

Сегодня наш разговор будет посвящён особенностям создания сайтов на фреймворке, а точнее, обзору плюсов и минусов frameworks как для разработчиков, так и для заказчиков.

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

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

Если вы подписаны на обновления проекта, то могли заметить, что недавно я опубликовал статью, содержащую все «за и против» CMS, в которой рассказывалось о особенностях данной категории движков с точки зрения как программиста, так и заказчика.

Статья получилась хорошей (я сам получил удовольствие при её написании :-)), поэтому при написании сегодняшнего материала, я решил следовать плану упомянутой публикации.

Сначала мы вспомним о том, что такое фреймворк вообще, а потом поговорим обо всех за и против фреймворков для заказчиков и разработчиков, которые мне удалось заметить во время общения с ними. Всё просто.

Поехали!

Что такое фреймворк?

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

Общение с фреймворком происходит благодаря его API (прикладной программный интерфейс), состоящее из специальных функций и других специфических конструкций (middleware у Laravel, к примеру), описанных в официальной документации.

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

Понятие фреймворка родственно с «библиотекой», которые активно используются в таких языках программирования как C++, Delphi и др. (всем известные dll-файлы, на которые иногда ругается Windows, написанный на C++).

Скажу больше, поскольку я начинал свой путь программиста именно с последних, то когда я начал вникать в web, думал, что фреймворк – это аналог библиотек для языков веб-программирования.

Оказывается, что это разные вещи, различия которых заключаются в маленьком, но весьма заметном нюансе.

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

Те, кто уже работал с фреймворками знают, каким образом это достигается.

Для разработки веб-ресурса разработчик вынужден сперва настроить веб-сервер, после чего создаётся каталог будущего сайта, куда устанавливается чистый framework, представляющий из себя набор каких-то файлов и каталогов, на базе которых уже и создаётся сайт.

Фреймворки, как и другие движки для сайтов, бывают самописными и официальными. О самописных фреймворках и своём отношении к ним я уже писал в отдельной статье по ссылке выше, поэтому не буду вдаваться в подробности.

Фреймворк, как вы могли убедиться, — это понятие универсальное, выходящее за рамки веб-программирования. У того же C++, оказывается, есть фреймворк – Juce. Однако, такого их количества, как в web, наверное, нет больше нигде.

Для одного только языка PHP их существует несколько десятков (всем известные Yii, Laravel, Symphony, CakePHP и др.). Также существуют фреймворки и для других языков, применяемых в web:

  • CSS (Twitter Bootstrap);
  • JavaScript (AngularJS);
  • Python (Django);
  • Ruby (Ruby-on-Rails)

Сложно сказать, чем обусловлено большое количество PHP-фреймворков. То ли какими-то слабостями языка, которые создатели frameworks хотят исправить с помощью своих творений.

То ли их обилие – это чисто маркетинговый ход, т.к., несмотря на то, что большинство фреймворков бесплатные и с открытым кодом (OpenSource), программисты весьма неплохо зарабатывают на создании дополнений для них.

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

Учитывая огромное количество PHP frameworks и их распространённость среди разработчиков, в дальнейшем разговоре о преимуществах фреймворков и их недостатков как для заказчиков, так и программистов под данным термином будут подразумеваться продукты именно для PHP.

Поэтому, если вы увидите какие-то нестыковки приводимых аргументов с frameworks для других языков, не спешите раздражаться 🙂

На этом наш краткий ликбез завершён, и мы переходим к самой вкусной части статьи – к обзору их достоинств и недостатков.

5 плюсов и 3 минуса фреймворков для создания сайтов для разработчиков

Как я уже писал ранее, опыт работы с фреймворками у меня имеется. В частности, с Laravel. Поэтому у меня была возможность оценить все достоинства и недостатки фреймворков воочию.

Начнём с их сильных сторон и поговорим о преимуществах использования фреймворков при разработке сайта, которые я отметил для себя как разработчик.

1. Полная свобода творчества. Заключается в том, что создание веб-ресурса с помощью фреймворка – это написание его кода с нуля, а не пользование «тем, что дают», как в случае с CMS.

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

В CMS же, повторюсь, помимо указанных ограничений вы будете иметь дело с готовым кодом сайта, который бывает не всегда читабельным (сколько людей, столько и стилей кодирования)

2. Разработка заключается именно в написании нового функционала, а не в урезании имеющегося, как в случае с CMS.

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

В то же время вся эта масса дополнений создаёт дополнительную нагрузку на железо сервера и снижает производительность сайта, т.е. он попросту тормозит.

Если не заходить так глубоко, то в CMS админка буквально перегружена инструментами, в которых путаются и разработчики и пользователи. Следовательно, на то, чтобы отключить лишнее, будет тратиться масса времени.

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

3. Наличие дополнений в виде пакетов и библиотек, реализующих готовые возможности.

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

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

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

4. HighLoad-адаптация. Честно говоря, даже не знаю, есть ли такой термин или нет 🙂 Просто захотелось описать одним словом огромный плюс фреймворков, который заключается в их относительно лёгкой (по сравнению с CMS) настройке под HighLoad (т.е. высокие нагрузки).

Реализован он наличием или поддержкой (есть все необходимые адаптеры и настройки) HighLoad-технологий (Memcached, Redis, Gearman) из коробки.

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

5. Если вы являетесь начинающим разработчиком, то работа с фреймворком приведёт вас к неизбежному профессиональному росту. Кроме того, его знания помогут вам в будущем найти серьёзную высокооплачиваемую работу в большой компании, занимающейся серьёзными проектами.

CMS – это всё-таки уровень мелких веб-студий, которые зарабатывают себе на жизнь штамповкой типовых сайтов. Исключение, пожалуй, составляют 1С-Битрикс и Magento, которых уважают и боятся разработчики, способные стать базой для многофункциональных HighLoad-ресурсов.

О преимуществах поговорили. Теперь самое время разобрать недостатки фреймворков для программистов. Сразу скажу, что их не так много, как достоинств.

По крайней мере, лично я их не нашёл так много, как плюсов frameworks.

1. Разработка отнимает много времени, т.к. большинство функционала придётся создавать самостоятельно с нуля. Даже банальные функции вроде корзины товаров и админки, которые доступны в CMS «из коробки», на фреймворк-базированном сайте придётся прописывать вручную.

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

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

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

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

Но, правды ради, стоит отметить, что запутанность чужого кода – это не частный недостаток фреймворков, а глобальная специфика программирования в целом. Поэтому отказываться от данного класса движков только лишь из-за данной особенности frameworks не стоит.

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

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

Так что решать вам 🙂

В качестве выводов относительно особенностей фреймворков для разработчика скажу, что если вы заботитесь о своём профессиональном и, как следствие, карьерном росте в IT-индустрии, то освоение frameworks должно стать неотъемлемой частью вашей деятельности.

Я ощутил это на себе: когда пытался найти работу, то во всех компаниях, способных платить серьёзную з/п, интересовались моими знаниями именно фреймворков, а не CMS. Про CMS спрашивали, в основном, владельцы мелких веб-студий.

Поскольку на тот момент я не был знаком с frameworks, то я вообще не понимал в чём дело. Только потом, при анализе портфолио обоих классов работодателей я заметил, что серьёзные компании занимались либо развитием своих крупных HighLoad-проектов, либо брались за разработку исключительно больших и перспективных сторонних проектов.

А такие проекты не могут быть реализованы ни на чём, кроме фреймворков, т.к., как правило, они обладают уникальным функционалом, недоступным в CMS, и являются HighLoad-ресурсами.

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

Естественно, в веб-студиях больших денег мне не предлагали.

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

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

Так что на вопрос «На чём быстрее создать сайт – на CMS или фреймворке?» очень сложно ответить, т.к. отключение лишних функций может по времени занять столько же, сколько разработать ресурс с нуля на framework.

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

Как-то так 🙂

Достоинства фреймворков и недостатки для заказчиков

Давайте теперь разберёмся, какие же плюсы и минусы фреймворков существуют для заказчиков.

В отличие от предыдущей точки зрения, заказчиком лично я не был. Зато я много с ними общался как при работе на фрилансе, так и через Project Manager-ов на постоянном месте работы.

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

Начнём традиционно с приятного, и поговорим о преимуществах PHP фреймворков для заказчиков.

1. С помощью фреймворка можно реализовать проект абсолютно любой сложности и с функционалом, каким только душа не пожелает.

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

Если перед разработкой сайта на CMS у многих заказчиков болит голова по поводу наличия модулей для необходимого функционала для выбираемой платформы и их стоимости, то в случае с фрейморками всё намного проще.

На базе framework можно сделать абсолютно всё, что возможно реализовать с помощью кода (чтобы вы не подумали, что фреймворк – это ключ к решению всех мировых проблем). И точка!

2. Сайты на фрейморках более производительны, чем на CMS, т.к. в них присутствует только необходимый функционал.

Как уже и говорилось, фреймворки совсем не похожи на ЦМС, в которых по умолчанию напичкано множество функций и инструментов, порой совершенно не нужных.

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

При разработке сайтов на фреймворках такой проблемы нет – на сайтах установлен только нужный функционал, который при условии тщательного тестирования и оптимизации кода (тут уже всё на совести разработчика) даст сайту просто умопомрачительную производительность 🙂

3. HighLoad-адаптация, о которой я уже говорил, перечисляя особенности фреймворков для программистов.

Поскольку frameworks более гибки в HighLoad-настройке, чем те же CMS, то сделать сайт производительным при большой нагрузке в данном случае будет достаточно быстро и, следовательно, дешевле, чем «подпиливать» CMS или другие типы движков.

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

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

1. Разработка сайта занимает большое количество времени.

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

2. Следовательно, стоимость сайта, разработанного на базе фреймворка, будет больше аналогичного проекта, реализованного на CMS.

Хотя, правды ради, нужно сказать, что проект проекту рознь. Как уже говорилось, разработав Интернет-магазин на ЦМС вместо фреймворка, вы выиграете по времени, а, следовательно, и по деньгам.

А вот в случае с лендингом, заказав его разработку на CMS, вы можете и проиграть.

3. Несмотря на то, что для фреймворков существуют решения, позволяющие внедрить готовый функционал путём их установки на сайт, данный процесс не так-то прост.

Как уже говорилось, дополнительный функционал для frameworks в большинстве случаев реализован в виде пакетов.

Для того, чтобы установить в фреймворк пакет, для начала на хостинге нужно будет установить пакетный менеджер (Composer для PHP, Bower для JavaScript и CSS, npm для Node.js и т.д.), затем настроить его, научиться с ним работать, а только уже после всего этого найти и установить требуемый пакет.

Согласитесь, что данный способ расширения «слегка» усложняет работу с фреймворками простым смертным 🙂 И в данном моменте фреймворки существенно уступают CMS, где установка модулей и шаблонов занимает, от силы, 1 минуту.

4. Фреймворк – инструмент для профессионалов, следовательно, в тематических сообществах можете даже не пробовать создавать топики с названиями типа «Настройка корзины заказов» или «Как добавить новую категорию», которыми рябят форумы, посвящённые CMS.

В лучшем случае вам предоставят простыню кода, с которым придётся разбираться самостоятельно, или насоветуют кучу библиотек, с которыми вы не будете знать, что делать. В худшем — высмеют или вообще забанят 🙂

К чему эта куча букв? Да к тому, что самостоятельно добавить новую функцию на сайт, разработанный на базе фреймворка вам вряд ли удастся самостоятельно. Как выход из ситуации – придётся обращаться за помощью к профессиональным разработчикам, которые имеют опыт работы с требуемой платформой.

5. А услуги профессионалов — это, в свою очередь, — дополнительные расходы.

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

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

Причём, не лишним будет оговорить с ним заранее стоимость как разработки ресурса, так и его поддержки, а также оформить всё это в виде соответствующего договора.

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

Вот такие они, эти PHP frameworks. Где-то выигрываем, а где-то теряем. В общем, как и везде.

Какие же выводы можно сделать по поводу использования фреймворков для создания сайтов заказчиками?

Прежде всего, framework будет идеальным решением, если у вас в планах есть создание крупного HighLoad проекта с уникальным функционалом. Здесь самым ключевым моментом, кстати, будет именно уникальный функционал.

Если же вам нужен просто типовой Интернет-магазин, то лучше посмотрите в сторону СMS. А если вы затрудняетесь определить, будет ли желаемый вами функционал типовым для данного типа ресурса, то всегда можете проконсультироваться с разработчиком, который сможет вам назвать и предварительную стоимость.

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

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

Думаю, не стоит говорить, что для проектов такого масштаба ребят с фриланса лучше не дёргать 🙂 Разве что для консультации по поводу стека технологий и стоимости.

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

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

Кстати, цикл статей по созданию сайта на фреймворке Laravel скоро появится и на моем блоге, где я буду делиться своим опытом работы с ним.

Пишите свои отзывы в комментариях и делитесь статьёй со своими друзьями и единомышленниками в социальных сетях с помощью кнопок под статьёй.

Также не забывайте вступать в наше сообщество Вконтакте, где вы всегда сможете задать интересующий вас вопрос и получить на него развёрнутый ответ.

На этом всё! До новых встреч 😉

P.S.: если вам нужен сайт либо необходимо внести правки на существующий, но для этого нет времени и желания, могу предложить свои услуги.

Более 5 лет опыта профессиональной разработки сайтов. Работа с PHP, OpenCart, WordPress, Laravel, Yii, MySQL, PostgreSQL, JavaScript, React, Angular и другими технологиями web-разработки.

Опыт разработки проектов различного уровня: лендинги, корпоративные сайты, Интернет-магазины, CRM, порталы. В том числе поддержка и разработка HighLoad проектов. Присылайте ваши заявки на email cccpblogcom@gmail.com.

И с друзьями не забудьте поделиться 😉 Понравилась статья? Поделись с друзьями:

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

Выбор слишком велик, а выделить правильный фреймворк стало довольно проблематично. Как и у множества других разработчиков, ваш взгляд может пасть на популярные, проверенные и надежные фреймворки Bootstrap и Foundation. Однако новые, но не такие известные фреймворки могут намного больше подходить под ваши нужды. В таких условиях вам просто необходимо разобраться в самых популярных фреймворках на сегодня.

На что нужно смотреть при выборе front-end фреймворка

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

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

Адаптивный дизайн – любой разрабатываемый вами сайт должен хорошо отображаться на всех устройствах, так как все больше людей заходят в интернет через мобильные устройства. Сайт Similar Web выпустил отчет состояние мобильного интернета в США за 2015 год, в котором говорится, что 56 процентов потребителей трафика ведущих сайтов в США заходят в интернет с мобильных устройств. Ищите front-end фреймворки с поддержкой адаптивного дизайна, тогда у вас будет на одну проблему меньше.

JavaScript. Быстрый старт

Изучите основы JavaScript на практическом примере по созданию веб-приложения

CSS препроцессоры – если вы используете CSS препроцессоры, к примеру, Sass или LESS, проверьте, чтобы они были совместимы с фреймворком.

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

Прототипы – идеальный front-end фреймворк позволяет быстро создавать вайрфреймы и прототипы для ускорения процесса дизайна и разработки.

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

ТОП-10 front-end фреймворков в 2016

Без лишних слов представляю вам восьмой по популярности front-end фреймворк в 2016 году.

Bootstrap

ТОП был бы неполным без очень популярного front-end фреймворка Bootstrap. Авторами фреймворка являются создатели Twitter, которые выпустили его в 2011 году. Самый используемый open-source фреймворк в мире.

Как и в любой другой эффективный front-end фреймворк, в Bootstrap входят компоненты HTML, CSS и JS. Фреймворк придерживается стандартов адаптивного веб-дизайна, позволяя вам создавать адаптивные сайты любой сложности и размеров.

Постоянные обновления Bootstrap гарантируют, что вы получите самые новые и лучшие функции. К примеру, почти сразу в фреймворк были добавлены темы, отвечающие стандартам material design от Google. Темы были улучшены для поддержки Sass.

Плюсы:

поддержка адаптивного веб-дизайна (можно отключить по желанию);

обширная документация.

Минусы:

редко используемые стили увеличивают вес стандартного фреймворка до 276 Кб;

слишком много HTML классов и DOM элементов, что загрязняет код и путает пользователя.

Подходит для новичков и тех, кто предпочитает надежные front-end фреймворки.

Semantic-UI – новичок среди фреймворков, выделяющийся среди других, и у которого есть все шансы стать самым популярным front-end фреймворком.

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

Еще одна заметная особенность Semantic-UI в том, что он интегрируется с огромным количеством сторонних библиотек. Их столько, что вам, скорее всего, не понадобятся какие-то другие библиотеки. Все это делает процесс разработки проще и удобнее.

Плюсы:

семантические названия классов позволяют даже новичкам быстро освоиться;

маленький размер файлов и минимальное время загрузки, так как можно загружать только необходимые компоненты, у каждого из которых есть свой JS файл и стили;

универсальные элементы упрощают кастомизацию.

Минусы:

очень большие пакеты по сравнению с Foundation и Bootstrap;

фреймворк скудноват и мало подходит для создания сложных дизайнов.

Подходит новичкам и тем, кому нужен легковесный и шустрый фреймворк.

Foundation

Foundation от компании Zurb – это высоко продвинутый front-end фреймворк корпоративного класса, который идеально подходит для создания гибких и адаптивных веб-сайтов. Фреймворк используется на сайтах Facebook, eBay и Mozilla и из-за своей сложности может не подойти новичкам.

Этот богатый на возможности фреймворк поддерживает аппаратное ускорение для создания плавной, молниеносной анимации. Для рендеринга на мобильных устройствах в фреймворк включена библиотека Fastclick.js. Фреймворк написан на Sass и включает в себя специально разработанный атрибут для обмена данными, с помощью которого можно загружать легковесные HTML секции для мобильных экранов и секции потяжелее для больших экранов. О сравнении Foundation и Bootstrap можете прочитать в нашей статье Bootstrap против Foundation.

Плюсы:

нет заблокированных стилей, что дает вам больше гибкости;

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

Минусы:

довольно большой вес файлов по умолчанию;

немного сложноват для новичков.

Подойдет разработчикам с приличным опытом, чья основная задача – быстрая разработка, привлекательные и адаптивные сайты.

Materialize

Materialize – адаптивный front-end фреймворк, отвечающий спецификации Google по дизайну material design. В комплекте вы найдете готовые наборы кнопок, иконок, карточек, форм и других компонентов. Есть стандартная версия и версия под управлением Sass.

В Materialize есть удобная сетка, с помощью которой можно создавать макеты. Также в стандартном комплекте уже присутствуют стили материал дизайна для теней, шрифтов, цветов и т.д.

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

Плюсы:

огромный выбор компонентов;

адаптивность гарантирует, что сайты будут поддерживаться на всех устройствах.

Минусы:

большой размер файлов делает работу с фреймворком неудобной;

не поддерживается модель flexbox.

Подходит менее опытным разработчикам, которые хотят изучить материал дизайн от Google.

Material UI

Если вы ищите front-end фреймворк, который будет отвечать требованиям Google по материал дизайну, тогда Material UI для вас. Фреймворк Material UI – наиболее всеобъемлющая структура по реализации этих принципов, но есть один нюанс. Он не предназначен для создания дизайнов абсолютно новых сайтов.

Material UI работает под управлением препроцессора LESS, а в комплекте идут готовые стили и компоненты под материал дизайн. Фреймворк также использует компоненты React, что также плюс.

Material UI – фреймворк с высокой кастомизацией, а его стили разделены по отдельным файлам. То есть вы можете переписать LESS CSS переменные, не влияя на компоненты фреймворка.

Плюсы:

самый простой способ среди фреймворков для работы с материал дизайн от Google;

высокая кастомизация.

Минусы:

не предназначен для создания дизайнов с нуля;

требует хорошего понимания React.

Подходит для разработчиков, понимающих и работавших с React, и для тех, кто хочет придерживаться принципов материал дизайна без лишних сложностей.

Pure

JavaScript. Быстрый старт

Изучите основы JavaScript на практическом примере по созданию веб-приложения

Фреймворк Pure создан командой разработчиков Yahoo. В комплекте идет легкий массив CSS модулей, которые подходят под любой проект. С Pure вы с легкость сможете создавать адаптивные кнопки, меню, сетки, таблицы и т.д. Фреймворк написан на чистом CSS и не поддерживает JS или JQuery плагины.

После минификации и сжатия через Gzip фреймворк Pure сжимается до 4.5Кб, что делает его одним из самых легких и проворных front-end фреймворков. Pure идеально подходит для мобильной разработки, из-за чего он приглянулся множеству разработчиков.

Плюсы:

очень легкий, что обеспечивает быструю загрузку даже на мобильных устройствах;

гибкий массив CSS модулей можно использовать в абсолютно любом дизайне и проекте.

Минусы:

написан на CSS без поддержки JS или JQuery плагинов.

Подходит разработчикам, которые основной упор делают на создании адаптивных и быстрых мобильных сайтов.

Skeleton

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

Skeleton – адаптивный фреймворк, в основе которого лежит 12-ти колоночная сетка. В комплекте только необходимые элементы: кнопки, списки, таблицы, формы и т.д.

Плюсы:

очень легкий;

простота и удобство для написания маленьких проектов.

Минусы:

отсутствие широкого выбора компонентов, в отличие от больших фреймворков.

Подходит тем, кто создает небольшие проекты, где не нужны все стилевые компоненты, которые можно найти в больших фреймворках.

UIKit

UIKit – высокомодульный front-end фреймворк, выделяющийся среди большинства по множеству причин. Главная причина – наличие двух препроцессоров, LESS и Sass.

Благодаря своим гибким и адаптивным компонентам с понятными именами, UIKit стал одним из самых популярных front-end фреймворков.

Еще большую универсальной фреймворку придают 30 модульных компонентов. Среди компонентов: меню, HTML формы и таблицы, JS компоненты, например, выезжающие вкладки и модальные окна, общие элементы, такие как кнопки, знаки и перекрывающие слои, а также компоненты макета, такие как жидкие, адаптивные системы сеток.

Плюсы:

высокая кастомизация;

уникальная модульная структура, позволяющая добавлять компоненты к стилям, не оказывая влияния на общие стили;

возможность создавать сложные интерфейсы, благодаря компонентам наподобие вложенных списков.

Минусы:

фреймворк еще новый, в сети по нему очень мало ресурсов.

Подходит достаточно опытным разработчикам, так как на данный момент про фреймворк очень мало информации. Отлично подходит для создания как простых, так и сложных проектов.

Milligram

Milligram – еще один легковесный фреймворк, похожий на Skeleton. После сжатия через Gzip размер файла достигает 2Кб, что обеспечивает разработчикам простой и удобный старт.

Система сеток в Milligram отличается от большинства, так как она использует стандарт CSS Flexible Box Layout Module. Также в комплекте есть пара ключевых компонентов, которые помогут вам начать работу, среди которых шрифты, кнопки, формы, списки, таблицы, цитаты и т.д.

Плюсы:

очень легкий, всего 2Кб после сжатия через Gzip;

использует систему сеток Flexbox.

Минусы:

фреймворк довольно новый, про него очень мало информации;

минимальное количество компонентов стилей по сравнению с более крупными фреймворками.

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

Susy

Некоторые скажут, что Susy – не совсем front-end фреймворк, так как он решает сложные задачи по макетированию. По факту, множество людей расценивают Susy, как систему сеток, но она может стать незаменимым инструментом для людей, работающих с макетами.

Susy вооружает вас миксинами, с помощью которых можно создавать сетки. Фреймворк выполняет все вычисления за вас, что экономит много времени и сил.

Susy позволяет создавать сетки любой сложности. Если вы пытались решить проблему с созданием сложной системы сеток, вам поможет Susy.

Плюсы:

повышенная гибкость позволяет создавать сетки любой сложности;

автоматические вычисления.

Минусы:

не покрывает все вопросы дизайна сайта, что потребует еще одного фреймворка;

нет встроенных сеток.

Подходит разработчикам с уникальными задачами по созданию макетов.

Статистика по front-end фреймворкам

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

Bootstrap: 101,433 звезд

Semantic-UI: 28,170 звезд

Foundation: 24,127 звезд

Materialize: 21,515 звезд

Material UI: 19,631 звезд

Pure: 14,967 звезд

Skeleton: 12,622 звезд

UIKit: 7,433 звезд

Milligram: 4,195 звезд

Susy: 3,506 звезд

Кроме того, в сравнении ТОП-5 front-end фреймворков на Google Trends видно, что Bootstrap все еще на голову опережает своих конкурентов по числу упоминаний.

Заключение

Как видно, разные front-end фреймворки имеют свои преимущества. Что подходит одному разработчика или проекту, не подходит другому. Поэтому крайне важно провести анализ множества вариантов, прежде чем выбрать что-то конкретное.

Перед выбором front-end фреймворка определите свой уровень знаний, а также базовые требования вашего проекта. Скорее всего, один или несколько продуктов из списка идеально подойдут вам.

Что такое фреймворки и для чего они нужны?

Ты, наверное, заметил, что в мире программирования много интересных словечек? Одно из них – framework, которое можно дословно перевести с английского как «каркас», «структура», «конструкция».

Что же такое фреймворк? Если говорить скучным академическим языком, то это некий набор библиотек, который облегчает разработку любых продуктов: web-сайтов и web-сервисов, мобильных или десктопных приложений. В свою очередь, библиотекой мы называем совокупность файлов (или один файл), в которых хранятся подпрограммы, объекты, функции и другие данные, используемые программистом в работе. Кстати, в некоторых ЯП, например, в Python, библиотеки называются модулями.

Если же говорить более простым языком, то фреймворк – это рабочая среда, которая помогает разработчику быстро и качественно создавать программный продукт, не отвлекаясь на мелочи. Собрал каркас – прикрутил модули – тестируй.

Если продолжить рассуждения и перейти на метафоры (мы и так умеем, да), то framework можно сравнить с набором инструментов, который есть в распоряжении, скажем, автослесаря. Как он будет их использовать – зависит от его опыта, характера поломки автомобиля и других факторов. Так понятнее? Ну и отлично.

Фреймворк можно сравнить с инструментарием автослесаря

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

Виды фреймворков

Стоит навсегда уяснить, что каждый framework привязан к конкретной технологии и/или языку программирования. Приведем примеры:

  • Zend Framework. Это программный продукт используют многие профессиональные PHP-программисты. Он делает жизнь web-разработчика легче, прежде всего, потому, что содержит множество полезных библиотек. К ним относятся возможность интеграции проекта с YouTube и другими сервисами, упрощение работы с базами данных, пользователями, кэшированием и пр.
  • Bootstrap. Популярный фреймворк, помогающий быстро и качественно верстать макеты сайтов. Включает в себя шаблоны для создания слоев, кнопок, форм, блоков навигации и других элементов web-страниц.
  • Yii. Объектно-ориентированный фреймворк для создания масштабных web-приложений: интернет-магазинов, CRM-систем и пр. Главными достоинствами Yii является высокая производительность и безопасность.
  • Corona SDK. Богатейший инструментарий для разработки игр и приложений для Android. Его отличительной особенностью является то, что он работает на собственном языке программирования, который носит название Lua.

Получается, что выбрать фреймворк – задача не такая уж и сложная. Достаточно понять, в какой области деятельности ты хочешь развиваться, и – вперед.

Выбрать фреймворк несложно. Главное – понять, в какой сфере ты хочешь развиваться

Преимущества и недостатки framework’ов

Безусловно, использование фреймворков имеет массу достоинств. Приведем лишь некоторые из них:

  • Повышение скорости и удобства разработки
  • Сокращение затрат на создание приложения
  • Оптимизация рабочего времени
  • Написание чистого кода, не требующего существенного рефакторинга (переработки) в дальнейшем

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

Однако в нашем мире нет ничего идеального. Именно поэтому у фреймворков есть серьезные недостатки:

  • Проблемы с безопасностью. Почти все framework’и имеют открытый исходный код, что, конечно, напрямую влияет на их защищенность от внешних угроз.
  • Сложность освоения. По сути, любой фреймворк – это результат работы другого программиста, и не всегда до конца ясно, как он функционирует (фреймворк, конечно, а не программист :-)).
  • Необходимость переучиваться при смене продукта. Представь: ты освоил Zend Framework, но попал в команду, которая использует совершенно другой инструментарий. К сожалению, в природе не так много фреймворков, которые идеально похожи друг на друга, так что – ничего не поделаешь – придется переучиваться.

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *