EJS包含相对于项目根目录的文件

我正在使用Express和EJS来build立一个网站,我有一个目录结构如下所示:

+--www/ | +--partials/ | | | +--header.ejs | +--(a bunch of ejs files) | +--guide | | | +--index.html | +--(other files) | +--index.html 

在我的示例中显示的两个index.html文件中,即使引用相同的包含文件, <% include ... %>命令也会不同。

另外,如果我要说包括header.ejs ,然后header.ejs有一个包含另一个部分,整个系统崩溃,因为他们都在不同的位置寻找文件。

为了使pipe理更容易,我试图find一个string,以便能够引用相同的包含文件,而不pipe文件可能在哪个子目录中。

理想情况下,像<% include /partials/header.ejs %>是完美的。 但是这不起作用。

有没有人有任何技巧或build议,可以在这里给出预期的结果?

看起来这不是由EJS支持,但我find了解决这个问题的方法。 在上面的设置中,所有部分文件的痛点是需要提及相对path,如果重构代码更加痛苦。 所以,而是提到每个包含的相对path我声明一个variablesrootPath一次,在那里我给path到达家。 所以,在每一个包括我可以简单地提到相对path就像从根path。

例如在guide/index.ejs我在ejs文件的顶部提到了以下内容

<% var rootPath = '../'; %>

和ejs文件中的代码如下所示

<%- include(rootPath + 'partials/header'); %>

您的HTML代码

<%- include(rootPath + 'partials/footer'); %>

所以万一我重构index.ejs到其他文件夹,所有我需要做的是改变rootPath的值