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的值