Подписывайся на Telegram-канал

CMS или Фреймворк? Что выбрать?

CMS или Фреймворк? Что выбрать?

https://t.me/it_programmist

Что выбрать для разработки фреймворк или CMS? Чем они вообще отличаются и какие преимущества и недостатки у фреймвоков и CMS.

Фреймворк

Фреймворк от английского слова "каркас". Фреймворк - это надстройка над языком, набор библиотек. Хорошо отлаженных и прекрасно взаимодействующих между собой библиотек

CMS (Content Management System, система управления контентом) 

CMS(ЦМС) – это, по сути, уже готовый сайт, который нужно донастроить под свои нужды.

Ху из ху

Казалось бы, если фреймворк - это всего лишь набор библиотек, а CMS - это уже почти сайт, то к чему вообще этот глупый выбор? Но ведь если бы всё было так просто, то, очевидно, не было бы этой статьи и ты её не читал бы.

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

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

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

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

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

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

Буду подводить итоги.

Плюсы CMS:

  • Скорость. Шаблонное решение можно создать очень быстро.
  • Готовая админка. На многих популярных CMS достаточно удобная и понятная админка
  • Простота разработки. По большому счёту, чтобы создать простецкий сайт и навыками программирования и вёрстки обладать не обязательно.

Минусы CMS

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

Плюсы фреймворка

  • Гибкость. Можно реализовать любую задумку без "войны" с движком
  • Производительность. Повторю: сайт на CMS всегда уступает в производительности хорошо написанному сайту на фреймворке

Минусы фреймворка

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

Минусы решаются переиспользованием ранее написанного кода.

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

Когда лучше подойдёт CMS

  • Шаблонное решение, которое покрывается возможностями CMS
  • Быстрое, временное или недолгосрочное решение
  • Для клиентов с небольшими бюджетами
  • Сайт ради сайта. Клиенту просто нужен сайт и он не знает зачем
  • Недостаточно опыта у разработчка

Когда лучше использовать фреймворк

  • Нетиповой нешаблонный проект
  • Активно изменяющийся или подстраивающийся под тренды проект
  • Достаточно опыта, чтобы написать качественно на фремворке

Как мы видим CMS не проиграла это сравнение в одни ворота.

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

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

----

Популярные cms

  • WordPress
  • Joomla
  • Drupal
  • Magento
  • Bitrix
  • Prestashop
  • MODX
  • OpenCart

Все эти CMS написаны на PHP. Это далеко не весь список. CMS в основном пишутся на php из-за того, что их можно "воткнуть" куда угодно, хоть на самый дешёвый хостинг.

CMS других языках

  • taracot (nodeJS)
  • KeystoneJS (nodeJS)
  • Pelican (python)
  • DjangoCMS (python)
  • Refinery CMS (ruby)
  • Riot (java)

Популярные фреймворки

  • YII (PHP)
  • Synphony (PHP)
  • Laravel (PHP)
  • Zend (PHP)
  • Kohana (PHP)
  • Ruby on Rails (Ruby)
  • Django (python)
  • .NET (C#)
  • Express (nodeJS)
  • Koa (nodeJS)
  • Spring (java)

Конечно же это далеко не исчерпывающие списки. Каждый найдёт что-то по вкусу.


Ещё