根据Mircosoft WebMatrix 2中的示例项目,我已经开始使用everyauth和express进行小型webapp。 我无法理解的是信息如何传递给视图以及视图如何从部分视图中拼接在一起。
视图是从名为layout.jade的父视图和部分视图(例如index.jade)生成的。然而,这些观点似乎并未相互引用。
路由似乎是使用以下代码管理的:
app.configure(function() {
app.set('views', __dirname + '/views');
app.set('view engine', 'jade');
app.use(express.bodyParser());
app.use(express.methodOverride());
app.use(require('./middleware/locals'));
app.use(express.cookieParser());
app.use(express.session({ secret: '[secret]' }));
app.use(everyauth.middleware());
app.use(express.compiler({ src: __dirname + '/public', enable: ['less'] }));
app.use(connect.static(__dirname + '/public'));
app.use(app.router);
});
并且路由定义如下:
app.get('/', function(req, res) {
res.render('index', { title: 'Home Page. ' })
});
这似乎完美地合并了布局和局部视图,但我无法弄清楚如何。任何人都可以解释这是如何工作的?
答案 0 :(得分:1)
如果你不是来自红宝石背景,那可能很难掌握,希望这会有所帮助。
默认情况下,express将呈现“布局”(在您的情况下为layout.jade)。然后在每个页面上呈现布局,除非在其他地方指定。虽然这对于头部始终相同的网站和博客可能有所帮助,但我发现它在Web应用程序上很麻烦。如果您愿意,可以通过将以下代码添加到您的应用设置中来停用:
app.set('view options', {layout: false});
Express将呈现您的视图(在本例中为index.jade)。索引是大部分内容。
Express也可以渲染局部视图,这是视图内部的局部视图。这对于页脚等项目很有帮助,但会影响性能。重要的是要注意部分与视图不同。
我发现没有Jade / Tempting经验的人使用EJS而不是Jade的学习曲线较小,因为它的流程与HTML非常相似。
下面是一些真正帮助我掌握视图/部分的视频,以及我第一次使用快递时的中间件。 Nodetuts是一个很好的资源。 Express文档也已经发展成为一个非常有价值的资源,编码愉快,祝你好运!
express documentation
nodetuts express