【问题标题】:How to include contents in EJS?如何在 EJS 中包含内容?
【发布时间】:2018-10-04 03:24:39
【问题描述】:

我在(我认为)应该很简单的事情上遇到了一些麻烦。 我的网络应用程序是Node.js 一个带有expressejs 的应用程序。

我在 index.js 中包含这样的代码(在这种情况下非常经典):

var app = express();

app.use('/public', express.static(path.join(__dirname, '/public')));
app.set('port', (process.env.PORT || 5000));
app.use(express.static(__dirname + '/public'));
app.set('views', __dirname + '/views');
app.set('view engine', 'ejs');

现在这是我遇到的问题。

在我所有的 .ejs 文件中,有些恰好需要相同的代码(由我编写)。为了避免重复,我想将此代码放在一个单独的文件中,然后在必要时包含它,但我找不到正确的方法。我将代码放在一个名为 Utils.ejs 的文件中(在 partials 文件夹中),然后使用它:

<% include ../partials/Utils.ejs %>

但它不起作用。然后我在网上搜索并尝试了一些变化,但没有发现任何工作。

有人知道我该怎么做吗?

有关版本的信息,这是我的 package.json 文件中的内容:

"ejs": "^2.5.7",
"express": "~4.11.x",
"node": ">=4.3"

【问题讨论】:

  • 你能分享你的文件夹结构吗?比如你的页面放在哪里,你的部分放在哪里?
  • 我现在显示文件夹结构。我选择将我的文件与其他包含的 .ejs 文件一起放置。有错吗?

标签: javascript node.js express ejs


【解决方案1】:

在导入部分时不要包含文件扩展名

&lt;% include ../partials/Utils.ejs %&gt; 中删除.ejs 并尝试

【讨论】:

  • 我尝试按照您的建议:删除“.ejs”,但没有任何区别。
【解决方案2】:

删除“..”和“.ejs”,同时确保“/partials/Utils/”在公共文件夹中

<% include /partials/Utils %>

【讨论】:

  • 现在不公开了。它像其他包含的文件(header.ejs 和 nav.ejs)一样在视图中。
【解决方案3】:

在这一行

app.set('views', __dirname + '/views');

做起来

app.set('views', __dirname + '/views/pages/');

这样就可以正常工作,您可以直接访问所有视图页面 (views/pages/),也可以从 pages 文件夹访问您的部分视图 (views/partials/)。

【讨论】:

  • 我试过了,还是不行。我收到此错误:“错误:找不到包含包含文件。”。
  • 尝试删除app.use('/public', express.static(path.join(__dirname, '/public')));这一行,我认为这可能会造成麻烦。
  • 我刚试过,不行。我收到消息“myFunc 未定义”。 myFunc 在 Utils.ejs 中定义。
猜你喜欢
  • 1970-01-01
  • 2020-01-29
  • 1970-01-01
  • 2021-12-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多