2012-04-12 49 views
12

我想了解Express和Jade的工作原理。链接到其他玉文件

首先,我是否正确使用layout.jade作为模板文件(header,body,footer)并使用不同的文件在主体中显示信息(请参阅下面的示例)?

该代码工作正常,但我不确定这是否是在Express中执行某些操作的正确方法。如果我应该继续使用这个结构,我怎么能从内部链接到其他文件(例如,about.jade),例如index.jade,以显示该文件而不是index.jade?

在此先感谢!

layout.jade:

!!! 5 
html 
    head 
    title= title 
    link(rel='stylesheet', href='/stylesheets/style.css') 
    script(type='text/javascript', src='https://ajax.googleapis.com/ajax/libs/jquery/1.4.4/jquery.min.js') 
    script(type='text/javascript', src='http://ajax.googleapis.com/ajax/libs/jqueryui/1.7.2/jquery-ui.min.js') 
    script(type='text/javascript', src='/javascripts/external.js') 

    // Header 
    header#header 

    // Navigation 
    nav#nav 
    // Navigation code (ul, li etc)... 

    // Sidebar 
    aside#sidebar 
    // Sidebar code... 

    // Body 
    body!= body 

index.jade:

!!! 5 
html 
    head 
    title= title 

    section#wrapper 
     img.imageStyle(src = '/images/test1.png') 
     // And so on... 

About.jade:

// You get it... 

回答

13

我想你要寻找的是视图渲染路线快递: http://expressjs.com/en/guide/using-template-engines.html

所以,你可以设置是这样的:

app.get('/', function(req, res){ 
    res.render('index.jade', { title: 'index' }); 
}); 

app.get('/about', function(req, res){ 
    res.render('about.jade', { title: 'about' }); 
}); 

从一个链接到其他,一旦你配置正确的路线,你可以这样做:

a(href='/') index 

a(href='/about') about 

更新另外,您不需要再次在索引中重复此操作。

!!! 5 
html 
    head 
    title= title 
+0

很好的答案,谢谢! – holyredbeard 2012-04-13 06:47:34

4

除了Wes Freeman写的你还可以在你的玉文件中包含其他的玉模板。

这样你可以有你的header.jade,footer.jade并将它们包含在你的about.jade文件中。这里是从玉包括文档: https://github.com/visionmedia/jade#a13

这样你只需要改变header.jade文件,如果你添加例如应该在每个页面上的脚本或样式表标签。

+0

+1,也是有用的信息。 – 2012-04-13 17:39:19