我正在尝试将Javascript变量连接到EJS对象以使其动态。有没有办法用EJS语法或Javascript做到这一点?
例如
后端
res.render('webpage', {bookObj : bookObj})
前端
let author = "Shakespeare"
let book = "<%= bookObj['Shakespeare'] %>" // <-- it works
let book = "<%= bookObj['" + author + "'] %>" // <-- it does not work
答案 0 :(得分:0)
您正在将EJS中的服务器端JavaScript与从中生成的客户端JavaScript混淆。
EJS标记外部的字符串语法与其中的JS无关,并且所使用的变量必须在使用它的同一软件中声明。
<% let author = "Shakespeare"; %>
let book = "<%= bookObj[author] %>"
当然,如果输出包含特殊字符,则会中断输出,因此通常最好使用JSON编码器生成JS文字:
<% let author = "Shakespeare"; %>
let book = <%- JSON.stringify(bookObj[author]) %>;
另请参阅What is the difference between client-side and server-side programming?
答案 1 :(得分:0)
您需要在EJS上下文中定义变量以获取服务器端代码中的访问权限。
<% var author = "Shakespeare"; %>
let author = "<%= author %>";
let book = "<%= bookObj[author] %>"