gpt4 book ai didi

node.js - ejs 'partial is not defined'

转载 作者:IT老高 更新时间:2023-10-28 22:00:12 26 4
gpt4 key购买 nike

好的,我有一个主要是静态的主页,但我想拥有用于导航、页脚等的部分 View 。我正在使用 ejs,它看起来像这样:

我的 Controller :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 但没有成功。

最佳答案

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

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

Includes are relative to the template with the include statement, for example if you have "./views/users.ejs" and "./views/user/show.ejs" you would use <% include user/show %>. The included file(s) are literally included into the template, no IO is performed after compilation, thus local variables are available to these included templates.

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

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

现在在 ejs 3.1.x 中

<% include('relative_filepath'); %>

必须替换为

<%- include('relative_filepath'); %>

关于node.js - ejs 'partial is not defined',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11351691/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com