首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >chunk.write和chunk.render有什么区别?

chunk.write和chunk.render有什么区别?
EN

Stack Overflow用户
提问于 2013-01-27 08:48:08
回答 1查看 1.1K关注 0票数 1

我看到了这个,

代码语言:javascript
复制
chunk = chunk.write("<li>").render(bodies.block, context.push(items[i])).write("</li>\n");

在看到这段代码之前,我想,render类似于flushwrite类似于“写在缓冲区中”,自然会导致下面这样的代码。

代码语言:javascript
复制
for loop
chunk.write("something")
end for loop

chunck.render();

但是,正如您在第一段代码中所看到的,呈现是在写入之间出现的。有人能解释一下这两种功能之间的区别吗。

@JAiro:

在阅读了您的答案之后,我尝试了以下代码:

模板: You have {render} {write}

data

代码语言:javascript
复制
{
  "name": "Mick",
  "render": function(c,ct,b){
       chunk.render("Rendered {~n}");
   },
   write:function(c,ct,b){
       chunk.write("Written {~n}")
   }
}

预期输出:

代码语言:javascript
复制
    you have Rendered 

Written {~n}

请注意“呈现”一词之后的{~n}被解释,但是“写”之后的{~n}没有被解释。

但是实际输出与预期输出不一样。你能给我发个小提琴手吗,这将有助于我理解。实际输出是一个空字符串,这也表明代码中可能有错误。

EN

回答 1

Stack Overflow用户

发布于 2013-01-28 13:56:11

chunk.write方法直接将字符串写入缓冲区。

另一方面,chunk.render解析其参数中包含的变量,然后将结果字符串写入缓冲区。

您不必重写上下文中的写函数和呈现函数。

让我告诉你它是如何工作的。

模板

代码语言:javascript
复制
Hello {name}!, how are you?

Dust编译模板以在javascript中转换它们。编译该模板后,您将获得如下内容:

代码语言:javascript
复制
return chk.write("Hello ").reference(ctx.get("name"), ctx, "h").write("! how are you?");

正如您在“你好”和“你好吗?”中所看到的,dust使用chunk.write是因为它知道应该打印什么。但是,直到获得上下文(JSON)才知道{name}的值。

因此,它使用chunk.reference,因为将来它必须解析变量名的值。尘埃将从JSON数据中获得name的值。

您可以在这里阅读更多关于dust.js的信息:

http://linkedin.github.com/dustjs/wiki

你可以看到有用的例子,并在这里尝试一下:

http://linkedin.github.com/dustjs/test/test.html

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14545832

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档