解耦,未解耦的区别_解耦CMS的好处

解耦,未解耦的区别

软件开发的常见疾病是“此处未发明”综合症,即倾向于编写新的实现而不是利用现有的解决方案。 然后,我们只是将其编写为当前正在构建的应用程序的一部分,认为这是一件小事。 随着时间的流逝,此类帮助程序或实用程序类会随着添加新事物而增长,但通常与应用程序紧密相关。

此疾病也适用于内容管理应用程序。 通过选择CMS,您不仅需要接受其编写的语言,还需要接受其编辑和管理界面,模板系统,它所支持的数据库等。 分离的内容管理运动旨在改善这种情况。

专注于附加值

利用现有解决方案通常需要开发人员投入更多的精力,但从长远来看,可重用的组件将使社区变得更加丰富,这些组件专注于真正出色地完成一项任务,而不是每个应用程序都有相同的平庸实现。

使用第三方组件还会创建边界,这使得将它们换成不同的或自定义的实现变得更加容易。 Node.js生态系统将其推向了极致,许多软件包仅包含一个或两个文件。

在更粗粒度的范围内,PHP世界也发生了同样的情况。 看到主要的CMS系统专注于其CMS功能并利用框架建立坚实的基础是非常有希望的。 ezPublish 5 建立Symfony 2全栈框架上。 Drupal 8 利用了许多Symfony框架组件。 Typo3朝相反的方向发展,分离出框架并单独发布。

尽管如此,所有这些系统都耦合到一组特定的数据库,并对其存储承担了很大的负担。

Decoupling your CMS, graphic

内容储存库

以内容为中心的应用程序对其存储后端有很高的要求。 内容存储库的想法是将内容存储逻辑与实际应用程序分离。 内容存储库提供比传统数据库更高级别的抽象。 可以与应用程序分开对其进行改进,并提供高级功能,例如搜索,版本控制,文档级别的访问控制等。

在应用程序和存储库之间有明确的界限,可以将一个存储库换成另一个。

对于Java,在JSR-283中指定了Java内容存储库(JCR)。 JCR为内容存储库定义了一个API(而非协议)。 参考实现是在Adobe Experience ManagerMagnolia CMS中使用的Apache Jackrabbit

JCR已作为PHPCR移植到PHP。 Henri Bergius提出PHP实现RFDa方法用语义信息注释前端内容,以允许客户端编辑系统识别页面的哪些部分是可编辑的以及如何将它们存储回去。 使用Javascript库,可以直接在前端以真正的所见即所得的方式进行无缝的内联编辑。

存储更改的反向通道是发送JSON-LD数据的异步Javascript。 Bergius编写了Create.js来演示这个想法。 Create利用杠杆主干来存储数据,并使用HTML5内容可编辑元素来加载所见即所得的编辑器。 创建还处理集合以添加或重新排序项目,并支持工作流和插件。

解耦的内容管理系统仅需要使用RFDa注释内容,并为JSON-LD请求提供端点。

一个示例:Symfony CMF

Symfony内容管理框架是一种以根本分离的方式为Symfony框架提供内容管理的计划。 它利用PHPCR作为内容存储库,并利用Create.js进行编辑。 甚至框架本身也被分解为较小的组件,从而允许仅使用有意义的混合匹配方法。 这也使CMF成为构建自定义内容管理系统的良好基础。 使用提供的基本构建块,开发可以专注于特定用例所需的任务。

此方法可解决框架与CMS的难题。 无需编写锁定到特定CMS应用程序中的自定义应用程序,也不必重新发明基本的CMS功能,而是有明确的界限来用自定义实现替换与标准情况不同的CMS部分。

公开赛
不育系

本文是Robin Muilwijk协调的“开放式CMS”专栏的一部分。 分享有关使用开源内容管理系统(CMS)和诸如Drupal,Joomla,Plone,WordPress等平台的故事。

翻译自: https://opensource.com/business/15/3/decoupling-your-cms

解耦,未解耦的区别

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值