ejs '部分未定义'

Posted

技术标签:

【中文标题】ejs \'部分未定义\'【英文标题】:ejs 'partial is not defined'ejs '部分未定义' 【发布时间】:2012-07-06 07:00:32 【问题描述】:

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


        
    ;

我的views目录有nav、home和footer都是.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 但没有成功。

【问题讨论】:

【参考方案1】:

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

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

包含与包含语句的模板相关,例如,如果您有“./views/users.ejs”和“./views/user/show.ejs”,您将使用 。包含的文件实际上是包含在模板中的,编译后不执行 IO,因此这些包含的模板可以使用局部变量。

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

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

【讨论】:

这里要注意的是您需要包含文件名:***.com/a/13537052/131809 此外,ejs 网站上的布局部分有一个使用包含 github.com/visionmedia/ejs/blob/master/Readme.md#layouts 的示例来支持您正在寻找的东西。 知道如何在父目录中包含部分内容吗?使用../path/partial 根本不起作用... @Vadorequest 路径可能需要来自应用根目录,否则假定上下文。 嗯,但是 EJS 的 标签怎么了??【参考方案2】:

部分在 3.x 中被删除。现在由模板引擎提供部分。

【讨论】:

ejs。有一个 express.js 的桥接项目和许多名为 consolidate.js 的模板引擎,可以在这里找到:github.com/visionmedia/consolidate.js 具有讽刺意味的是,这只是一个“部分”答案。您能否解释一下如何使用 consolidate.js 使 Partials 在 express 3.x 和 EJS 中工作?

以上是关于ejs '部分未定义'的主要内容,如果未能解决你的问题,请参考以下文章

无法在 ejs 中设置未定义的属性“回合”

无法读取 ejs 中未定义的属性“子字符串”

mongo 文档中的对象在 EJS 中显示未定义

无法读取未定义的属性“名称” - mongoose、express、nodeJS、ejs

Express EJS模板如何传递一个json对象来查看它是不是未定义

ReferenceError:产品未定义