跳转到主要内容
dustise 提交于 4 December 2014

原文链接:https://www.acquia.com/blog/why-use-decoupled-drupal

原作者:Christian Yates

解耦Drupal,也称为无头Drupal,是一种将Drupal作为后端内容仓库的实践,这一结构必须包含至少一种非Drupal的前端实现。当使用这种方式的时候,Drupal为移动App、JavaScript驱动的单页面应用以及其他类型的前端提供API。其实用Drupal实现的这种站点已经存在多年了,但随着移动应用的爆发式增长,JavaScript架构的成熟,再次把解耦Drupal推到台前。Drupal 8也以API优先的方式进行设计,在核心提供了Drupal历史上最易用的RESTful服务。

什么样的情况下才需要建设解耦Drupal站点呢?

  • 前端团队在非Drupal的前端领域有着深厚经验,却对Drupal的主题无能为力(虽然Drupal 8吸收了Twig模板引擎对主题部分进行了升级)。
  • 前端团队较为激进,为了方便易用的DOM处理和AJAX集成,急于使用最新技术。
  • 想要使用设备原生应用之类的非浏览器前端。
  • 需要跨领域的弹性,可能同时提供Drupal前端以及移动应用等其他前端。
  • 有一些实时内容,例如天气或新闻站点,这类站点会从Web服务拉取数据,并且需要比其他相对固定的内容更加高的优先级进行展示。

然而,这种架构方式事实上是舍弃了一些Drupal的功能,因此不可避免的有一些短板:

  • 因为内容模型和展示方式的变化,同一种内容变更在多种终端上都可能有不同的后果,给站点运营造成困难。
  • Drupal Form提供的渲染、验证和处理无法自动完成了(开发者需要自行思考如何管理前端和后端的交互工作)。
  • 发布新的模块,可能需要重新实现新的前端展示。
  • 采编人员可能无法方便的对内容进行预览,除非为每种前端都开发相应的预览机制。

这种架构方式还有很多其他的优缺点。例如Java-Script驱动的界面,因为没有页面重载的过程,会给人简洁轻快的感觉,利用解耦Drupal,让Drupal站点也能具有这样的体验。当然,是否采用这种结构还需要从成本方面考虑,抛弃Drupal主题系统,另起炉灶构建新的前端,需要从财务和工期方面进行审慎评估。总之解耦Drupal在某些情况下可能很合适,甚至是唯一解,但并不是放之四海而皆准的架构方式。

Acquia云上运行着很多只是把Drupal当做后端内容仓库的站点和应用。有些站点运行在虚拟私有云端。这提高了内容仓库的私密性,无需暴露在互联网上。Drupal可以选择性的使用API为不同的渠道提供不同的数据。Acquia有些内部的Drupal应用也采用了解耦架构。可以联系我们,进一步了解这一架构问题。

Drupal 版本