我应该建立自己的CMS还是依靠预先建立的CMS?[关闭]


23

相关作为一个入门的程序员,与使用3rd-party库相比,我应该更喜欢构建自己的库吗?

作为中级到高级PHP Web开发人员,以及那时的年轻(15岁),我应该为我的网站构建一个全新的CMS还是依靠WordPress或Drupal等预制软件?

我并不完全认为WordPress足够强大/可扩展,足以处理我想做的事情,而在过去几天中与Drupal进行了相当多的修补后,它似乎并不能满足我的要求而且没有很好的文档记录,因此我在执行某些简单任务时遇到了一些麻烦。我喜欢使用的东西,例如ExpressionEngine,但我没有钱抛出了一个商业许可证,目前约为$ 300,所以这是一个不走。

我最初是将网站编码为一个临时系统,以便我的用户可以购买升级和其他东西(例如游戏中的货币),直到我可以建立一个新网站为止,但是当我开始使用该网站后,我很快意识到我需要对其进行扩展,因此从那时起,我就想到要使它成为一个功能全面的网站进行编码。它只花了几天的时间,但是所有的基本知识(注册,登录,帐户修改等)都在那里了,我相信这对于私人CMS来说将是一个不错的开始。

我要添加的最后一件事是,如果要构建自己的CMS,是否应该使用我有相当丰富经验的PHP框架(如CodeIgniter)?

也许其他开发人员可以向我暗示我可能正在从事的工作。


11
不要低估使现有CMS成为现有CMS所需的时间。您可能会感到非常惊讶……

Answers:


23

这完全取决于您的情况。CMS造就了很棒的网站。我认为我们最好先了解两个概念,CO和TCO。

文书主任(拥有成本)

当您购买东西时,所支付的金额为CO。如果使用WordPress,那不算什么,因为WordPress(或许多其他CMS软件)是免费的。

TCO(总拥有成本)

假设您以10000美元的价格购买了一台PC。那呢 您应该花时间在其上安装软件(时间是宝贵的资源,因此您仍在花钱在那台PC上),然后您可以购买网络摄像头,另一台DVD刻录机和一些额外的电缆。然后,您需要学习如何使用已安装的软件。换句话说,拥有一台电脑的总成本不是10,000美元。不仅如此。

如果使用CMS软件,则其CO的价格实际上非常低。但是许多经验表明,它们的总拥有成本并不低。大公司花费近数千美元在Joomla或WordPress中获得一个好的网站。

另一个因素是定制水平。有时您希望按原样使用软件,而无需进行任何更改。在这种情况下,WordPress,Joomla,Drupal或任何其他CMS可能都是很好的候选人,并且您不应该编写自己的CMS。但是有时候您需要高度的自定义。在这种情况下,您真的很沮丧地定制适合您需求的即用型CMS。

我实际上想使用现成的CMS软件,但是在花了宝贵的时间学习不同的CMS并发现每个CMS的缺点之后,我最终创建了自己的CMS。Thought Results是我的个人网站,是通过此CMS构建的。我将尽快发布它,以便其他人也可以使用它。

另一个因素是可扩展性。相信我,将CMS从静态转移到可扩展状态会让您变老。模板,模块,插件,提供程序,数据库和存储,路由机制以及Good CMS中的几乎任何部分都应该是可扩展的。

最后,我个人的建议是开始构建CMS,以便至少您了解它背后的一些最基本的概念。但也尝试使用现有的。祝好运。


哇,很好的答案。其中一些我从未考虑过,但现在真的很高兴知道。就像您说的那样,自定义确实很重要,这就是为什么我最初求助于Drupal的原因,因为我听说它对这样的事情非常有用。但是,就我而言,我需要在多台服务器,PayPal,广泛定制的注册以及其他诸如Drupal之类的东西不易处理的事情之间进行大量交互。非常感谢您的回答,我非常感谢。:)
Alex Bennett

我也想问您一个问题,您是否会建议我使用CodeIgniter之类的框架,还是在开发过程中构建自己的框架(也许是为了体验)?
亚历克斯·贝内特

1
好吧,@ Alex我很高兴我能提供帮助。但是我也很抱歉,因为我的平台是.NET,而且我对PHP框架不是很熟悉。但是绝对可以鼓励使用框架。我将实体框架用作ORM,因此在PHP中使用ORM确实可以促进您的开发。
2011年

好了,谢谢 我不想使用框架的唯一原因是针对实践,但是我认为在这种情况下使用一个框架可能更安全,因为它是生产站点,并且我不想流连忘返创建我自己的CMS /框架时可能出现的漏洞。
Alex Bennett

1
@Alex Bennett,另一件事,有开源CMS。如果您获得源代码。您可以从此开始,然后根据自己的喜好对其进行修改。这确实会加速构建您自己的。这就像一种混合方法。谁真正想重塑车轮?
MVCylon

18

我在这里扮演魔鬼拥护者,但是需要说。软件开发人员最常遇到的一些问题:

  • 在估计完成一个琐碎项目所需的时间和精力的情况下,让我们完成一个大项目
  • 完全缺乏对业务现实的理解
  • 高估自己的技能和生产力。
  • 低估复杂性和细微的细节
  • 相信他们的问题如此独特的没人会解决。

您确定自己没有犯任何这些错误吗,因为即使是15y0,也可能在几周内赚到$ 300,而您似乎要提出的建议可能要花几个月的时间。想想如果您找到一份有薪工作并用这笔钱购买了ExpressionEngine,会发生什么情况。它会比DIY作业更早交付,并且具有更好的功能吗?


1
我希望您能告诉您,您的平均年龄为15岁,我已经很成熟,而且我相信做您列出的任何事情都不会出错。我已经花了很多时间研究可能的解决方案,但还没有针对我的情况提出一个好的解决方案。至于钱,我的公司每个月的收入超过300美元(虽然不多,但是用专用机器付款),所以我可以拿到钱,但是我试图保守地玩,去投资那些必须的,例如硬件和广告。不过,感谢您的回答,我会牢记在心。
Alex Bennett

我认为您不会像自定义解决方案那样真正制作CMS。如果您制作的是真正的CMS,则可能会分发/出售CMS。我想您会有点头疼(就像我一样,但是...)去构建一个完整的CMS。
HelloFictionalWorld

2
@Alex您需要考虑时间==金钱,特别是您的时间。这个值多少钱?如果您的CMS需要30多个小时来生产(@ $ 10 / hr),则ExpressionEngine是一个更好的选择。同样,如果花在其他事情上的30个小时为您的网站带来的实际价值超过300美元,那么ExpressionEngine是一个更好的选择。
CdMnky 2011年

8

有两个答案。

一个很简单:不,不要重新发明轮子。有很多优秀的CMS系统,如果您学会使用一个很好的CMS系统,那么如果您有什么需要的东西没有提供,您可以将更多的技能专注于创建用于此目的的插件,而不是重新发明轮。

第二个不太明显:是的。如果您想了解CMS的工作原理以及创建CMS时遇到的问题,那么构建自己的CMS并没有什么害处。它可能永远不会具有现有CMS系统之一的功能和灵活性,并且由于周围大约有1000亿个PHP内容管理系统,因此几乎没有其他人会对它感兴趣,但是它也不会拥有您不需要的东西,它可能会比任何较大的系统更小,更简单。这将花费很多时间,结果不太可能会那么好,并且不会对世界其他地区产生任何影响,但是对于您的发展和学习而言,这可能是一个有用的练习。

无论如何,在着手构建自己的系统之前,我将尝试使用可用的主流系统,以了解它们的工作原理,它们的性能好以及您认为它们可以做得更好。充分了解这些内容可能会帮助您决定创建自己的文件是否有任何好处。


感谢您的回答。不过,只是要澄清一下:如果我构建了此CMS,则无意发布它,那不是我从事的市场。它只会对我来说,只会做我想要/需要的事情。尽管我已经与其他人进行了试验,但是我似乎找不到一个足够好的文档并可以完成我需要的事情而又没有强迫我以某种方式改变内核,这就是为什么我开始考虑自己制作一个的原因。我想建立自己的另一个原因是为了实践,因为我正在努力成为大学毕业后的网络开发人员(或类似的人)。:)
Alex Bennett

3
我写这篇文章的人不久前实现了一个非常小,非常简单,非常基本的PHP cms,并且此后在很多站点中都使用了它。它只不过是大型系统所做工作的一小部分,但它可以满足小型站点所需的一切,并且基于平面文件,因此几乎可以在任何地方运行。因此,我完全赞赏有时您确实只是想构建自己的。
glenatron

5

如果您从未尝试对CMS进行编程,那么这可能是一个很好的机会。您将学到很多东西,无论您是否完成,都会有一个很好的主意,例如:

  • 难做而容易
  • 如何国际化和本地化您的页面
  • 如何处理用户和角色
  • 如何处理基础数据结构的维护,而不需要SQL更新语句。
  • 如何处理多部分的页面。
  • 如何有效处理静态内容。
  • 如何扩展到多台计算机和高负载。
  • 如何为用户自定义和主题提供API。

其中一些您甚至可能发现您已经学会了这样做。那经验也很重要。

就个人而言,我已经了解到“它有多难”只能覆盖创建高质量产品实际需要完成的工作的几分之一,并且如果我要选择CMS,会寻找一种流行的代码,它具有可访问的可访问代码库和良好的文档,以及良好的插件体系结构,允许我编写合适的插件,然后在发布新版本时更新基本CMS。


感谢您的投入,我已经有很多这样做的经验。例如,我编写了30行代码来完成一个简单的任务,然后两天后查看该代码,发现我可以将其缩短为10行。这些体验无论多么令人烦恼,但它们无疑会使学习过程变得更加“艰难”,因此绝对有助于学习过程。
Alex Bennett

@Alex,这种“怎么去做”的经验与规模项目的代码库的大小。但是,我想您至少需要做一次才能体会到它:)

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上有很多经验,但是我没有尝试过其他任何一个。我当然会考虑它们。
Alex Bennett

1
laravel.com ?? CodeIgniter是目前使用最广泛的工具,但Lavarel很快超过了它
Mawg 2015年

1
对。这个职位已经四岁了。Laravel那时才刚开始。
2015年

1

答案很大程度上取决于您要实现的目标。

如果您打算发展自己的技能,请学习内容管理等。那么,是的,您一定要发展自己的技能。同样,如果您想学习框架,请使用它。

但是,如果您的重点是您提到的游戏及其玩家,那么答案几乎肯定是没有。您的时间是有限的,因此是昂贵的资源。花在开发CMS上的时间不是花在开发游戏上的时间,而是游戏创造了收入。因此,问自己一个问题。是花在开发此CMS上的时间,而不是花更多的时间来改善我的玩家的游戏体验,而不是花在开发游戏上的时间吗?如果答案是肯定的,那就继续发展,否则就不要。

同样,正如Saeed所说,基于ExpressionEngine的开源CMS的决定应该归结为ToC。简单地说,如果Cost(Wordpress)> Cost(ExpressionEngine),则花费$ 300。这里的费用是采购成本+(小时数至自定义*您的小时率)。


1

查找可满足您90%需求的CMS,并随时间进行修改以添加它不提供的功能。

这将使您能够尽早启动并适应您和用户需求的变化。


虽然这似乎在选择两个方面中最糟糕的一个,但我不同意下降表决,因此我提高了投票率。
Mawg

1

我完全鼓励您建立自己的CMS。到目前为止,这是了解此类系统在定制和安全方面的来龙去脉的最佳方法。但是我不得不质疑您的PHP技能有多高的中级水平。相信我,这与您的年龄无关。

对我来说,标志是“我不完全认为WordPress具有足够的功能/可伸缩性,无法处理我想做的事情,并且在过去几天中对Drupal进行了很多修改之后,它似乎并没有不能满足我的喜好,并且也没有得到充分的记录,因此我在执行某些简单任务时遇到了一些麻烦。”

有关定制Worpress和Drupal的大量书籍和网站,更不用说在这些网站上运行的知名网站,证明您必须知道自己在做什么才能获得这样的网站。更不用说,整个预算都留给了这些网站。

链接例如:

http://drupal.org/cases

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

这绝不是为了劝阻您尝试做的事情,而是一定要这样做。我只想确保您不会花费太多时间(重新发明轮子)并在某个时候感到沮丧,只说“ eff it”即可,当您可以发挥才能并向人们展示时,包括雇主,您现在可以使用的工具。在现实世界和当前的经济中,时间就是金钱,企业和组织没有时间和/或预算来持续处理从头开始的项目。
当今的信息以光速前进,因此,对能够分离噪音并在适当的周转时间内创建有目的的内容/应用/系统的程序员的需求量很大。


0

只有您可以回答Wordpress或Drupal是否可以完成您需要CMS才能完成的工作,但是如果您想尝试一下,为什么不使用Turnkey Linux上的虚拟机,例如用于WordpressDrupalJoomla或其中任何一个的虚拟机呢?其他带有内容管理标签。

假设您已经安装了VMware PlayerVirtualBox,则在下载任何这些设备后的几分钟之内,您就可以自己花费最少的时间尝试试用该软件。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.