我们使用闭包库和闭包编译器,我们想使用闭包模板。
但是闭包模板没有继承。这对我们来说确实是个问题。
据我了解,闭包模板没有继承的原因是因为模板必须简单且易于阅读。
但是在大项目中没有继承怎么能活呢?
例如,我们有一个模板文件button.soyproject.createButton
,它使用公共模板和私有模板生成按钮: project.createOpenTag_
, project.createCSSClasses_
, project.createAttributes_
, project.createContent_
, project.createCloseTag_
。
我们有 JavaScript 类project.Button
,并且我们有project.ButtonCircle
(也许这个单独的类project.ButtonCircle
似乎没有必要,但这只是一个示例)扩展了project.Button
.
project.ButtonCircle
project.createButton
需要对模板进行少量更改。
当然我们可以添加新的功能project.createButton
,但这是一个非常糟糕的主意,因为这种方法将来会创建怪物模板。
或者我们可以project.createCircleButton
在文件button-circle.soy中创建公共模板,从中调用所有私有模板project.createButton
,当我们需要“覆盖”这些私有模板之一时(例如project.createCSSClasses_
),我们只需在button-中创建新的私有模板- circle.soy的名字project.createCSSClassesCirbleButton_
。
然而在这种情况下,我们需要将所有内容从 复制粘贴project.createButton
到project.createCircleButton
。这太可怕了。
我们也尝试使用委托模板,但它不适合继承。
解决这个问题的方法是什么?