表示没有找到/使用布局

aus*_*nbv 4 layout node.js express

我正在尝试使用express并渲染一个layout.jade,我的目录树非常标准.

??? apps
?   ??? fridge_face
?       ??? routes.coffee
?       ??? views
|           ??? index.jade
??? server.js
??? views
    ??? layout.jade
    ??? stylesheets
        ??? style.styl
Run Code Online (Sandbox Code Playgroud)

在我的routes.coffee中,当我渲染index.jade时,所有单词都很好,但是没有渲染布局.我尝试过移动布局apps/fridge_face/views/但是没有成功.

我没有做任何布局配置.

这是我的

layout.jade

doctype 5
html
  head
    title 'What is up'
    link(rel='stylesheet', href='/stylesheets/style.css')
  body
    != body
Run Code Online (Sandbox Code Playgroud)

routes.coffee

routes = (app) ->
  app.get '/', (req, res) ->
    Word.once 'wordsFetched', (params) ->
      res.render "#{__dirname}/views/index",
        layout: true
        words: params.map (word) -> word.word

    Word.getWords()


module.exports = routes
Run Code Online (Sandbox Code Playgroud)

server.js配置

app.configure(function(){
  app.set('port', process.env.PORT || 3000);
  app.set('views', __dirname + '/views');
  app.set('view engine', 'jade');
  app.use(express.favicon());
  app.use(express.bodyParser());
  app.use(express.methodOverride());
  app.use(app.router);
  app.use(express['static'](__dirname + '/public'));
});
Run Code Online (Sandbox Code Playgroud)

正如你所看到的那样,没有任何东西能够或者会使布局无法渲染......我做错了怎样才能快速找到我的布局

编辑


我知道我提出的这个问题超长,但增加了一些发展.第一

当我!=从两个目录中的布局中删除时,没有任何变化.我的视图仍然是免费的布局.

当我添加

app.set('view options', {
  layout: false
});
Run Code Online (Sandbox Code Playgroud)

然后用我们的视图在我的视图中显式渲染我的布局

layout: "#{__dirname}/views/layout"
# OR
layout: "layout"
# OR
layout: true
Run Code Online (Sandbox Code Playgroud)

没有任何事情发生,视图无需布局...

Hit*_*ani 6

正如上面所说的那样,你正在使用版本3.0来摆脱布局和局部,并让模板引擎处理它.以下是迁移维基的答案:

"要使用EJS返回布局功能,您可以使用express-partials或ejs-locals."

(来自https://github.com/visionmedia/express/wiki/Migrating-from-2.x-to-3.x)

我最终使用了express-partials,它的工作原理与他们的例子完全相同.我无法发布到ejs-locals的链接,因为我还没有足够的声誉,但你可以在维基上找到它.