如何防止underscore.js模板创建不需要的空行?

Ren*_*ama 3 javascript templates node.js underscore.js yeoman

我正在使用Yeoman创建一个生成器,而Yeoman又使用underscore.js模板.
在给定的文件中,我有这个代码:

var
    <% _.each(requires, function(require) { %>
    <% if(require.shouldApply) { %>
    <%= _.camelize(require.name) %> = require('<%= require.name %>'),
    <% } %>
    <% }); %>
    mongoose = require('mongoose'),
    Schema = mongoose.Schema;
Run Code Online (Sandbox Code Playgroud)

鉴于require.shouldApply有时是假的我不希望产生空白行.

所以,例如,对于输入requires: [{shouldApply: false, name: 'zoo'}, {shouldApply: false, name: 'foo'}, {shouldApply: true, name: 'bar'}]我得到这个:

var
    zoo = require('zoo'), //note that the line below is blank

    bar = require('bar'), //I don't want the blank line above
    mongoose = require('mongoose'),
    Schema = mongoose.Schema;
Run Code Online (Sandbox Code Playgroud)

有谁知道如何防止underscore.js模板创建这些不需要的空白行?

Tho*_*s W 6

在JSP中,我们有时会使用(恼人的)将模板标记扩展到下一行的做法来防止这种情况.

它对于可读性并不理想,但它确实解决了"不需要的换行"问题.

例如:

<% if(require.shouldApply) { 
%><%= _.camelize(require.name) %> = require('<%= require.name %>'), 
<% } %>
Run Code Online (Sandbox Code Playgroud)

在JSP中我们也有trimDirectiveWhitespaces类似的选项 - 这些选项并不完美,但可以提供帮助.你的模板系统也可能有这样的东西.