我正在使用灰尘模板,设计的一个方面一直困扰着我。这让我想知道我是否“做错了”,所以我想我会问 SO 有没有办法在dust.js 中使用块和内联部分创建多级继承?假设您有一个带有布局的基本模板,一个覆盖某些内容的继承模板,然后是另一个从该模板继承的模板,它希望有选择地覆盖某些内容。通常我会想象它通过提供最终覆盖值的最后一个继承模板来工作。然而,内联部分语法似乎只在一个级别上起作用。这是一个人为的例子,应该显示我在说什么。
模板 1 test_base.dust
:
<h1>
{+document_title/}
</h1>
{+content}
<p>Some great content.</p>
{/content}
模板 2 test_level1.dust
:
{>test_base/}
{<document_title}Level 1{/document_title}
{<content}
<p>Other great content</p>
{/content}
模板 3 test_level2.dust
:
{>test_level1/}
{<document_title}Level 2{/document_title}
渲染这些模板我得到以下结果:
dust.render('test_base', {}, function(err, data) { console.log(data); } );
"<h1></h1><p>Some great content.</p>"
dust.render('test_level1', {}, function(err, data) { console.log(data); } );
"<h1>Level 1</h1><p>Other great content</p>"
dust.render('test_level2', {}, function(err, data) { console.log(data); } );
"<h1>Level 1</h1><p>Other great content</p>"
我已经阅读了几次文档,但似乎您可以从多个级别继承模板,但您只能覆盖单个模板定义的块。那我是不是“做错了”?有没有办法通过使用块和内联部分的选择性覆盖来完成多级继承?还有其他方法可以做到这一点并保持模板干燥吗?