Должен ли я создать свою собственную CMS или полагаться на готовую? [закрыто]

23

Связанный : как начинающий программист, я должен одобрить создание моих собственных библиотек по сравнению со сторонними библиотеками?

Будучи веб-разработчиком PHP среднего и продвинутого уровня и молодым (15 лет), должен ли я создавать совершенно новую CMS для своего веб-сайта или полагаться на готовое программное обеспечение, такое как WordPress или Drupal?

Я не совсем чувствую, что WordPress является достаточно мощным / масштабируемым, чтобы справляться с тем, что я пытаюсь сделать, и после того, как я немного поработал с Drupal за последние несколько дней, он просто не кажется мне по вкусу и также не очень хорошо задокументировано, поэтому у меня возникли некоторые проблемы с получением определенных простых заданий. Я люблю использовать что - то , такие как Цербер, но у меня нет денег , чтобы блюдо за коммерческую лицензию , которая в настоящее время составляет около $ 300, так что не это не годно.

Изначально я начал кодировать свой сайт как временную систему, чтобы мои пользователи могли приобретать обновления и другие вещи, такие как игровая валюта, до тех пор, пока я не смогу запустить новый сайт, но после того, как я запустил его, я быстро понял, что мне нужно сделать его масштабируемым Так что с тех пор я задумался о том, чтобы сделать его полноценным веб-сайтом. Это заняло всего пару дней, но все основы есть (регистрация, вход в систему, изменение учетной записи и т. Д.), И я считаю, что это будет отличным началом для частной CMS.

Последнее, что я хочу добавить, - это если я собираюсь создать свою собственную CMS, должен ли я использовать среду PHP, такую ​​как CodeIgniter, с которой у меня довольно много опыта?

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

Алекс Беннетт
источник
11
Не стоит недооценивать количество часов, затраченных на то, чтобы сделать существующие CMS такими, какие они есть. Вы можете быть сильно удивлены ...

Ответы:

23

Это полностью зависит от вашей ситуации. Там были созданы отличные сайты с CMS. Я думаю, что лучше сначала понять две концепции: CO и TCO.

CO (Стоимость владения)

Когда вы покупаете что-то, сумма, которую вы платите за это, составляет CO. В случае WordPress это ничто, потому что WordPress (или многие другие программы CMS) бесплатны.

TCO (общая стоимость владения)

Представьте, что вы покупаете компьютер за 10000 долларов. И что? Вам следует потратить время на установку программного обеспечения на нем (время является ценным ресурсом, поэтому вы все еще тратите деньги на этот компьютер), затем вы можете приобрести веб-камеру, другой DVD-привод и некоторые дополнительные кабели. Затем вам нужно научиться использовать установленное программное обеспечение. Другими словами, общая стоимость владения ПК не составляет 10000 долларов. Это намного больше, чем это.

В случае программного обеспечения CMS, их CO действительно ничто по очень низким ставкам. Но многие опыты показывают, что их совокупная стоимость владения совсем не низкая. Крупные компании тратят почти тысячи долларов на создание хорошего сайта в Joomla или WordPress.

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

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

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

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

Саид Нямати
источник
Вау, отличный ответ. Некоторые из этих вещей я никогда не рассматривал, но действительно приятно узнать сейчас. Как вы говорили с настройкой, мне действительно нужно много этого, поэтому я изначально обратился к Drupal, потому что слышал, что с такими вещами это должно быть здорово. В моем случае, однако, мне нужно много взаимодействовать между несколькими серверами, PayPal, тщательно настраиваемой регистрацией и другими вещами, которые на самом деле не так легко обрабатываются чем-то вроде Drupal. Большое спасибо за ваш ответ, я действительно ценю это. :)
Алекс Беннетт
Я также хотел бы, чтобы вы спросили, хотя, порекомендуете ли вы мне использовать фреймворк, такой как CodeIgniter, или создать свой собственный на ходу (возможно для опыта)?
Алекс Беннетт
1
Ну, @Alex Я рад, что смог помочь. Но я также извиняюсь, поскольку моя платформа - .NET, и я не очень знаком с фреймворками PHP. Но использование фреймворка определенно поощряет. Я использую Entity Framework в качестве ORM, поэтому использование ORM в PHP может действительно ускорить ваше развитие.
Саид Нимати
Хорошо, спасибо в любом случае. Единственная причина, по которой я не хотел бы использовать фреймворк, - это практика, но я считаю, что, вероятно, для меня было бы безопаснее использовать его в этом случае, так как это производственный сайт, и я не хочу иметь какой-либо случайный уязвимости, которые могут возникнуть при создании моей собственной CMS / framework.
Алекс Беннетт
1
@ Алекс Беннетт, Еще одна вещь, есть CMS с открытым исходным кодом. Если вы получите исходный код. Вы можете начать с этого, а затем изменить его по своему вкусу. Это действительно ускорит создание вашего собственного. Это как гибридный подход. Кто действительно хочет изобрести колесо?
MVCylon
18

Я играю адвокат дьяволов здесь, однако это должно быть сказано. Некоторые из наиболее распространенных проблем с разработчиками программного обеспечения:

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

Вы уверены, что не делаете ни одной из этих ошибок, потому что даже за 15 лет 300 долларов могут быть заработаны за несколько недель, а то, что вы предлагаете, может занять месяцы. Подумайте, что произойдет, если вы получите оплачиваемую работу и купите ExpressionEngine за эти деньги. Будет ли он доставлен раньше, с еще лучшими характеристиками, чем работа «Сделай сам»?

mattnz
источник
1
Я достаточно зрелый для вашего среднего 15-летнего возраста, как я надеюсь, вы можете сказать, и я не верю, что совершил ошибку, выполнив любое из перечисленных вами действий. Я потратил много времени на поиск возможных решений, но пока не нашел подходящего для моей ситуации. Что касается денег, мой бизнес приносит доход более 300 долларов в месяц (не так много, но он платит за выделенные машины), поэтому я мог получить деньги, но я стараюсь играть в них консервативно и инвестировать в то, что необходимость, такая как оборудование и реклама. Спасибо за ответ, хотя, я действительно буду иметь это в виду.
Алекс Беннетт
Я не думаю, что вы действительно сделаете CMS настолько же, насколько индивидуальное решение. Если вы делаете настоящую CMS, вы можете распространять / продавать CMS. Я думаю, что вы бы немного над головой (как и я, но ...), чтобы создать полную CMS.
HelloFictionalWorld
2
@ Алекс, вы должны учитывать это время == деньги, особенно ваше время. Сколько это стоит? Если вашей CMS требуется более 30 часов для производства (@ $ 10 / час), тогда ExpressionEngine - лучший выбор. Точно так же, если эти 30 часов работы, потраченной на другие вещи, приносят вашему сайту более реальную ценность, чем 300 долларов, тогда ExpressionEngine - лучший выбор.
CdMnky
8

На это есть два ответа.

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

Второе немного менее очевидно: да. Если вы хотите понять, как работает CMS и проблемы, возникающие при ее создании, то создание собственного не повредит. Вероятно, она никогда не будет обладать мощью и гибкостью одной из существующих систем CMS, и, поскольку во всем мире примерно 100000000000 систем управления контентом PHP, существует очень мало шансов, что кто-нибудь еще заинтересуется этим, но это также не будет есть вещи, которые вам не нужны, и это, вероятно, будет работать намного меньше и проще, чем любая из больших систем. Это займет много времени, результаты вряд ли будут такими же хорошими, и это не будет иметь никакого значения для остального мира, но с точки зрения вашего развития и обучения, это может быть полезным упражнением.

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

glenatron
источник
Спасибо за ответ. Просто для пояснения: если бы я создал эту CMS, у меня не было бы намерений выпускать ее, это не тот рынок, на котором я сейчас нахожусь. Это было бы только для меня и было бы построено, чтобы делать только то, что я хочу / нуждаюсь. Хотя я экспериментировал с другими, но я не могу найти тот, который задокументирован достаточно хорошо и выполняет то, что мне нужно, не заставляя меня каким-то образом менять ядро, поэтому я решил подумать о том, чтобы сделать свое собственное. Еще одна причина, по которой я хочу создать свою собственную, - это практика, так как я работаю над тем, чтобы стать веб-разработчиком (или чем-то подобным) после колледжа. :)
Алекс Беннетт
3
Я пишу как кто-то, кто внедрил очень маленький, очень простой, очень простой PHP-cms некоторое время назад и с тех пор использовал его для довольно многих сайтов. Он делает не более, чем крошечный фрагмент того, что делают более масштабные системы, но делает все, что мне нужно для небольших сайтов, и, поскольку он основан на плоских файлах, он работает практически везде. Поэтому я очень ценю то, что иногда ты действительно хочешь создать свой собственный.
Гленатрон
5

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

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

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

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


источник
Спасибо за вклад, у меня уже было немало того, как этого не делать, испытывает. Например, я пишу 30 строк кода для выполнения простой задачи, а затем через 2 дня просматриваю код и обнаруживаю, что могу сократить его до 10 строк. Этот опыт, каким бы раздражающим он ни был, определенно помогает процессу обучения, поскольку он склонен заставлять вещи «держаться» больше.
Алекс Беннетт
@ Алекс, этот опыт "как НЕ делать этого" зависит от размера кодовой базы вашего проекта. Но, я думаю, вам нужно сделать это хотя бы один раз, чтобы оценить это :)
3

Это только небольшой ответ на ваш вопрос. Я предполагаю, что вы в php, и вы не собираетесь делать готовый путь CMS. Добро пожаловать в клуб! Многие из нас пошли по тому же пути. Несколько советов, которые могут облегчить вашу нагрузку.

Я начал создавать свою собственную CMS, реализацию MVC, обработчик интернационализации (i18n), обработчик сеансов, некоторый способ уровня абстракции базы данных, какой-то способ обработки форм и т. Д. И затем я узнал, что то, что я делал, на самом деле сделано раньше, но лучше с помощью фреймворков. Таким образом, это означает, что вам не нужно заново изобретать колесо, а только там, где оно соответствует вашим потребностям. Фреймворки делают вашу жизнь проще, но они требуют много усилий, чтобы читать и учиться. Мне потребовался год, чтобы действительно овладеть Symfony, и я не жалею об этом ни секунды.

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

  • Symfony : Сегодня они выпустили стабильную версию 2.0, это захватывающая штука. Он слабо связан, что означает, что вы можете использовать либо компоненты, либо использовать все как интегрированный пакет. У него хорошая документация и активная база пользователей. В противном случае устаревшая версия 1.4 также остается очень надежной и полезной. У него много мощных плагинов, которые сделают вашу жизнь проще. (Связки)
  • Zend Framework : Некоторые утверждают, что он не совсем обновлен (не все брендовые новые функции 5.3), но он существует уже некоторое время, и в основном это набор полезных компонентов (опять-таки слабо связанных, а не игра «все или ничего»). ). Я использую его в качестве инструментария для таких вещей, как поиск (zend_lucene) и создание PDF-файлов. Но он также имеет обычно используемый набор контроллеров MVC. Вы должны изучить это, если вы этого не сделали. Очень хорошо задокументировано.
  • CakePHP : использовал его давно, и не мог пройти через документацию. Видимо, теперь это лучше и, вероятно, стоит вашего рассмотрения.

  • Yii : Я этим не пользовался, но в последнее время много шума, возможно, стоит вашего внимания.

  • CodeIgniter : Слышали, как многие хвалят codeigniter за легкость в освоении и простоту использования. Не использовал это.

Если вы хотите попробовать Python, многие также хвалят Django и, конечно, ruby ​​на рельсах.

Возможно, есть и другие, но это должно быть полезно для вас. Если вы не хотите их использовать, вы все равно можете многому научиться на этих платформах. Удачи!

Аренд
источник
Спасибо, у меня большой опыт работы с CodeIgniter, но я не пробовал ни одного другого. Я определенно приму их во внимание.
Алекс Беннетт
1
laravel.com ?? CodeIgniter в настоящее время наиболее широко используется, но Лаварель быстро обгоняет его
Mawg
1
Ага. Этому посту четыре года. Laravel только начинал тогда.
Аренд
1

Ответ во многом зависит от того, чего вы пытаетесь достичь.

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

Однако, если вы сосредоточены на игре, которую вы упоминаете, и на ее игроках, то ответ почти наверняка нет. Ваше время - это конечный и, следовательно, дорогой ресурс. Время, потраченное на разработку CMS, - это не время, потраченное на разработку игры, и именно игра приносит доход. Так что задайте себе вопрос. Разве время, потраченное на разработку этой CMS, вместо того, чтобы приобретать один, улучшит мой игровой опыт, больше времени, потраченного на ее разработку? Если ответ «да», то разработайте его, в противном случае - нет.

Точно так же решение CMS с открытым исходным кодом вместо ExpressionEngine должно сводиться к ToC, как говорит Саид. Проще говоря, если Cost (Wordpress)> Cost (ExpressionEngine), потратить 300 долларов. Здесь стоимость покупки_коста + (часы_для настройки * ваша_часа_рейт).

CdMnky
источник
1

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

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

Supermighty
источник
В то время как это, кажется, выбирает худшее из обоих миров, я не согласен с понижением, поэтому я поднял его.
Mawg
1

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

Флаг для меня был: «Я не совсем чувствую, что WordPress достаточно мощный / масштабируемый, чтобы справиться с тем, что я пытаюсь сделать, и после того, как я немного поработал с Drupal за последние несколько дней, это просто не кажется на мой взгляд, и не очень хорошо задокументировано, поэтому у меня возникли некоторые проблемы с тем, чтобы заставить его выполнять некоторые простые задачи ».

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

Ссылки, например:

http://drupal.org/cases

http://wpmu.org/wordpress-showcase-20-high-profile-sites-running-on-wordpress

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

А. Эдвардс
источник
0

Только вы можете ответить, может ли Wordpress или Drupal делать то, что вам нужно для CMS, но если вы хотите попробовать их, почему бы не использовать виртуальную машину под ключ Linux , такую ​​как Wordpress , Drupal , Joomla или любую из другие с тегом управления контентом .

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

Марк Бут
источник