阅读时间:5分钟 (1043个单词)

新MVC架构的Joomla! CMS

New MVC for Joomla! CMS

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

简介

Joomla! CMS是一个世界著名的CMS,它使用MVC(模型-视图-控制器)架构来构建其组件。它已经存在多年,经过多次变化以满足不同的需求。有关当前MVC实现的更多信息,请参阅Joomla!文档[1]和[2]。最近,Joomla!开发人员有了让这种架构更加灵活的想法,以克服未来的挑战。因此,新的MVC被引入到Joomla! CMS中。

初探新的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,并等待在Pull Request队列中。

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

前端管理

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

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

届时还将向前端管理添加更多功能。

开发者怎么说

"新的MVC让我们真正大幅简化了代码,并增加了应用程序的灵活性,特别是在提供Web服务和HTML方面。当您将其与非常强大的JApplicationWeb结合使用时,这将意味着创建新的扩展和应用将更加容易。" ~Elin Waring,Open Source Matters前主席

"在比较新MVC接口(设计为与应用程序无关)与为支持CMS设计的'旧'MVC接口时,较新的接口允许开发者具有更高的灵活性。问题跟踪应用程序是您可以如何实现接口和Web路由以使代码尽可能轻量化的一个很好的例子。" ~Michael Babker,Joomla!生产领导团队

“新版本的Joomla MVC将使开发过程变得更加简单。这个项目将Joomla向前推进几步,让Joomla框架焕发生机。新的MVC使得构建更多样化的应用程序变得更快,新的前端配置界面就是证明。” ——Ofer Cohen,董事会成员兼代码贡献者,开源事务

您如何参与其中?

如果您对新的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/之外的第三方提供的服务