How to: Use ejs without express

前端 未结 3 1367
猫巷女王i
猫巷女王i 2021-02-13 16:09

I\'m starting with node in general, and I\'m attempting to do a site without express. I would none the less want to use ejs to inject my html and this is where my problem is...

相关标签:
3条回答
  • 2021-02-13 16:37

    Example from some book: template.ejs

    <html>
      <head>
        <style type="text/css">
          .entry_title { font-weight: bold; }
          .entry_date { font-style: italic; }
          .entry_body { margin-bottom: 1em; }
        </style>
      </head>
      <body>
        <% entries.map(entry => { %>
          <div class="entry_title"><%= entry.title %></div>
          <div class="entry_date"><%= entry.date %></div>
          <div class="entry_body"><%= entry.body %></div>
        <% }); %>
      </body>
    </html>
    
    
    function blogPage(entries) {
        const values = { entries };
        const template = fs.readFileSync('./template.ejs', 'utf8');
        return ejs.render(template, values);
    }
    
    
    const server = http.createServer((req, res) => {
        const entries = getEntries();
        const output = blogPage(entries);
        res.writeHead(200, {'Content-Type': 'text/html'});
        res.end(output);
        console.log('run server');
    });
    server.listen(8000);
    
    0 讨论(0)
  • 2021-02-13 16:44

    There is a project called Consolidate.js which provides a common API for many template engines. This ensures they can all be interchangeable. If you want to render templates directly, you want to be compatible with this API.

    Sample code from the Consolidate.js README:

    var cons = require('consolidate');
    cons.swig('views/page.html', { user: 'tobi' }, function(err, html){
      if (err) throw err;
      console.log(html); // Or write to your `res` object here
    });
    

    This sample is for Swig, but similar code works for EJS or any of the compatible engines.

    0 讨论(0)
  • 2021-02-13 16:46

    First of all, You need install ejs -> $ npm install ejs --save

    Simple example:

    main.ejs:

    <p> <%= exampleRenderEjs  %> </p>
    

    server.ejs

    var ejs = require('ejs');
    var fs = require('fs');
    
    var htmlContent = fs.readFileSync(__dirname + '/main.ejs', 'utf8');
    
    var htmlRenderized = ejs.render(htmlContent, {filename: 'main.ejs', exampleRenderEjs: 'Hello World!'});
    
    console.log(htmlRenderized);
    
    0 讨论(0)
提交回复
热议问题