File: client-injection.html

package info (click to toggle)
node-ejs 3.1.10%2B~3.1.5-2
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid, trixie
  • size: 1,144 kB
  • sloc: javascript: 2,476; makefile: 5
file content (46 lines) | stat: -rw-r--r-- 1,516 bytes parent folder | download | duplicates (5)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
<!DOCTYPE html>
<!--
  This example demonstrates how to compile and render EJS templates in the
  browser. It is usually recommended to always embed a precompiled function
  in the HTML, rather than compile it on-the-fly, but this demonstrates that
  it is possible.

  To use this example, first run `jake build` in the EJS root directory to
  produce the client-side ejs.js and ejs.min.js. Alternatively, you can
  download the prebuilt client scripts (both minified and not) in GitHub
  releases.
  -->
<html>
  <head>
    <script src="../ejs.js"></script>
    <!-- `type` can be anything but application/javascript -->
    <script id="users" type="text/template">
      <% if (names.length) { %>
        <ul>
          <% names.forEach(function(name){ %>
            <li><%= name %></li>
          <% }) %>
        </ul>
      <% } %>
    </script>
    <script>
      onload = function () {
        // get the EJS template as a string
        var templ = document.getElementById('users').innerHTML;
        console.log('EJS template:');
        console.log(templ);
        // data to output to the template function
        var data = { names: ['loki', 'tobi', 'jane'] };
        // stores the rendered HTML
        var html = ejs.compile(templ)(data);
        console.log('Rendered HTML:');
        console.log(html);
        // inject the rendered data to <body>
        document.body.innerHTML = html;
        console.log('HTML injected to <body>');
      }
    </script>
  </head>
  <body>
  </body>
</html>