玉没有find在不同的文件夹中的视图
我有一个这样的目录
/Workspace /app app.js /lib /public /styles *.css /scripts *.js /views *.jade
从app.js
在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 ...
现在问题是Jade找不到任何视图,但find了所有的静态资产。 因此, 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
。
configuration你的应用程序
app.set('views', __dirname + '/views'); app.set('view engine', 'jade'); app.set('view options', { layout: true });
但问题的根源在于,你似乎误解了express
(以及MVC)的工作原理。
express
将静态数据发送到浏览器,使用您的express.static
configuration指令,一旦请求url匹配现有的静态文件path。
否则,它会尝试为请求的pathfind任何已定义的路由并执行相关的控制器(可能会或可能不会使用模板引擎)。
所以,为了显示例如索引页面(即使它没有参数),假设你有一个index.js
在你的views
文件夹,你必须做一些像
app.get('/', function (req, res, next) { res.render('index', {}); });