Dust.js - 部分扩展基数

时间:2016-12-27 12:55:51

标签: javascript node.js dust.js

我使用NodeJS作为引擎来防尘。 我有部分问题。我认为这是可能的,我想要的。 这是我的index.dust:

<!DOCTYPE html>
<html lang="pl">
<head>
    <meta charset="utf-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="description" content="">
    <meta name="viewport" content="width=device-width, initial-scale=1">
    <title>Project - {title}</title>
</head>

<body>
<div id="content">
    {>"common/navbar-logout"/}
    {+content /}
</div>
    {+scripts /}
</body>
</html>

我想“导入”common / navbar-logout文件。 在“common / navbar-logout”文件中,我有:

{>"index" /}
{! some HTML!}
{<scripts}
<script>
    console.log("yyyy");
</script>
{/scripts}

当我运行这个脚本时,我得到了:

  

RangeError:超出最大调用堆栈大小   Object.dust.filters.h   (/APP_PATH/node_modules/dustjs-linkedin/lib/dust.js:296:16)at at   Object.dust.filter   (/APP_PATH/node_modules/dustjs-linkedin/lib/dust.js:290:34)at at   Chunk.reference   (/APP_PATH/node_modules/dustjs-linkedin/lib/dust.js:764:30)at at   body_0(evalmachine。:1:371)在加载时   (/APP_PATH/node_modules/dustjs-linkedin/lib/dust.js:151:14)at at   Chunk.partial   (/APP_PATH/node_modules/dustjs-linkedin/lib/dust.js:911:14)at at   body_0(evalmachine。:1:157)在加载时   (/APP_PATH/node_modules/dustjs-linkedin/lib/dust.js:151:14)at at   Chunk.partial   (/APP_PATH/node_modules/dustjs-linkedin/lib/dust.js:911:14)at at   body_0(evalmachine。:1:661)在加载时   (/APP_PATH/node_modules/dustjs-linkedin/lib/dust.js:151:14)at at   Chunk.partial   (/APP_PATH/node_modules/dustjs-linkedin/lib/dust.js:911:14)at at   body_0(evalmachine。:1:157)在加载时   (/APP_PATH/node_modules/dustjs-linkedin/lib/dust.js:151:14)at at   Chunk.partial   (/APP_PATH/node_modules/dustjs-linkedin/lib/dust.js:911:14)at at   body_0(evalmachine。:1:661)

当我在“common / navbar-logout”中删除 {&gt;“index”/} 时,应用程序运行,但我没有来自<的脚本块strong>“common / navbar-logout” “index”

我的目标是使用部分“{&gt;”common / navbar-logout“/}”

将脚本块从“common / navbar-logout”注入“index”

1 个答案:

答案 0 :(得分:0)

Dust partials只能为它们自己包含的模板提供块。您必须index包含common/navbar-logout作为部分内容,而不是common/navbar-logout需要index。然后它可以将其内联部分提供给index中的块。这并不适合您的使用案例。

为了完成你真正想做的事情,我过去曾经使用过一些自定义助手。像这样:

{! some HTML!}
{@script}
    console.log("yyyy");
{/script}

dust.helpers.script = function(chunk, context, bodies, params) {
  if (params.src) {
    addScript(params.src); // adds to some global context var
  } else {
    chunk = chunk.write('<script>').render(bodies.block, context).write('</script>');
  }
  return chunk;
};