《Node.js 开发指南》版本差异解决方案

P84 5.2.1安装Express

书中使用express –help得到的信息与实际不符.

3.0.0rc4的信息为:

  Usage: express [options]

  Options:

    -h, --help          output usage information
    -V, --version       output the version number
    -s, --sessions      add session support
    -e, --ejs           add ejs engine support (defaults to jade)
    -J, --jshtml        add jshtml engine support (defaults to jade)
    -H, --hogan         add hogan.js engine support
    -c, --css <engine>  add stylesheet <engine> support (less|stylus) (defaults
to plain css)  
    -f, --force         force on non-empty directory

P85 5.2.2建立工程

旧版本的-t参数已失效,现在用-e指定ejs模版引擎.

所以需要通过以下命令建立网站基本结构:

express -e microblog  

P89 5.3 路由控制 4. layout.ejs

express 3.0已经取消了这个模板文件,需要使用请npm install express-partials.

P100 5.4.4 片段视图

partial在3.x中已经被删除.现在需要使用include来完成相同的功能.

修改list.ejs的内容为:

<!DOCTYPE html>  
<html>  
    <head>
        <title><%= title %></title>
        <link rel='stylesheet' href='/stylesheets/style.css' />
    </head>
    <body>
        <ul>
            <% items.forEach(function(listitem){ %>
              <% include /listitem %>
            <% }) %>
        </ul>
    </body>
</html>  

P101 5.4.5 视图助手

app.helpers和app.dynamicHelpers在3.x中已经被其他功能替代,现在需要使用app.locals和res.locals来实现相同的功能.

修改后的代码应为:

var util = require('util');

app.locals({  
  inspect: function(obj) {
    return util.inspect(obj, true);
  }
});

app.get('/helper', function(req, res) {  
  res.render('helper', {
    title: 'Helpers',
    headers: req.headers
  });
});

res.locals设置动态视图助手暂未成功,这段代码之后可能会进行改动.

由于未使用layout.ejs,还需要修改helper.ejs:

<!DOCTYPE html>  
<html>  
    <head>
        <title><%= title %></title>
        <link rel='stylesheet' href='/stylesheets/style.css' />
    </head>
    <body>
        <%= inspect(headers) %>
    </body>
</html>