如何在Magento 2中禁用JavaScript捆绑

JavaScript捆绑是一种优化技术,可用于减少JavaScript文件的服务器请求数。它是通过将多个JavaScript文件合并到一个文件中来减少页面请求的数量来实现的。默认情况下,Magento 2允许通过在主题文件的exclude节点中指定相应文件来排除特定JavaScript文件的捆绑etc/view.xml。但是,有时候这还不够。

我们假设由于其实现的具体细节,我们需要禁用特定页面的JavaScript捆绑。或者,例如,这只是一个临时解决方案,以防您不想在整个网站上禁用JavaScript捆绑,同时在启用JavaScript捆绑后调查并尝试修复某些页面上出现的某些问题。为此目的,有一个简单快速的解决方案。但是,它需要一点点编码。

默认资产配置类Magento\Framework\View\Asset\Config用于检索JS捆绑,JS和CSS合并,HTML缩小的配置。每页都会检查这些配置。默认情况下,从相应的系统配置值中检索配置。尽管如此,您可以根据需要提供自己的资产配置实现。资产配置必须在Magento\Framework\View\Asset\ConfigInterface接口中实现。

但是,我们不会在我们的案例中深入挖掘。我们只想实现一个简单的解决方案来禁用某些页面的JS捆绑。让它成为愿望清单页面。因此,我们可以为该Magento\Framework\View\Asset\ConfigInterface::isBundlingJsFiles方法使用“after”插件,只是为了查看资产配置的工作原理。首先,我们需要为以下内容定义插件类Magento\Framework\View\Asset\ConfigInterface

 

插件类的源代码如下:

 

在我们的插件方法中,我们将请求的完整控制器操作名称与我们需要排除JS绑定的页面的完整控制器操作名称进行比较。如果值匹配,那么我们通过返回负布尔值(false)来强制禁用当前控制器操作的JS绑定。

通过这种方式,您还可以通过扩展以下方法来影响其他资产配置:

  • Magento\Framework\View\Asset\ConfigInterface::isMergeCssFiles
  • Magento\Framework\View\Asset\ConfigInterface::isMergeJsFiles
  • Magento\Framework\View\Asset\ConfigInterface::isMinifyHtml

注意,在管理JavaScript捆绑或类似配置时应该小心。不正确使用此类设置可能会导致额外的服务器负载。因此,如果您确切知道您想要做什么以及为什么要这样做,那么最好继续进行。

完整模块的源代码可以在Atwix_BundlingExclusionExtended GIT存储库中找到。

我希望这篇简短的教程对你有用。谢谢阅读!

如果有不懂的地方请留言,SKY8G网站编辑者专注于研究IT源代码研究与开发。希望你下次光临,你的认可和留言是对我们最大的支持,谢谢!

上一篇: PHP中的多态

下一篇: Magento开发工具

登录 评论
avatar