如何向 Handlebars.net 注册 JavaScript 助手
How to register JavaScript helpers with Handlebars.net
我们如何在 Handlebars.Net 中注册这两个 JavaScript 助手?
对于Moment.js:
Handlebars.registerHelper("formatDate", function (datetime, format) {
return moment(datetime).format(format);
});
对于java脚本计算:
Handlebars.registerHelper("formatPercent", function (val1, limit) {
return Math.ceil(100 * val1 / limit);
});m
找到了。这个例子说明了一些问题 https://gist.github.com/rexm/e1a045b9f76a48de642e
Handlebars.RegisterHelper("formatDate", New HandlebarsHelper(Sub(w, c, p)
w.WriteSafeString("moment(" + p(0) + ").format(" + p(1) + ");")
End Sub))
Handlebars.RegisterHelper("formatPercent", New HandlebarsHelper(Sub(w, c, p)
If p(1) = 0 Then
w.WriteSafeString("0")
Else
w.WriteSafeString("Math.ceil(" + 100 * p(0) / p(1) + ");")
End If
End Sub))
readme给出了一个如何编写helpers的例子:
Handlebars.RegisterHelper("link_to", (writer, context, parameters) => {
writer.WriteSafeString("<a href='" + context.url + "'>" + context.text + "</a>");
});
string source = @"Click here: {{link_to}}";
var template = Handlebars.Compile(source);
var data = new {
url = "https://github.com/rexm/handlebars.net",
text = "Handlebars.Net"
};
var result = template(data);
/* Would render:
Click here: <a href='https://github.com/rexm/handlebars.net'>Handlebars.Net</a>
*/
最重要的区别是在 .NET 中,助手没有 return 值。相反,您得到了对生成模板输出的 TextWriter
的引用。因此,您的助手可以通过该编写器将任何它想要的内容直接写入模板。包含一个 .WriteSafeString()
帮助程序来绕过默认编码。 确保您的字符串实际上是安全的,在您这样做时不进行编码。
我们如何在 Handlebars.Net 中注册这两个 JavaScript 助手?
对于Moment.js:
Handlebars.registerHelper("formatDate", function (datetime, format) {
return moment(datetime).format(format);
});
对于java脚本计算:
Handlebars.registerHelper("formatPercent", function (val1, limit) {
return Math.ceil(100 * val1 / limit);
});m
找到了。这个例子说明了一些问题 https://gist.github.com/rexm/e1a045b9f76a48de642e
Handlebars.RegisterHelper("formatDate", New HandlebarsHelper(Sub(w, c, p)
w.WriteSafeString("moment(" + p(0) + ").format(" + p(1) + ");")
End Sub))
Handlebars.RegisterHelper("formatPercent", New HandlebarsHelper(Sub(w, c, p)
If p(1) = 0 Then
w.WriteSafeString("0")
Else
w.WriteSafeString("Math.ceil(" + 100 * p(0) / p(1) + ");")
End If
End Sub))
readme给出了一个如何编写helpers的例子:
Handlebars.RegisterHelper("link_to", (writer, context, parameters) => {
writer.WriteSafeString("<a href='" + context.url + "'>" + context.text + "</a>");
});
string source = @"Click here: {{link_to}}";
var template = Handlebars.Compile(source);
var data = new {
url = "https://github.com/rexm/handlebars.net",
text = "Handlebars.Net"
};
var result = template(data);
/* Would render:
Click here: <a href='https://github.com/rexm/handlebars.net'>Handlebars.Net</a>
*/
最重要的区别是在 .NET 中,助手没有 return 值。相反,您得到了对生成模板输出的 TextWriter
的引用。因此,您的助手可以通过该编写器将任何它想要的内容直接写入模板。包含一个 .WriteSafeString()
帮助程序来绕过默认编码。 确保您的字符串实际上是安全的,在您这样做时不进行编码。