配置应用程序

配置

通过 app.set(key,value) 设置,可以配置web应用程序,通过app.get(key) 可以得到值。

选项如下:
  • env 运行时环境,默认为 process.env.NODE_ENV 或者 "development"

  • trust proxy 激活反向代理,默认未激活状态

  • jsonp callback name 修改默认?callback=的jsonp回调的名字

  • json replacer JSON replacer 替换时的回调, 默认为null

  • json spaces JSON 响应的空格数量,开发环境下是2 , 生产环境是0

  • case sensitive routing 路由的大小写敏感, 默认是关闭状态, "/Foo" 和"/foo" 是一样的

  • strict routing 路由的严格格式, 默认情况下 "/foo" 和 "/foo/" 是被同样对待的

  • view cache 模板缓存,在生产环境中是默认开启的

  • view engine 模板引擎

  • views 模板的目录, 默认是"process.cwd() + ./views"

这些配置项,常用的是 view engineviews  

// 设置动态页目录
app.set('views', path.join(__dirname, 'views'));

// 设置动态模版引擎,这里用的是ejs引擎。
app.set('view engine', 'ejs');

加载中间件

通过 app.user 方法可以加入中间件,扩展web应用程序的功能,自己也可方便的开发中间件。

以下是express默认生成的代码

app.use(favicon());
app.use(logger('dev'));
app.use(bodyParser.json());
app.use(bodyParser.urlencoded());
app.use(cookieParser());
app.use(express.static(path.join(__dirname, 'public')));

你可以配置多个静态目录,比如:

app.use(express.static(path.join(__dirname, 'public')));
app.use(express.static(path.join(__dirname, book)));

会先从public目录找,如果没有会查找book目录。

模版引擎的配置说明

通过调用 app.engine('haml', engines.haml); 可以让特定引擎,对特定扩展名的动态模版文件进行解析。

var engines = require('consolidate');
app.engine('haml', engines.haml);
app.engine('html', engines.hogan);

'consolidate'  是一个库,可以铺平各个引擎集成到express差异性,因为并不是每个第三方引擎都遵守约定,所以'consolidate'起到了中间翻译的作用。

注意!

app.engine 和 app.set(“view engine”,”...”) 到底什么关系呢?可以这么理解,你想改变对不同扩展名的动态模版进行解析,就要用到 app.engine,如下代码:

var engines = require('consolidate');
app.set('view engine', “html”);
app.engine('html', engines.jade);

这段代码说明,模版引擎采用了html引擎,这个很奇怪,其实是由于 app.engine('html', engines.jade); 这段代码注册了 html 引擎,而实际的解析是采用 jade 解析,就形成了可以对html扩展名文件进行解析,采用的解析方式是 jade。