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

Опубликовано: 01.09.2018

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

Топ 5 JavaScript фреймворков. React,Angular,Vue,jQuery

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



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

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


PhpStorm - Обзор IDE.Основы для новичка. Плюсы и минусы.

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

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


Топ- 5 Frontend фреймворков по версии Github

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

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

Поехали!

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

Как гласит Википедия, фреймворк в программировании (от англ. «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 скоро появится и на моем блоге, где я буду делиться своим опытом работы с ним.

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

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

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

rss