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/
但是没有成功.
我没有做任何布局配置.
这是我的
doctype 5
html
head
title 'What is up'
link(rel='stylesheet', href='/stylesheets/style.css')
body
!= body
Run Code Online (Sandbox Code Playgroud)
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)
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)
没有任何事情发生,视图无需布局...
正如上面所说的那样,你正在使用版本3.0来摆脱布局和局部,并让模板引擎处理它.以下是迁移维基的答案:
"要使用EJS返回布局功能,您可以使用express-partials或ejs-locals."
(来自https://github.com/visionmedia/express/wiki/Migrating-from-2.x-to-3.x)
我最终使用了express-partials,它的工作原理与他们的例子完全相同.我无法发布到ejs-locals的链接,因为我还没有足够的声誉,但你可以在维基上找到它.
归档时间: |
|
查看次数: |
4622 次 |
最近记录: |