使用嵌入式 Javascript 语法直接输出到模板

发布于 2024-12-25 12:29:39 字数 734 浏览 0 评论 0原文

我正在使用 Backbone 和 Underscore 模板。我的代码中有一个 JavaScript if() 条件,看起来像这样:

<div class='faces'>
    <% if(somevalue === true) { %>
       your face
    <% } else { %>
       my face
    <% } %>
</div>

但是我发现这种语法很尴尬,我真的很想使用类似下面的东西,即使它实际上不起作用(用文本替换整个文档):

<div class='faces'>
    <% if(somevalue === true) { 
        document.write("your face");
    } else { 
        document.write("my face");
    }
</div>

我希望字符串准确地输出在模板中被调用的位置。为了输出一个简单的变量,EJS(和下划线)有一个很好的语法,

<%= somevalue %>

其中 =document.write() 将其输出到模板中的关键部分。我想要完成的事情可能吗? JavaScript 可以内联输出吗?

I'm using Backbone with Underscore templates. I have a JavaScript if() condition in my code that looks something like this:

<div class='faces'>
    <% if(somevalue === true) { %>
       your face
    <% } else { %>
       my face
    <% } %>
</div>

However I find this syntax awkward and I really would like to use something like the following, even though it doesn't actually work (replaces entire document with the text):

<div class='faces'>
    <% if(somevalue === true) { 
        document.write("your face");
    } else { 
        document.write("my face");
    }
</div>

I want the string to be output in the template exactly where it is called. For outputting a simple variable EJS (and underscore) have a great syntax of

<%= somevalue %>

Where the = is the critical part that document.write()s it out into the template. Is what I'm trying to accomplish possible? Can JavaScript output inline?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

最美的太阳 2025-01-01 12:29:39

有几个选项,您可以使用 <%= %> 和三元:

<%= somevalue == true ? 'your face' : 'my face' %>

或者您可以使用 打印

您还可以在 JavaScript 代码中使用 print。有时这比使用 <%= ... %> 更方便。

var generated = _.template("<% print('Hello ' + epithet); %>");
编译({绰号:“傀儡”});
=> “你好,跟屁虫。”

所以你可以这样做:

<% if(somevalue == true) { 
    print("your face");
} else { 
    print("my face");
} %>

我假设 if(somevalue = true) 是一个拼写错误,应该是 if(somevalue == true)

There are a few options, you could use <%= %> and a ternary:

<%= somevalue == true ? 'your face' : 'my face' %>

or you could use print:

You can also use print from within JavaScript code. This is sometimes more convenient than using <%= ... %>.

var compiled = _.template("<% print('Hello ' + epithet); %>");
compiled({epithet: "stooge"});
=> "Hello stooge."

so you could do this:

<% if(somevalue == true) { 
    print("your face");
} else { 
    print("my face");
} %>

I'm assuming that if(somevalue = true) is a typo and should be if(somevalue == true).

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文