8
回答
Node.js 使用 Mustache.js 做模板
极速云服务器,低至1.04元/天>>>   

为了让 Node.js 输出更多的 HTML 元素,我们可以借助一些 html 模板引擎,例如 Mustache。

首先在 Node.js 中安装 Mustache:

npm install mustache

这会创建一个目录:node_modules\mustache

然后我们可以编写代码:

    var mustache = require('./node_modules/mustache/mustache');
     
    function helloworld(response)
    {
      console.log('request recieved at ' + (new Date()).getTime());
      response.writeHead(200, {'Content-Type': 'text/html'});
      var template = '<h1>Test</h1><p>{{helloworld}}</p>';
      var model = {helloworld:'Hello World'};
      response.end(mustache.to_html(template,model));
    }
     
    exports.helloworld = helloworld;

这段代码使用 to_html 函数生成网页,来看看执行效果:

但这看起来很不爽,我们希望模板独立于控制器之外,例如下面的模板:

    <html>
      <head>
        <title>My first template</title>
      </head>
      <body>
        <h1>Test</h1>
        <p>{{helloworld}}</p>
      </body>
    </html>

文件名是 helloworld.html.

为了使用这个模板文件,我们可以这样编写代码:

    var mustache = require('./node_modules/mustache/mustache');
    var fs = require('fs');
     
    function helloworld(response)
    {
      console.log('request recieved at ' + (new Date()).getTime());
      fs.readFile("./helloworld.html",function(err,template) {
                response.writeHead(200, {'Content-Type': 'text/html'})
                response.write(mustache.to_html(template.toString(), {helloworld:"Hello World"}))
                response.end()
         });
    }
     
    exports.helloworld = helloworld;

运行结果如下:

怎样,简单很多吧?:)

举报
红薯
发帖于6年前 8回/5K+阅
顶部