对于我的单页应用程序,页面由服务器端的node-express-ejs传送到浏览器上基于Maironette-Backbone的客户端。不幸的是,EJS和Marionette都使用语法“<%= var%>”用于插入计算值。我的页面有一些值需要由服务器插入,一些值将由客户端计算。所以我需要类似下面的代码片段才能工作。
<html> .....
Server Computed = $ <%=serverComputed%>
Client Computed = $ <%=clientComputed%>
....</html>
我在服务器上的routes.js会有类似的东西,
res.render('test', { serverComputed: '5000' });
但是,EJS抛出
ReferenceError: .../test.ejs:17
.....
clientComputed is not defined
以下内容无济于事
res.render('test', { serverComputed: '5000', clientComputed: '<%= clientComputed %>' });
因为它符合预期,最终为
$lt:%= clientComputed %>
有没有办法(市场,处理器指令等)告诉EJS处理器不处理文件的一部分?
还有其他方法可以解决这场冲突吗?
谢谢,
与Hemant
答案 0 :(得分:0)
找到了解决方案。
EJS允许通过在选项中设置自己的标签来定义自己的标签。据我所知,这没有记录。我只是通过浏览源代码找到它。无论如何,以下选项设置将避免与Marionette开关标签发生冲突。
在服务器端,routes.js可以指定这样的选项。
res.render('test', { open: '{{', close: '}}', serverComputed: '5000' });
在ejs文件中,现在可以为服务器计算变量和客户端计算变量设置不同的标记,如下所示。
Server Computed = $ {{=serverComputed}}
Client Computed = $ <%=clientComputed%>
EJS处理器不会处理&#34;&lt;%= clientComputed%&gt;&#34;一部分。
与Hemant