部分常用Express方法详解
app.set(name, value)
分配给name一个value,并将name作为app settings table的一个属性。
使用app.set('foo', true)
相当于调用 app.enable('foo')
。相似的,使用 app.set('foo', false)
相当于调用 app.disable('foo')。
通过使用app.get()重新得到该值。
app.set('title', 'My Site'); app.get('title'); // "My Site"
app.engine(ext, callback)
将ext交给回调函数处理,这个回调函数由模板引擎提供。
默认的,Express会基于文件的扩展名来 require()
模板引擎。 比如,如果你渲染 “foo.jade” 文件,Express会在内部调执行下面这些代码,为了提升性能,会缓存require()的结果用于之后的一系列调用。
app.engine('jade', require('jade').__express);
如果模板引擎没有提供 .__express
方法(这句笔者也不太理解什么意思),或者你希望让模板引擎映射一个和默认不同的扩展,你可以使用app.engine()方法。
比如说,让EJS模板引擎映射到 “.html” 文件:
app.engine('html', require('ejs').renderFile);
这个例子中,EJS提供了一个.renderFile()方法,这个方法符合Express期待的形式:
(path, options, callback),于是这个renderFile方法在内部会被化名为
ejs.__express
所以如果你渲染使用'.ejs'文件时你不需要做任何事情,一切都在你看不见的内部解决了。
有一些模板引擎并不遵守这个约定, consolidate.js 库可以让Node的模板引擎去遵守这一约定,让这些模板引擎可以和Express无缝对接。
var engines = require('consolidate'); app.engine('haml', engines.haml); app.engine('html', engines.hogan);