【问题标题】:Conflict between EJS and MarionetteEJS和木偶之间的冲突
【发布时间】:2014-04-08 23:18:54
【问题描述】:

对于我的单页应用程序,页面由服务器端的 node-express-ejs 传递到浏览器上基于 Maironette-Backbone 的客户端。不幸的是,EJS 和 Marionette 都使用语法“”来插入计算值。我的页面有一些值需要由服务器插入,一些值将由客户端计算。所以我需要类似下面的 sn-p 来工作。

    <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 处理器不处理文件的一部分?

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

谢谢,

赫曼特

【问题讨论】:

    标签: marionette ejs


    【解决方案1】:

    找到了解决办法。

    EJS 允许通过在选项中设置标签来定义您自己的标签。据我所知,这没有记录。我只是通过查看源代码才找到它。无论如何,以下选项设置将避免与 Marionette 开闭标签冲突。

    在服务器端,routes.js 可以指定这样的选项。

        res.render('test', { open: '{{', close: '}}', serverComputed: '5000'  });
    

    在 ejs 文件中,现在您可以对服务器计算变量和客户端计算变量使用不同的标记,就像这样。

        Server Computed = $ {{=serverComputed}}
    
        Client Computed = $ <%=clientComputed%>
    

    EJS 处理器不会处理“”部分。

    赫曼特

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-08-14
      • 2012-06-27
      • 2012-03-06
      • 2011-05-02
      • 2012-11-25
      • 2013-10-27
      • 2014-03-02
      • 2016-11-15
      相关资源
      最近更新 更多