0

基于 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.  ' })
});

这似乎完美地合并了布局和局部视图,但我无法弄清楚如何。谁能阐明这是如何工作的?

4

1 回答 1

1

如果您不是来自红宝石背景,则可能很难掌握,希望这会有所帮助。

默认情况下,快递将呈现“布局”(在您的情况下为 layout.jade)。然后在每个页面上呈现布局,除非在其他地方指定。尽管这可能对头部始终相同的网站和博客有所帮助,但我发现它在 Web 应用程序中很麻烦。如果您愿意,可以通过将以下代码添加到您的应用设置来禁用:

app.set('view options', {layout: false});

Express 然后将呈现您的视图(在本例中为 index.jade)。索引是大部分内容。

Express 还可以渲染局部视图,这是视图内部的局部视图。这对页脚之类的项目很有帮助,但会影响性能。重要的是要注意,局部与视图不同。

我发现没有 Jade/Tempting 经验的人使用 EJS 而不是 Jade 的学习曲线更小,因为它的流程很像 HTML。

下面是一些在我刚开始使用 express 时真正帮助我掌握视图/部分和中间件的视频。Nodetuts 是一个很好的资源。Express 文档也已发展成为一种非常有价值的资源,祝您编码愉快,祝您好运!
快递文档
nodetuts express

于 2012-09-13T06:07:55.150 回答