22

在我的第一次工作面试中,有人问我为什么要建立自己的 CMS?为什么不使用现有的 CMS、Wordpress、Joomla、Drupal... 之一?起初,我惊呆了。我无法立即回忆起构建自己的 CMS 的所有原因,但这绝对是主要原因之一:这是我的代码,如果我想更改该 CMS 中的某些内容(我经常必须这样做,因为每个网站我构建需要具有不同功能的CMS)这不是一个大问题。一段时间以来,我一直在使用 Wordpress,而让我分心的主要事情之一是发现不是我编写的代码中的错误,而且这些错误经常出现,特别是如果我对 CMS 进行了一些更改或添加了一个插件...

在这里,我可以找到不构建自己的 CMS 的这 8 个原因:

  1. 满足不了用户的需求

  2. 工作量太大

  3. 这不会是标准解决方案

  4. 它的扩展速度不够快

  5. 它不会被测试得足够好

  6. 不会轻易改变

  7. 它不会增加任何价值

  8. 创建内容,而不是功能


从同一页面引用:

所以要问自己的主要问题是:“为什么我真的要尝试重新解决以前已经解决的问题?”</p>


好吧,我绝对同意很难发明尚未发明的 CMS,但另一方面,我认为每个 CMS 都是(或应该是)个体......它可能不会有一百万个功能,它将具有 3 个功能,但它们的使用将是明确的(对用户而言)并完成一个站点需要具备的所有功能。我也认为给客户一个CMS是不好的,它有很多从未使用过的功能,当网站和CMS看起来像一个产品时,它可能看起来更专业。

我还想评论一些引用部分:
“工作量太大” - 我同意,但是当使用现有的 CMS 并根据网站需求对其进行自定义时,有时可能是非常艰巨的工作或不可能完成的任务。
“它不会轻易改变” - 我不同意这一点。

您对此有何看法,您为什么开发或不开发自己的 CMS?
伊莱

4

6 回答 6

19

这是一个适用于大多数开发的有趣问题,而不仅仅是在构建 CMS 时。

一般来说,我会说重新发明轮子是个坏主意(在大多数情况下,你的 8 个论点中的大多数都是正确的),但也有例外。想到的第一个是 Joel Spolsky 的一篇, 《为非发明综合症辩护》

如果它是核心业务功能 - 无论如何都要自己做。

关键是,如果您直接通过构建内容管理系统来赚钱,那么您不应该从其他人那里获取一个并对其进行调整,直到它适合您为止。您宁愿完全控制自己的产品。

编辑:

另外,不要忘记重新发明事物的冲动(除其他外)源于编程的基本法则:

写代码比读代码容易

这并不意味着我们应该走看似更容易的道路,但它解释了为什么我们会爱上它。接受挑战,不时地实际阅读一些代码,而不是编写它。

于 2010-04-06T20:49:15.780 回答
15

我会建立一个 CMS,因为它很有趣,而且是一次很棒的学习体验。

但是,任何开源 CMS 都可以根据任何客户的需要进行定制。最大的问题是您必须了解 CMS 的工作原理才能很好地对其进行更改。

无论哪种方式,您都将面临一项艰巨的任务,但我必须同意那些说您不应该从头开始(除非您这样做是为了学习一些新技术)正是出于您的问题中所述的原因。 . 正如他们所说,除非你想了解轮子,否则不要重新发明轮子

于 2010-04-06T20:53:31.520 回答
7

我发现当项目的上下文大于“内容站点”时,它可以工作。我曾在许多房地产网站工作过,其中大部分内容来自数据馈送,或者已经存在于数据库中,这些数据库在您参与之前很久就已经建立了结构。真的,我们只有少数几个很少更新的网站“内容”页面。他们真正需要的是一个简单的数据输入界面。在开箱即用的 CMS 之上构建一些单独的组件要比尝试在现有系统上硬塞要容易得多。

就像其他人提到的一样,您必须考虑总体要求。是否涉及工作流程?动态导航?然后我会开始更倾向于开箱即用的 CMS,但很多时候人们说他们需要一个 CMS,而实际上他们只需要一个所见即所得的数据库接口。但有时不...

于 2010-04-06T20:54:40.867 回答
7

在我看来,不构建自己的 CMS(除了安全问题)的最大原因是缺乏支持和升级路径。我认为将客户放在自定义 CMS 上,然后只能依靠您的支持和更新,这对客户不利。更糟糕的是让他们为定制 CMS 的开发付费——不管站点要求多么简单,他们都在付钱给你重新发明轮子。

如果您的要求超出了内置内容,那么有很多 CMS 选项可以让您添加自己的自定义扩展。

构建自定义 CMS 的最佳理由(可能只是)是为了学好一门语言。构建 CMS 是学习 Web 开发的好方法,但它不是服务客户的好方法。

于 2010-04-07T01:14:18.793 回答
3

作为一个总是被要求事半功倍的团队领导,我也提出了一个问题:“你为什么要自己写?” CMS 包的数量比编程语言还多,我很难相信您找不到满足大多数(如果不是全部)客户、业务和成本要求的包。

如果您发现需要更改代码,请选择开源解决方案,根据需要进行更改并共享。

我知道很多时候不需要 CMS 系统。许多客户需要内容编辑系统。我的意思是技术人员将网站放置到位,客户添加/编辑/删除页面。这些页面已经经过精心设计和格式化。在这些情况下,我可以看到从头开始设计和实现某些东西比砍掉具有访问权限或删除/隐藏功能的 CMS 可能更快。

于 2010-04-06T20:47:46.223 回答
2

除非您为体验而构建一个,否则构建自己的真正原因只有一个:它比在市场上使用满足您要求的一个更便宜和/或更容易。

于 2010-04-07T05:51:25.747 回答