如何阻止Nunjucks在特定标签区域自动添加空格
如何阻止Nunjucks在特定标签区域自动添加空格
看起来你遇到的是Nunjucks自动格式化模板标签,给你的<?!= ... ?>语法插入了多余空格的问题。这种情况通常是因为Nunjucks把这段内容识别成了模板语法的一部分,然后做了格式化处理。这里有几个可行的解决办法:
方法一:用
raw标签包裹需要保留原样的代码块
Nunjucks的raw标签会告诉模板引擎,包裹在内的内容不需要被解析或修改,完全保持原样输出。你可以把整个<script>标签用raw和endraw包裹起来:{% raw %} <script> //debug | see parameter data in terminal and on page function displayParameterData() { const datags = <?!= JSON.stringify(data) ?>; console.log(datags); document.write(JSON.stringify(datags)); } displayParameterData(); </script> {% endraw %}这样Nunjucks就不会触碰里面的任何内容,包括你要保留的
<?!= JSON.stringify(data) ?>标签。方法二:单独输出需要保留的标签文本
如果你只需要保留这一行的标签,而不是整个script块,可以把这段标签作为字符串用safe过滤器输出,避免Nunjucks解析或添加空格:<script> //debug | see parameter data in terminal and on page function displayParameterData() { const datags = {{ '<?!= JSON.stringify(data) ?>' | safe }}; console.log(datags); document.write(JSON.stringify(datags)); } displayParameterData(); </script>safe过滤器会告诉Nunjucks这段内容是安全的HTML/文本,不需要转义或格式化,直接输出即可。
另外补充一句:如果你其实是想让Nunjucks渲染data变量(而非保留<?!= ... ?>标签本身),那应该使用Nunjucks标准的输出语法{{ JSON.stringify(data) }},不需要额外的标签,自然也不会出现空格问题。不过从你的描述来看,你更需要的是保留标签原样,所以上面的两种方法更贴合你的需求。
备注:内容来源于stack exchange,提问作者klewis
相关产品推荐
相关产品推荐

