一尘不染

您如何在ejs中检查node.js的未定义属性?

node.js

在ejs模板中检查未定义属性的最佳方法是什么?

(我正在使用TJ Holowaychuk 的node.js包

例:

var tpl = '<% if (foo) { %>foo defined<% } else { %>foo undefined<% } %>';
console.log(ejs.render(tpl, { locals: { bar: "baz" } }));

我希望这会导致“ foo undefined”。它确实会引发 foo undefined 错误。

我知道这不应该成为问题,因为这是测试中的预期行为。有避免这种情况的简便方法吗?

我发现的唯一解决方案是使用该hasOwnProperty方法。

var tpl = '<% if (hasOwnProperty("foo")) { %>foo defined<% } else { %>foo undefined<% } %>';
console.log(ejs.render(tpl, { locals: { bar: "baz"} }));

这不会引发任何错误。

有没有更好的方法来保持模板清洁?还是为什么会引发此错误?


阅读 243

收藏
2020-07-07

共1个答案

一尘不染

测试属性的另一种方法是通过locals对象间接引用它。使用您的示例:

var tpl = '<% if(locals.foo){ %>foo defined<% }else{ %>foo undefined<% } %>';
console.log(ejs.render(tpl, { locals: { bar: "baz"} }));
2020-07-07