使用 时res.render
,您正在渲染已定义的视图。文档状态:
渲染一个带有回调的视图,该回调响应渲染的字符串。当发生错误时,next(err) 在内部被调用。
对于特定的 HTML,您要么必须使用 加载文件fs.readFile
,要么让 Express 使用渲染引擎,例如 Jade 或 EJS。例如,此代码示例会将 EJS 渲染引擎应用于所有扩展名为.html
.
app.engine('html', require('ejs').renderFile);
然后你可以像这样渲染一个文件。这是将变量传递给 HTML 文件的示例,因为这就是嵌入式 JavaScript 的用途。
app.get('/', function (req, res) {
res.render('/file', {
pass: 'arguments',
to: 'the file here'
});
});
这比必须在每次加载时读取文件更方便,如下所示:
app.get('/', function (req, res) {
fs.readFile('/index.html', 'utf8', function (err, data) {
res.send(data);
});
});
尽管这与您的问题无关,但这就是将变量传递给 EJS 的工作原理。它甚至可以与if
语句和一起使用loops
,因为它接受所有 JavaScript。每次console.log
呈现文件时,放入文件都会记录。
<span><%= pass %></span>
<!-- after rendering -->
<span>arguments</span>
如果您需要提供其他资源,例如 CSS、JavaScript 或其他 html 文件,您可以使用 Express 的目录功能。
app.use(express.static('/'));
然后你根本不需要渲染你的 HTML。它将被静态服务。