Nunjucks检查对象或字符串

Mat*_*ski 3 nunjucks

如何检查变量是if块中的对象还是字符串?似乎无法调用{% if ... %}块内的函数.而另一种{{ if() }}语法似乎只适用于内联条件.

我现在解决它来测试变量是一个对象时应该存在的一些对象属性,但应该有一个更好的解决方案.像一个isObjectisString功能

Ja͢*_*͢ck 5

您可以使用自定义过滤器:

var env = new nunjucks.Environment();

env.addFilter('is_string', function(obj) {
  return typeof obj == 'string';
});
Run Code Online (Sandbox Code Playgroud)

这就是模板的样子:

{% if item|is_string %}yes{% endif %}
Run Code Online (Sandbox Code Playgroud)

var env = new nunjucks.Environment();

env.addFilter('is_string', function(obj) {
  return typeof obj == 'string';
});

var res = env.renderString("{% if item|is_string %}yes{% endif %}", { item: 'test' });

document.body.innerHTML = res;
Run Code Online (Sandbox Code Playgroud)
<script src="https://mozilla.github.io/nunjucks/files/nunjucks.js"></script>
Run Code Online (Sandbox Code Playgroud)