【发布时间】:2013-02-08 19:43:38
【问题描述】:
我正在尝试将 EJS 作为 Express 的视图引擎。看来我的 layout.ejs 没有使用。我的“视图”文件夹中有两个视图 index.ejs 和 layout.ejs。似乎 index.js 已呈现,但 layout.ejs 未呈现。 layout.ejs 文件应该包含一个 CSS 文件,但是当页面在浏览器中呈现时,它不存在。我放置在 layout.ejs 文件中的任何测试测试文本都不会随响应一起输出。
我是否缺少额外的配置步骤?
谢谢!
我的 server.js 代码:
var express = require('express');
var app = express();
app.set('view engine', 'ejs');
app.use(express.static(__dirname + '/public'));
app.get('/', function(req, res){
res.render('index.ejs', {title: 'EJS Engine'});
});
app.listen(8080);
在我的 layout.ejs 中,我链接到一个位于公共文件夹中的 css 文件。
layout.ejs:
<!DOCTYPE html>
<html>
<head>
<title><%= title %></title>
<link rel="stylesheet" type="text/css" href="main.css">
</head>
<body>
<%- body %>
</body>
</html>
index.ejs
<div id="container">
index.html
</div>
【问题讨论】:
-
显式设置views目录的位置...默认为CWD/views
-
我不得不使用 express-partials 来获得支持。
-
EJS视图引擎不应该默认使用layout.ejs吗?
-
默认使用/views目录下的layout.ejs。否则需要使用 app.set('views', __dirname + '/
'); 明确指定位置 -
@Nick "Currently EJS has no notion of blocks, only compile-time
includes。"否则布局是 feature of Express 尽管 2.x。如果您使用的是 3.x,则从 "View system changes" -- "要使用 EJS 获取布局功能,您可以使用 express-partials 或 ejs-locals。"