Magento2 模块加载顺序

Module Sequence 是在 module.xml 文件中指定的模块加载顺序。如果想知道组件之间的依赖关系,就要看 composer.json 文件,如果想要知道组件的加载顺序,就要看使用 <sequence> 标签的 module.xml 文件。

概览

  • <sequence> 标签是什么?

  • 模块顺序举例

<sequence> 标签是什么?

标签表示在当前组件加载前需要哪些组件。<sequence> 标签支持各种格式,比如配置文件,视图文件(包括 CSS Less 和 模板文件),或者设置类(setup classes)。另外,如果西药加载一个普通的类(不是设置类,setup classes),那么在执行时, 没有影响。

注意: 设置类(setup classes)是组件中用于创建或者更新数据库模式或者数据的类。

为了让项目顺利运行,如果组件之间的依赖关系是确定的,应该在 module.xml 文件中使用 composer.json 和 <sequence> 。

模块顺序举例

这里设计到了组件 A 和 组件 B 。组件 A 引入了 gadgetlayout.xml 文件,用于更新组件 B 中的 gadgeBlock 块。这时,需要在组件 B 的 module.xml 文件中的 <squence> 中声明。所以现在,从 组件 A 开始,需要来自组件 B 的配置文件。

  • 情况一:来自不同组件的相同类型的文件,同时,在每个组件的 module.xml 文件中的顺序信息也会被考虑进来。

  • 情况二:假设需要加载一系列的名为 defualt.xml 布局文件,并且在组件 A 中指定了组件 B,以下是文件的加载顺序:

    • 组件 X /view/frontend/layout/default.xml —— 要么我们不关心组件 X 什么时候加载,要么也许组件 B 需要依赖它的加载。

    • 组件 B /view/frontend/layout/default.xml

    • 组件 A /view/frontend/layout/default.xml —— 在组件 B 之后加载,因为组件 A 的标签中有组件 B 。

    • 组件 Z /view/frontend/layout/default.xml —— 要么我们不关心它的加载顺序,要么组件 Z 依赖 组件 A 的加载。

需要知道,在标签 <sequence>中,可以涉及任何组件,除了这个组件必须在 composer.json 中定义之外,没有限制。

本教程翻译自Mageplaza模块开发系列,其他内容请点击下面链接: