【问题标题】:Controlling whitespace in EJS在 EJS 中控制空格
【发布时间】:2017-09-14 12:26:08
【问题描述】:

我有一个条件来检查用户是否未登录,然后将一个类添加到 td 元素。 EJS 看起来像这样:

        <td class="<%_ if (!currentUser) { _%>
                notSigned"
            <%_   } _%>">

呈现的 HTML:

                <td class="                        notSigned"
">
                    Monitor the database 
                    <div class="ui accordion">

类中有所有前导空白,括号在下一行关闭。我是 EJS 的新手,控制空白的最佳方法是什么?

【问题讨论】:

  • 在一行中使用像currentUser? '': 'notSigned' 这样的三元运算符怎么样?
  • 是的,这行得通,我实际上在许多模板中都这样做,所以在一行中编写 if 语句也是如此:&lt;td class="&lt;%_ if (!currentUser) { _%&gt;notSigned&lt;%_ } _%&gt;"&gt; 我希望有一些方法可以控制 multi -line ejs,因为它更容易阅读。
  • 它并不能完全解决它,但app.set('view options', {rmWhitespace: true}); 会减少很多空间。我认为这更像是一个缩小过程,所以它不一定更容易阅读生成的 HTML。

标签: express ejs


【解决方案1】:

我的 EJS 经验非常有限,但我确实有一个我认为很有趣的想法可以分享。

如果您将函数添加到应用程序本地,它们可以在模板中访问:

app.locals.$if = function(condition, output) {
    return condition ? output : '';
};

app.locals.$unless = function(condition, output) {
    return condition ? '' : output;
};

$if$unless 的名称是任意的,但希望它们足以证明这个想法。

然后你可以在你的视图中写这样的东西:

<td class="<%=
    $unless(currentUser, 'notSigned')
%>">

我不知道你是否觉得它比你已经提到的替代方案更容易阅读,但我认为它读起来很好。

【讨论】:

    猜你喜欢
    • 2019-11-25
    • 1970-01-01
    • 1970-01-01
    • 2016-01-15
    • 2014-04-14
    • 1970-01-01
    • 2020-01-25
    • 2020-09-01
    • 1970-01-01
    相关资源
    最近更新 更多