Jon*_*Ong 1 node.js express pug
我有这样的目录
/Workspace
/app
app.js
/lib
/public
/styles
*.css
/scripts
*.js
/views
*.jade
Run Code Online (Sandbox Code Playgroud)
从app.jsin app,我有以下代码:
libPath = __dirname + '/../lib'
... express stuff ...
app.configure(function() {
app.set('view', libPath + '/views')
... express stuff ...
app.use(express.static(libPath + '/public'))
... rest of the app ...
Run Code Online (Sandbox Code Playgroud)
现在,问题是Jade找不到任何视图,但找到了所有静态资产.因此,app.set('view')不起作用,但是express.static.如果我将views目录复制到app,使用__dirname + '/views'工作正常.任何人都知道为什么会这样吗?
做app.get('view'),我得到一个这样的目录:/Users/jong/Workspace/app/../lib/views.我尝试做绝对路线/Users/jong/Workspace/lib/views也无济于事.这个目录适用于静态资产但不适用于模板,这很奇怪.
你有一个错误的类型,正确的选项名称是views,而不是view.
配置你的应用程序
app.set('views', __dirname + '/views');
app.set('view engine', 'jade');
app.set('view options', { layout: true });
Run Code Online (Sandbox Code Playgroud)
但问题的主要根源是你似乎误解了express(以及MVC)的工作方式.
expressexpress.static一旦请求url与现有的静态文件路径匹配,就使用configure指令将静态数据发送到浏览器.
否则,它会尝试为请求的路径找到任何已定义的路由并执行相关的控制器(可能依次使用或不使用模板引擎).
因此,为了显示索引页面(即使它没有参数),如果你index.js的views文件夹中有一个,你必须做类似的事情
app.get('/', function (req, res, next) {
res.render('index', {});
});
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2000 次 |
| 最近记录: |