ejs'部分未定义'

时间:2012-07-05 19:59:53

标签: node.js express 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>

问题 当我测试它时,我遇到错误部分未定义。我试过要求ejs但没有成功。

2 个答案:

答案 0 :(得分:56)

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

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

  

包含与包含include语句的模板相关,例如,如果您有“./views/users.ejs”和“./views/user/show.ejs”,则使用&lt;%include user / show %取代。包含的文件字面上包含在模板中,编译后不执行IO,因此这些包含的模板可以使用局部变量。

以下内容可以替代旧的partial()函数。你需要在其他地方进行调整以完全支持Express 3.x,但在大多数情况下,这似乎运行良好(实际上更好 - 代码更少,性能更高)。

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

答案 1 :(得分:4)

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