使用EJS添加部分模板时的空格

时间:2014-05-12 22:43:43

标签: node.js dom express sails.js ejs

我正在使用带有EJS引擎的SailsJS。

当我使用&lt;%include partials / template.ejs%&gt; &lt;%partial(&#39; partials / template.ejs&#39;)<添加部分内容时< / strong>在布局文件中,我在编译的HTML代码(template.ejs)之前得到空格。

请注意,当我复制粘贴布局中的template.ejs内容(不使用include / partials)时,空格就消失了。

见下图:

第一部分:代码。

第二部分: chrome DOM。

第3部分:空白元素检查(DOM属性)

1st part: code. 2nd part: chrome DOM. 3rd part: whitespace element inspection (DOM properties)

3 个答案:

答案 0 :(得分:0)

我遇到了同样的问题。 我做的很简单。

转到ejs模块index.js文件。 找到部分功能。 找到这部分代码:

var source = options.cache
? cache[key] || (cache[key] = fs.readFileSync(file, 'utf8'))
: fs.readFileSync(file, 'utf8'); 

并将其替换为

var source = options.cache
? cache[key] || (cache[key] = fs.readFileSync(file, 'utf8').trim())
: fs.readFileSync(file, 'utf8').trim();

所以,我所做的只是使用了trim()java脚本函数。

希望它会有所帮助。

答案 1 :(得分:0)

使用ejs渲染时遇到了同样的问题。我的代码中包含了一些空格,导致了位置问题。

我在互联网上无处不在,最后建立了自己的解决方案:

    var clean= function(selecteur) {
        var save=new Array();
        selecteur.children().each(function() {
            save.push(this);
        });
        selecteur.empty();
        for(i in save) {
            selecteur.append(save[i]);
        }
    };

可以在需要从任何空格中清除的任何jquery选择器容器上调用此函数。它的工作原理基本上是将所有内容保存在局部变量中,清空容器,然后添加保存的内容。

答案 2 :(得分:0)

我遇到了同样的事情,至少在我的情况下这是由于使用

的EJS部分功能
fs.readFileSync(file, 'utf8')

根据

https://github.com/nodejs/node-v0.x-archive/issues/1918

不会删除UTF-8 BOM。如果EJS引擎为我们剥离了物料清单会很好,但在没有物料清单的情况下保存部分文件的UTF-8解决了我的问题。