ApostropheCMS Moog 类型 - 扩展您自己的自定义模块

ApostropheCMS Moog Type - Extend your own Custom Module

扩展您自己的模块

对于刚接触OOP语言的初学者来说,这个问题基本上是个好问题。我发现你的代码 here 说使用 afterConstruct 扩展模块是一个很好的做法。你能教我们如何从其他模块 EXTEND 它和 IMPLEMENT 从其他模块扩展的方法吗?我在此处构建自己的联系表单模块时遵循了您的示例:

  afterConstruct: function(self) {
    self.setSubmitSchema();
  },

  construct: function(self, options) {

    self.setSubmitSchema = function() {
      self.submitSchema = self.apos.schemas.subset(self.schema,
        [ 'name', 'email', 'title', 'body' ]
      );
    };

以下是我对使用 Moog Type 的看法,对吗?

construct -> every method ATTACHED to the construct . beforeConstruct -> Only applicable if you extending options like addFields , removeFields and alterFields to it. afterConstruct -> Applicable for EXTENDING module/method

这个问题太笼统了,但是你需要的是正确完成这个问题的一个很好的例子。

为此,只需查看我们已实现的任何 pieces 模块,例如查看 apostrophe-redirects,它扩展了 pieces,添加了 beforeSave 方法重写以执行自定义操作。

另请参阅 apostrophe-samples 项目,其中包含多个带有覆盖的片段模块示例。同样,这些扩展 apostrophe-pieces,因此它们展示了您所询问的内容。

关于三个函数:

beforeConstruct 用于在您要扩展的模块看到它之前先调整 options。例如,当子类需要向 addFields 添加字段时很有用。

construct 用于将方法附加到 self

afterConstruct用于初始化,通过调用其中一些方法来完成。这是正确的时间,因为子类模块有机会在 afterConstruct 运行之前重写其中一些方法。