los*_*aut 28 ejs node.js express
好吧,我有一个主要是静态的主页,但我希望有部分视图,用于导航,页脚等.我正在使用ejs,它看起来像这样:
我的控制器:home.js
// Dependencies
var express = require('express');
module.exports = {
get: function(req, res) {
app.set('view engine', 'ejs');
var model = {
layout:'home',
};
res.render('home');
}
};
Run Code Online (Sandbox Code Playgroud)
我的views目录有nav,home和footer all .ejs
然后剥离文本的实际html文件看起来如下.
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8" >
<title>Tom Jones</title>
<!-- CSS -->
<link rel="stylesheet" href="/css/home.css" type="text/css" media="screen" >
</head>
<body>
<%- partial('nav') %>
<!--content part -->
<div id="showcontainer">
<section>
</section>
</div>
<div id="maincontainer">
<section>
</section>
</div>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)
问题当我测试它时,我遇到错误部分未定义.我试过要求ejs但没有成功.
Jos*_*hua 57
正如@Pickels所说,Partial在3.x中删除了.但是,最新版本的EJS提供了一种包含"部分"的机制,称为"包含":
https://github.com/visionmedia/ejs#includes
包含与包含include语句的模板相关,例如,如果您有"./views/users.ejs"和"./views/user/show.ejs",则使用<%include user/show%>.包含的文件字面上包含在模板中,编译后不执行IO,因此这些包含的模板可以使用局部变量.
以下内容将作为旧的partial()函数的替代.您需要在其他地方进行调整以完全支持Express 3.x,但在大多数情况下,这似乎运行良好(实际上更好 - 代码更少,性能更高).
<% include nav.ejs %> <!-- replaces your old <%- partial('nav') %> -->
Run Code Online (Sandbox Code Playgroud)
部分在 3.x 中被删除。现在由模板引擎来提供部分内容。