You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Magento 2中完全禁用RequireJS及所有JavaScript?

彻底禁用Magento 2所有默认JS(包括RequireJS)的解决方案

我之前也碰到过从零构建主题、完全摆脱Magento自动引入JS的需求,官方文档里的方法确实不够彻底,尤其是没法干掉RequireJS的集成。下面是我亲测有效的一套方案:

1. 通过布局XML移除核心JS引用

首先在你的主题目录下创建/修改Magento_Theme/layout/default_head_blocks.xml,用它来移除RequireJS和其他核心JS文件:

<?xml version="1.0"?>
<page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:View/Layout/etc/page_configuration.xsd">
    <head>
        <!-- 移除RequireJS核心文件 -->
        <remove src="requirejs/require.js"/>
        <remove src="mage/requirejs/mixins.js"/>
        <!-- 移除Magento默认的polyfill和工具类JS -->
        <remove src="mage/polyfill.js"/>
        <!-- 关键:禁用Magento自动输出RequireJS配置的逻辑 -->
        <attribute name="requirejs" value="false"/>
    </head>
</page>

这里的<attribute name="requirejs" value="false"/>是核心,它会直接阻止Magento在页面中输出RequireJS的初始化代码和配置内容。

2. 修改根模板文件,彻底清除JS输出逻辑

Magento的根模板会默认输出一些RequireJS相关的代码,我们需要覆盖这个模板并删除对应内容:

  1. 复制vendor/magento/module-theme/view/base/templates/root.phtml到你的主题目录:app/design/frontend/[你的Vendor]/[你的Theme]/Magento_Theme/templates/root.phtml
  2. 打开文件后,找到并删除以下代码块:
<?php if ($block->getRequireJsConfig()): ?>
    <script type="text/x-magento-init">
    <?php /* @noEscape */ echo $block->getRequireJsConfig() ?>
    </script>
<?php endif; ?>
<?php /* @noEscape */ echo $block->getRequireJsHtml() ?>
  1. 如果还看到<?php /* @noEscape */ echo $this->getIncludes() ?>,也可以一并删除,避免意外引入其他默认JS。

3. 移除模块级别的JS组件配置

很多Magento模块会在布局中添加自己的JS组件,我们可以通过全局布局文件一次性移除这些配置:

创建app/design/frontend/[你的Vendor]/[你的Theme]/Magento_Theme/layout/default.xml,添加:

<?xml version="1.0"?>
<page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:View/Layout/etc/page_configuration.xsd">
    <body>
        <!-- 移除模块添加的JS组件配置块 -->
        <referenceBlock name="requirejs-config" remove="true"/>
        <referenceBlock name="head.components" remove="true"/>
    </body>
</page>

4. 收尾:清理缓存并验证

做完上面的步骤后,执行缓存清理命令:

bin/magento cache:flush

然后打开前端页面,用浏览器开发者工具查看Network面板,确认没有加载任何Magento默认的JS文件(比如require.js、mage/开头的JS)。如果还有漏网的,找到对应的文件路径,在default_head_blocks.xml里用<remove src="文件路径"/>继续移除即可。

这套方案可以让你完全从零开始构建自己的JS栈,不受Magento默认JS的干扰。

内容的提问来源于stack exchange,提问作者fritzmg

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.19 03:21:41