EJS和木偶之间的冲突

时间:2014-04-08 23:18:54

标签: marionette ejs

对于我的单页应用程序,页面由服务器端的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 %&gt;

有没有办法(市场,处理器指令等)告诉EJS处理器不处理文件的一部分?

还有其他方法可以解决这场冲突吗?

谢谢,

与Hemant

1 个答案:

答案 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