Любой начинающий программист постигающий азы web-разработки рано или поздно задумывается о собственной системе управления сайтом - CMS. Изучают языки разметки HTML, погружаются в Javascript, jQuery, ну и конечно PHP, куда уж без него. Региструют собственный домен, оплачивают хостинг. А что дальше?
Дальше обдумывается платформа сайта - основа основ, венец творения, двигатель и сердце нашего web-ресурса, выбор CMS: бесплатная, платная или кропотливо написанная собственными руками? Большинство выберет что-то из популярных бесплатных - Wordpress, Joomla, Opencart список можно дальше продолжать бесконечно. Но об этих трех ниже.
Wordpress. Блоговый движок, адский конструктор, выбор миллионов. Прост, удобен, быстр, эникей в любой затее. Но например делать на нем магазин? Явный перебор.
Joomla. По праву одна из первых и жнец и на дуде игрец. Имеет свою аудиторию, но значительно меньше чем аудитория WP. Джумла платформа более жесткая по своей архитектуре, удобна в плане готовых кластерных вставок кода, блоков и т.д. прямо из коробки по умолчанию. Чем и хороша.
Opencart. С этим товарищем все просто - сразу получаем готовый магазин. Масштабируется до мультимагазина прекрасно. Мультиязычность - тоже прекрасно. Для коммерции собственно и предназначен. Многие разработчики любят лепить на wordpress магазинный плагин Woocommerce и кучу надстроек к нему и сверху, я сразу задаю вопрос - зачем? Опенкарт прекрасно справляется с продажами, мониторингом и прочими задачами интернет-магазина.
Теперь перейдем к платным, возьму одну, очень распространенную - Битрикс. Решение крайне популярно в рунете, различные пакеты и версии буквально для всего. Но когда начинаешь погружаться в глубины кода, сопровождения и разработки или поддержки.. Начинает сочится кровь из глаз и ушей. Мозг в шоке и недоумении. Напоминает пазл, тысячи кусочков кода живущих своей жизнью. Где начало где конец не понятно. Мне кажется битрикс больше навязывают нам на голову. Не лучший выбор.
Самописная CMS
Тут существует два пути:
- Первый путь - использовать готовый фреймворк.
- Второй - весь код пишется самостоятельно.
Какой путь выбрать и главное стоит ли он того? Тут нужно определить конечную цель таких затрат, времени и сил на реализацию уйдет прилично.
Если вы создаете сайты среднего уровня на потоке, вряд ли имеет смысл писать свою систему управления сайтом.
Если вы делаете одностраничники - аналогично. Лендо-генераторов навалом и готовых решений по созданию одностраничников в популярных CMS тоже.
Интернет магазин - сразу выкиньте идею писать ее самостоятельно. Придется орудовать огромным количеством данных и переменных. Учесть все и вся. Конечно если вы не Джэк Ма и у вас планах создать собственный Али. Лучше сразу взять готовое решение.
Но если у вас в планах: ресурс содержащий более одной страницы, динамичный ресурс (контент меняется постоянно), узкоспецифичный контент (схематический расчет андронного коллайдера или подсчет пчел в улье онлайн). Или делайте сайт для себя любимого/знакомого или банально по своей основной работе - тогда задуматься стоит.
Какие преимущества? Во-первых это оптимальная структура, отсутствие лишнего кода. Во-вторых, вы сами определяется все точки входа и их степень защиты. Сайт более защищен. Для большинства доступных в сети систем - код уже выложен и есть риск его взлома. Третье, очень важное преимущество - скорость работы. Код прост, сжат, обдуман. СЕО оптимизации подвергается легко, так же как и всем требованиям W3C, HTML5 валидации и прочим унифицированным требованиям. Или правится на ходу по мере необходимости.
Многие начнут возмущаться - да ну, сейчас хостинги быстры, к чему заморачиваться, но какой бы быстрый хостинг не был - одно дело серверу отдать 1 мб данных или 10 не пойми чего. Ведь конечная его сборка будет уже в вашем браузере. Упс.. Мало кто об этом задумывается создавая JS-скрипт какой-нибудь яндекс карты с вариациями товаров, получая жуткие тормоза на выходе.
Фреймворки. Их много и на любой вкус. Заставляют дополнительно погрузиться нас в их особенности, изучение. Нужно ли оно? Из недостатков - требуют git-репозиториев и конечно дополнительных телодвижений. Представим себе самый простой хостинг в сети - размещение на нем уже создаст ряд трудностей. Composer'a нет, ничего нет, приплыли. VPS/VDS сервер на начальном этапе тоже большинству абсолютно не нужен. Ведь хостинги быстры? )) Далее - в силу своего общедоступного кода, фреймворки имеют аналогичные недостатки других распространенных cms.
Своя разработка CMS требует приличного объема знаний. Если пишите сами с нуля, нужно понимать как вообще функционирует сайт от и до. Учитывать особенности сервера, ключевые правила безопасности, как будет функционировать ваша система, какие данные входят, выходят, хранятся и т.д. Таких моментов огромное количество.
Отсюда задайте себе вопрос - действительно ли есть необходимость писать свою систему управления сайтом с нуля? Стоит ли тратить столько времени и усилий? Сопровождать, тестировать? А ошибки будут обязательно, без этого никак.
Пэкшот. Если вы начинающий web-программист, создайте что-нибудь простенькое, пощупайте, посмотрите. Учиться на чем-то же нужно? Через несколько лет попробуйте снова, ваше творение уже будет более полезное и наверняка успешно работающее. Еще через несколько лет - вы с улыбкой посмотрите на то что делали раньше и задумаетесь - сейчас бы я делал все по-другому... И выберите привычную и любимую cms со своими модификациями.
Технологии, ваш накапливаемый опыт и практика программирования не стоят на месте. Поэтому разработка узкоспециализированных самостоятельных CMS - удел компаний с их ресурсами и возможностями, а простому обывателю-программисту проще склониться к выбору доступной хорошо документированной платформы, а для решения узких задач, дописать к ней плагин/скрипт выполняющий исключительно их. К чему, собственно я и пришел, потратив очень много лет программирования под web.