Rob*_*tin 3 configuration node.js express
我正在学习使用Express.我想要做:
app.configure(function(){
app.set('views', __dirname + '/views');
app.set('view engine', 'jade');
app.set('view options', { layout: false }); /* asterisk */
app.use(express.bodyParser());
app.use(express.methodOverride());
app.use(app.router); /* dagger */
app.use(express.static(__dirname + '/public'));
});
app.configure('development', function(){
app.use(express.errorHandler({ dumpExceptions: true, showStack: true }));
app.use(express.logger('dev'));
app.set('view options', { pretty: true }); /* asterisk */
});
Run Code Online (Sandbox Code Playgroud)
我做的补充是:
有两个问题:
/* asterisk */当我设置'pretty:true'时,我会覆盖我以前的选项,而不是添加它们.即,我的程序会中断,除非我添加{ pretty: true, layout: false }哪些感觉多余并且不正确.我如何纠正它,以便我只是"修改"视图选项,而不是"定义"它们?
/* dagger */记录器不会确认我的请求,除了/favicon.ico.我发现如果我删除该app.use(app.router);行,那么我会看到两者/和/favicon.ico.这里发生了什么?
小智 5
从Express 3.x开始,使用app.set('view options')不再是正确的方法.
https://github.com/visionmedia/express/wiki/Migrating-from-2.x-to-3.x
这些选项现在在您的app.js使用app.locals中设置为
app.locals.pretty = true;
Run Code Online (Sandbox Code Playgroud)
或者为ejs设置自定义分隔符
app.locals.open = '}}';
app.locals.close = '{{';
Run Code Online (Sandbox Code Playgroud)