我使用防尘模板,设计的一个方面一直在困扰着我。这让我想知道我是否“做错了”,所以我想我会问S.O.有没有办法用block和inline partials在dust.js中创建多级继承?假设你有一个带有布局的基本模板,一个覆盖某些内容的继承模板,然后是另一个模板继承自希望有选择地覆盖某些内容的模板。通常我会想象它可以通过最后一个继承模板提供最终的覆盖值。但是,内联部分语法似乎只能在单个级别上工作。这是一个人为的例子,应该显示我在说什么。有没有办法做多个级别的继承值覆盖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>"
我已经读了几次文档,但它似乎可以继承多个级别的模板,但只能覆盖单个模板定义的块。那么我是否“做错了”?有没有办法通过使用块和内联部分的选择性覆盖来实现多级继承?有没有其他的方法来做到这一点,并保持模板干爽?