ejs'部分没有定义'

好吧,我有一个主要是静态的主页,但我想有导航,页脚等部分的意见。 我正在使用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'); } }; 

我的意见目录有导航,首页和页脚所有.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> 

问题当我testing出来,我遇到了错误部分没有定义。 我尝试要求ejs,但没有成功。

正如@Pickels所说,Partial在3.x中被删除了。 但是,最新版本的EJS提供了一个包含“部分”(称为“包含”)的机制:

https://github.com/visionmedia/ejs#includes

包含与包含声明的模板相关,例如,如果您有“./views/users.ejs”和“./views/user/show.ejs”,您将使用<%include user / show%>。 包含的文件实际上包含在模板中,编译后不执行IO,因此局部variables可用于这些包含的模板。

以下将作为您的旧partial()函数的替代品。 您需要在其他地方进行调整以完全支持Express 3.x,但大部分情况下,这似乎performance良好(实际上更好 – 代码less,性能更好)。

 <% include nav.ejs %> <!-- replaces your old <%- partial('nav') %> --> 

3.x中删除了部分内容 现在由模板引擎来提供部分。