Joomla JavaScript,如何正确修复?
如今,Joomla CMS 主要使用 PHP 实现,而 JavaScript (JS) 和 CSS 作为辅助技术。Joomla 主要使用 JS 通过提供丰富的交互和响应性来提高可用性,但这是否做得正确?我们能否改进它?与 JS 相关的新技术进步有哪些?我们能在 Joomla 中使用这些技术吗?本文旨在回答这些问题,并引起更多关注,以改进 Joomla CMS 的 JS 使用。
JavaScript 使用现状
Joomla 在 CMS 中使用 JS,不仅使用传统的代码编写,还在 jQuery 和 MooTools 等库中使用。JS 代码不仅存在于 ".js" 文件中,还包含在 PHP 代码中,这增加了维护开销。JS 库的使用并不统一,一些库比通用库更具体地针对特定部分,这极大地降低了这些库的可重用性。大多数库与 DOM 元素紧密耦合,一些库甚至在 DOM 就绪时立即附加。当单页由依赖于这些脚本的多个视图组成时,这成为了一个问题,其中特定视图的单个依赖脚本适用于所有视图。在 Joomla 中,JS 依赖项是通过特殊的服务器端包含脚本(例如 JHtml::_('jquery.framework'))和 JS 文件的直接引用加载的,这些引用需要在 CMS 中保持一致。存在未使用的脚本、冲突的脚本和直接引用,处理超出其范围责任的脚本,更有趣的是过时的脚本需要更多的关注。那么这是否做得正确?显然的答案是 不,Joomla 在其 JS 使用方面有很多改进的空间,我将在接下来的章节中进行讨论。
我们能否改进?
在 Joomla 中,一个主要的问题是要制定一项政策,说明如何将 JS 引入 CMS 及其组件。虽然服务器端模块和组件的结构和政策已经存在,但应该给予 JS 同样的重视,因为它将成为未来管理脚本的一个主要挑战。另一个重要的考虑因素是删除未使用的 JS 代码,更新过时的库,并从 CMS 中移除或隔离冲突的 JS 库(例如移除 MooTools)。
在Joomla中,一些JavaScript(JS)代码目前在不同的组件和视图中全局执行,需要改进其作用域,否则它将成为维护的负担,并可能导致JS冲突的增加。更重要的是,对于CMS中自定义JS的实现,最好使用统一的JS编码风格。
新技术进展
在过去的几年中,Web中JS的使用经历了根本性的变化。现在,更多的JS密集型应用程序正在出现,提供了更佳的用户体验,甚至可以与传统桌面应用程序相媲美。有像backbone.js、durandal.js、angular.js等JS框架,它们为开发和管理可以在大型范围内演化的JS代码奠定了基础和平台。这些平台基于不同的架构模式,如MVC、MVVM、MVP,其中一些是这些模式中的混合体。还有像require.js这样的流行依赖加载库,它引入了更范围化和管理的JS,忽略了依赖层次结构的需求。另一个有趣的应用领域是使用MVVM模式(如knockout.js,如图所示)的双向绑定视图到JS模型,这大大减少了实现具有更多中间状态的传统Web应用程序视图组件所需的JS量。这直接影响着Web应用程序的用户体验和响应能力。众所周知,另一个进展是利用HTML5特性,这些特性在现代浏览器中运行得更加高效。与JS的现代进展相比,本文仅讨论了少数内容作为介绍。
我们能在Joomla中使用这些技术吗?
在Joomla中,像MooTools或jQuery这样的JS库部分提供了可维护的代码,要么作为MooTools类对象,要么作为jQuery插件,但缺乏高级组织。为了解决这个问题,可以使用Backbone.js或Angular.js这样的框架作为组织和管理JS代码的平台。
- 左侧图像显示了当前在CMS中组织JS的方式,包括内联和视图中的JS以及外部JS文件引用。
- 右侧图像显示了一种可能的架构,用于管理具有外部可重用JS库和组件JS(结构取决于架构模式,例如MVC、MVVM等)的代码,这些代码与实际组件松散耦合。
另一种可能性是将依赖处理机制从“服务器端包含脚本机制”委托给JS,它可以很容易地用一个类似require.js的库来替换。这有助于减少服务器端代码对JS的依赖,而JS可以通过使用JS本身更好地管理。以下图表说明了两种方法之间的差异。
另一个主要改进是使用模型视图绑定,使用如knockout.js这样的框架,这将减少实现更交互式视图组件所需的JS量,以及将视图从其模型JS中松散耦合。在这里,我故意忽略了关于单页应用(SPA)风格的讨论,因为Joomla要成为具有其当前架构的SPA还有很长的路要走。
结论
目前,Joomla因其最新的改进(如带有Bootstrap的流体UI和其稳健性)而越来越受欢迎。但是,CMS中JS的当前使用缺乏演化的能力,这变得越来越困难,因为它需要更好的代码管理。基于所有这些担忧,我们需要更多地思考Joomla的JS使用,以便“正确地修复”并做出改进,从而使JS本身不会成为Joomla未来的破坏性技术。
在Joomla社区杂志上发表的一些文章代表了作者在特定主题上的个人意见或经验,可能不符合Joomla项目的官方立场。
通过接受,您将访问 https://magazine.joomla.net.cn/ 之外第三方提供的服务
评论