阅读时间5分钟 (1043字)

全新MVC架构的Joomla! CMS

New MVC for Joomla! CMS

随着即将推出的Joomla! CMS版本,新的MVC将扮演重要角色。通过我的谷歌暑期代码项目,我已经为此迈出了第一步。

简介

Joomla! CMS是一个全球知名的CMS,它使用MVC(模型-视图-控制器)架构来构建其组件。它已经存在很多年了,并且已经经历了许多变化以适应不同的需求。有关当前MVC实现的更多信息,您可以参考Joomla!文档[1]和[2]。最近,Joomla!开发者有了让这种架构更加灵活的想法,以克服未来的挑战。因此,Joomla! CMS中引入了新的MVC。

新MVC的第一印象

如果您是Joomla!组件开发的新手,回顾现有的MVC架构将是有益的。对于那些已经参与组件开发的人来说,将很容易识别出差异。本节将逐个引导您了解这些变化。

新的文件夹结构

Folder Structure

它几乎与现有的MVC架构相似。但是文件夹名称是单数。因此,在新的MVC中,您应该使用单数文件夹名称。

控制器单一文件

Controllers

这是新MVC中的一个重要变化。在新MVC中,每个控制器都有一个单独的文件。这种设计有特殊的优势,将在文章后面讨论。在现有的MVC中,只有一个包含所有这些控制任务的文件。

控制器单一方法

Controller Execute

在一个控制器内部,结构非常简单。它只是一个名为“execute”的方法。该控制器的全部功能都聚集在那个“execute”方法中。这个变化使得控制器非常容易理解和访问。

新的MVC库

Libraries

对于新的MVC,libraries/joomla文件夹包含3个新的子文件夹:controller、model和view。每个文件夹都包含相应的基类,这些基类必须用于实现组件的控制器、模型和视图类。目前这些类包含在最新的Joomla! CMS版本中。这些库级别类为新MVC组件的基石[3]。主要优势是减少现有MVC使用的遗留类中的代码冗余。

随着时间的推移,库中会添加更多可重用类。您可以在com_config [4]的控制器文件夹或com_cache-com_checkin存储库的cms文件夹中查看可重用控制器的示例[5]。多亏了自动加载,在某些情况下,组件可能不需要自己的控制器,或者不需要每个类一个控制器。此外,您会发现视图类也变得非常简单,模型类与现有MVC中的类似。在新MVC中,模型类不必是JModelBase类的子类,也可以根据需求是表类。

新MVC的优点

在创建Joomla!组件的过程中使用新的MVC,作为一名开发者,您将感受到以下事实。

事实

现有MVC

新MVC

对Web服务的支持

易学性

困难

简单

控制器、模型和视图

相当复杂

非常简单

通过扩展

旧类

基类

类文件数量

较少

根据组件变化


目前,以下组件已转移到新MVC,并等待在拉取请求队列中。

  • com_config [4]
  • com_checkin [5]
  • com_cache [5]

前端管理

到目前为止,我已经展示了新MVC的重要性。现在您可能想通过这个变化看到一些特殊的成果。这就是我已经使用新MVC实现的一个东西,前端管理。通过前端管理,Joomla! CMS用户将有机会进行各种更改,而无需访问后端。我相信这对吸引新用户非常有用,因为后端(管理视图)包含非常复杂的配置面板。
作为第一步,我成功地为全局配置和模板管理器创建了前端管理视图。以下是一些前端管理组件提供的功能

  1. 更改站点名称
  2. 更改站点徽标
  3. 更改模板颜色
  4. 更改背景颜色
  5. 将站点上线/下线
  6. 添加元描述

届时将在前端管理中添加更多功能。

开发者怎么说

"新的MVC使我们能够真正简化代码,并增加了应用的灵活性,尤其是在交付Web服务和HTML方面。当你结合非常强大的JApplicationWeb时,这一点更为明显。在CMS中有一些共享的MVC类将意味着创建新的扩展和应用变得更容易。" ~Elin Waring,Open Source Matters前总裁

"在新的MVC接口的使用方面,它被设计为与应用程序无关,与为支持CMS而设计的'旧版'MVC相比,新的接口允许开发者有更大的灵活性。问题跟踪应用程序是一个很好的例子,说明您可以如何实现接口和网络路由,以使代码尽可能轻量。" ~Michael Babker,Joomla!生产领导团队

"新的Joomla MVC将使开发生活变得容易得多。这个项目使Joomla向前迈进了几步,使Joomla框架变得生动起来。新的MVC使构建更通用的应用变得更快,新的前端配置证据就是如此。" ~Ofer Cohen,Open Source Matters董事会成员和代码贡献者

您如何贡献?

如果您对新的MVC感兴趣,当然您也可以为此做出贡献。然而,新MVC的转换仍在进行中,还需要做更多工作以获得该架构的全部好处。因此,贡献可以采取以下形式

  1. 为新的MVC组件添加测试(这将有助于更好地了解新的MVC)
  2. 将后端组件转换为新的MVC
  3. 将前端组件转换为新的MVC
  4. 编写自己的扩展,帮助适应一些与它尚不完全兼容的库中的其他包。(例如:com_menus 需要稍作更新才能与新样式兼容。)

参考文献

[1] 模型-视图-控制器 - http://docs.joomla.org/Model-View-Controller
[2] 开发 MVC 组件/简介 - http://docs.joomla.org/J3.1:Developing_a_MVC_Component/Introduction
[3] Joomla! 平台文档 MVC - http://joomla.github.io/joomla-platform/?chapters/packages/mvc.md
[4] 在新 MVC 中实现 com_config - https://github.com/joomla/joomla-cms/pull/2063
[5] 在新 MVC 中实现 com_cache 和 com_checkin - https://github.com/joomla/joomla-cms/pull/1989

 

在 Joomla 社区杂志上发表的一些文章代表了作者对特定主题的个人观点或经验,可能与 Joomla 项目官方立场不一致。

0
约翰内斯堡 JoomlaDay - 南非
Twitter 的力量
 

评论

已注册? 在此登录
尚未发表评论。成为第一个发表评论的人

通过接受,您将访问 https://magazine.joomla.net.cn/ 外部的第三方服务提供的功能