【问题标题】:Client side and Server side rendering of ejs templateejs模板的客户端和服务器端渲染
【发布时间】:2016-12-06 17:44:37
【问题描述】:

我一直想学习 NodeJS,以便能够在服务器端和客户端运行相同的代码。 我将 NodeJS 与 Express 和 EJS 一起使用。 所以。我有一个 .ejs 页面,其中包含大量 HTML、JS、CSS 和少量模板。为了正义,就这样吧:

the_list-->some.ejs

<ul> 
<% for(i=0;i>the_list.length;i++) { %>
    <li>the_list[i]</li>
<% } %>
</ul>    

在服务器上进行一些渲染后,我们有一个完美的列表。

所以。 现在我想在客户端重新渲染它。我提出了一些 ajax 请求,现在我在 the_list 中有新项目。什么是正确的方法?

【问题讨论】:

    标签: node.js ejs server-side-rendering client-side-templating


    【解决方案1】:

    根据 ejs templates documentation

    var template = new EJS({
      text: `
        <ul>
          <% for(i = 0; i < the_list.length; i++) { %>
            <li>the_list[i]</li>
          <% } %>
        </ul>
      `
    });
    var html = template.render({ the_list: data });
    document.getElementById('list-wrapper').innerHTML = html;
    

    【讨论】:

      【解决方案2】:
      <div id="output"></div>
      <script src="/assets/js/ejs.js"></script>
      <script>
        let blogPosts = [
          {
              title: 'Perk is for real!',
              body: '...',
              author: 'Aaron Larner',
              publishedAt: new Date('2016-03-19'),
              createdAt: new Date('2016-03-19')
          },
          {
              title: 'Development continues...',
              body: '...',
              author: 'Aaron Larner',
              publishedAt: new Date('2016-03-18'),
              createdAt: new Date('2016-03-18')
          },
          {
              title: 'Welcome to Perk!',
              body: '...',
              author: 'Aaron Larner',
              publishedAt: new Date('2016-03-17'),
              createdAt: new Date('2016-03-17')
          }
      ];
            var html = ejs.render(`<% for(let i = 0; i < posts.length; i++) { %>
          <article>
              <h2><%= posts[i].title %></h1>
              <p><%= posts[i].body %></p>
          </article>
      <% } %>`, {posts: blogPosts});
        // Vanilla JS:
        document.getElementById('output').innerHTML = html;
      </script>
      

      从最新版本下载 ejs.js 或 ejs.min.js

      【讨论】:

      【解决方案3】:

      这应该可以,看起来你的问题是关系运算符 '>' 因为它永远不会输出任何东西。

      <ul>
          <% for(var i=0; i<the_list.length; i++) { %>
              <li>
                  <a>
                      <%= the_list[i]%>
                  </a>
              </li>
          <% } %>
      </ul>
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2011-07-26
        • 1970-01-01
        • 2023-04-09
        • 2017-12-29
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多