Express,Jade布局文件渲染正文但不渲染头部

7
我的问题是我的jade布局文件没有正确渲染。正文被渲染了,但生成的HTML中的head标签为空。我尝试单独渲染layout.jade文件,它完美地工作了。
这是我的layout.jade文件:
!!!
html
    head
        title= title
        link(rel='stylesheet', href='stylesheets/style.css')
        script(type='text/javascript', src='javascripts/jquery-1.7.2.js')
        link(rel='stylesheet', href='stylesheets/pictogram-button.css')
body
    header(style='padding-bottom:50px;')
        include partials/header
    section(style='min-height:600px;') 
        div!= body
    footer.footer
        include partials/footer

这是我的index.jade文件:

.line_h100t
.column_wrap800
    .round_box1_w800
        .list_fl10
            ul.line_h40
                li(style='margin-left:20px;')
                    ul
                        li
                            img(src='/images/icon/whiteWithoutCircle/check.png')
                            img(src='/images/login/loginTxt.png')
                    ul.line_h40t
                        li(style='margin-left:50px;')
                            p 로그인이 필요하신 분은
                            p Oopa Roopa 관리팀으로 문의해 주세요!
                li(style='border-left:1px solid #999; padding:0 0 0 20px;')
                    ul
                        li
                            span.text_yellow ID
                    ul
                        li
                            input.login_input(type='text')
                    ul.line_h35t
                        li
                            span.text_yellow PASSWORD
                    ul
                        li
                            input.login_input(type='password')
                li
                    ul.line_h10t
                        a.button-bevel.transparency(href='#')
                            .line_h35
                                span.lock
                                p(style='width:100px;') LOGIN

以下是我的express应用程序中呈现索引文件的函数。

    adminLogin : function (req,res) {
    res.render( 'index', {
        title: 'Admin Login',
        pageCategory: 'Admin Login',
        pageName : 'index'
    });
},

感谢您提前为我提供的任何帮助。

你正在使用哪个版本的Express?我相信在第3个版本中,布局的概念被移除了。 - David Weldon
我正在使用3.0.0版本。我的同事制作了jade文件。由于他不是以英语为母语的人,所以我代表他在这里写下这些话。请问您能否指导我如何获得与使用旧版样式布局相同的效果。 - Kenley Tomlin
1个回答

18

在Express 3中,为了支持模板继承而删除了布局(layouts),详情请参见这里。Jade的readme介绍了这个机制,你可以在这里找到一个额外的示例。

你需要将 div!= body 替换为 block body(或类似的代码)。然后在 index.jade 的顶部添加 extends layout。最后将 index.jade 的内容放在 block body(或者你在 layout.jade 中使用的其他名称)下面。


David,你如何在Jade中向局部文件(include partials/header)传递变量? - Ziyan Junaideen

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接