{"id":14277,"url":"\/distributions\/14277\/click?bit=1&hash=17ce698c744183890278e5e72fb5473eaa8dd0a28fac1d357bd91d8537b18c22","title":"\u041e\u0446\u0438\u0444\u0440\u043e\u0432\u0430\u0442\u044c \u043b\u0438\u0442\u0440\u044b \u0431\u0435\u043d\u0437\u0438\u043d\u0430 \u0438\u043b\u0438 \u0437\u043e\u043b\u043e\u0442\u044b\u0435 \u0443\u043a\u0440\u0430\u0448\u0435\u043d\u0438\u044f","buttonText":"\u041a\u0430\u043a?","imageUuid":"771ad34a-9f50-5b0b-bc84-204d36a20025"}

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

Что выбрать для разработки фреймворк или 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, но с опытом приходит осознание того, что умные дядьки уже очень много полезного за тебя понаписали и можно этим пользоваться. Я, кстати, об этом писал уже в формате вредных советов https://t.me/it_programmist/55

----

Популярные 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) Конечно же это далеко не исчерпывающие списки. Каждый найдёт что-то по вкусу.

0
3 комментария
Максим Тимофеев

Мне кажется нельзя ответить на этот вопрос, пока нет ТЗ для проекта. Писал статью на тему:
https://vk.com/@framework_yii-or-cms

Ответить
Развернуть ветку

Комментарий удален модератором

Развернуть ветку
Svetobor81

Что касается скорости работы сайтов: Высокая скорость загрузки и работы зависит только от HPH-7, отсутствие библиотеки JS QWery и чисты код, конечно же. Все остальные нужности, например в CMS можно и не использовать (отключить, сняв галочку с плагина :))))

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

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

Короче, Фреймвоки и Pyton раскручивают те, кто хотят заработать на обучении работы с ними, т.к. HTML и PHP на столько просты, что школьник разберётся )))

Я даже до сих пор в 2023 году для разработки ледингов использую банально HTML+CSS+JS (! не Qwery) - больше и не нужно.

Ответить
Развернуть ветку
DxdV

Теорема Бредора однозначно.

Ответить
Развернуть ветку
0 комментариев
Раскрывать всегда