Drupal 作为框架

标签 drupal frameworks content-management-system

我们可以使用 Drupal 作为更大应用程序的框架吗?是否适合在其框架内开发大型应用程序,或者是否有任何限制?

我想在我的应用程序中使用 Drupal 作为框架。这值得吗?

最佳答案

如果您正在寻找 发展 -framework,Drupal 可能不是正确的选择。如果您正在寻找构建网站的套件,Drupal 可能是正确的工具。

人们常说 Drupal 是一个 CMF,其中 F 代表 Framework,但实际上,Drupal 只是一个灵活的 CMS。

在高层次上,Web 应用程序框架分为两类:MVC 和 CMS。 Model View Controller 是大多数人所说的框架。 CMS 只是一个具有应用程序开发能力的灵活 CMS。

在实践中,Drupal 缺乏的是:

  • 适当的架构。 Drupal 中的大多数东西都是有机进化的;这会导致不一致、意外行为和意外障碍。并不是说 Drupal 没有正确构建:只是说它没有被架构:作为一个整体设计。
  • 最小惊喜原则。许多框架允许熟练的开发人员在几个小时内创建站点。使用 Drupal,您必须获得大量经验和最佳实践,然后才能有信心在规划中推出网站。
  • MVC。 Drupal 有一个独特的数据库层和一个主题( View )层,但它们是非常规的,并且经常被误用。当然不是在结构模式之后。
  • 无偏见的行为:框架可以强制某些方法、库甚至鼓励某些行为,但它不应该具有指示您的最终产品的硬编码/不可覆盖的默认值。或者,用英语:Drupals core 有许多默认设置,它们决定了您将如何设置、布局和构建您的网站,而不管您(客户)的需求或愿望如何。模块或插件甚至经常带有行为,并且通常看起来是内置的和/或硬编码的。
  • DRY,不要重复自己:Drupal 在很大程度上依赖于重复自己。它的整个主题系统依赖于将代码片段复制到自定义文件中并更改花絮。它的表单覆盖系统需要将默认表单的大部分复制到自定义模块中并更改想要修改的部分。

  • 从我 10 年的 Drupal 经验中可以看出,其中许多不足是延迟和预算下滑的主要原因。在我参与的大多数项目中,无主见的行为部分被证明是最讨厌的部分。明显的简单功能或想法被证明占据了整个预算的大部分;微小的细节会消耗开发周;最后的 20% 不仅需要 80% 的努力,有时还需要 300%。

    除此之外,Drupal 不遵循 OO 模式,这(根据普遍共识)是一件坏事。没有继承,没有 DRY 实践,没有对象关系映射器*),也没有单元测试实践。**)。

    这听起来可能都是负面的,但实际上,尽管存在所有这些“缺点”,人们还是设法构建了不错的 Drupalsite。那是因为他们主要遵循 Drupal 的默认设置(尽可能标准,需要更改的插件,没有其他选项时的自定义开发)。
    *)事实上有;在 Drupal 7 中,引入了 PDO,但还没有(还?)用作 ORM。
    **)事实上:所有的核心和许多贡献都有测试,但这些是集成测试和罕见的单元测试。集成测试(DrupalWebTest)为每个测试安装一个干净的 Drupal-codebase+database。您的平均核心测试套件运行时间超过 8 小时也不异常(exception)。 TDD 根本(还)不可能。

    编辑 阅读您的示例:Drupal 在“表单向导”领域尤其糟糕,尽管它在 Drupal 7 中有所改进。Drupal 中另一个值得注意的不足是适当的、可编程的工作流系统。有几个模块可以增强或替换核心中的简单工作流系统,但对它们进行编程并不容易,也不高效(开发工作量方面)。 听起来你想要的主要功能是在 Drupal 中最不发达的领域中

    关于Drupal 作为框架,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6648528/

    相关文章:

    php - Drupal:为我的表单创建一个特殊的模板文件会影响我的 css,它不会加载

    drupal - 文件字段显示我之前上传的文件为 0 字节

    javascript - 在 Drupal 站点的一页上插入 javascript 小部件

    php - 是否有一个 php 框架可以更轻松地使用 jquery 和 ajax?

    php - 正则表达式识别并剥离字符串中的 '.00'

    web - 使用 CMS 构建问答网站

    php - 从自定义转换主题 Drupal 中删除多余的背景

    php - 对于初学者来说,Laravel 和 Yii 框架哪个更容易理解?

    html - 物化 CSS,选择字体颜色或字体系列?

    java - Play Framework 运行时生成模板