在输入值中使用 EJS 显示不正确

ton*_*on1 0 javascript ejs node.js

下面是使用 EJS 模板的我的 node.js 应用程序客户端代码的一部分。有一个输入框,我想显示如果用户没有登录,在输入框中显示消息。而且,输入框也应该无法使用。

但它没有正确显示,我怎样才能显示整个语句,包括空格,而不仅仅是“需要”,而是“需要登录”?

<input type="text" <%= (isAuthenticated) ? '' : "value='Need to Login'" %> />

// view : 'Need
// It doesn't show after space
Run Code Online (Sandbox Code Playgroud)

Emm*_*ett 5

在 EJS 中,会<%= foo %>转义 HTML,而<%- foo %>不会。

在您的情况下,<%= "value='Need to Login'" %>将 render value=&#39;Need to Login&#39;,这不是您想要的。

替换<%=<%-可以解决问题。

但总的来说,在使用<%-时要深思熟虑,尤其是在显示任意字符串或用户输入时,因为它可能使您容易受到XSS 的攻击。