我正在使用 Express 和 EJS 来构建站点,并且 我的目录结构类似于:
+--www/
|
+--partials/
| |
| +--header.ejs
| +--(a bunch of ejs files)
|
+--guide
| |
| +--index.html
| +--(other files)
|
+--index.html
在 index.html
中我的示例中显示的文件 <% include ... %>
命令会有所不同,即使引用相同的包含文件也是如此。
另外,如果我要说包括 header.ejs
然后 header.ejs
包含另一个部分,整个系统崩溃,因为他们都在不同的位置寻找文件。
为了简化管理,我试图找到一个字符串来引用相同的包含文件,而不管这些文件可能位于哪个子目录中。
理想情况下类似 <% include /partials/header.ejs %>
将会是完美的。但这不起作用。
有没有人有任何技巧或建议可以在这里给出预期的结果?
最佳答案
看起来这不受 EJS 支持,但我找到了解决此问题的方法。
在上面的设置中,痛点在于所有部分文件,您需要提及相对路径,如果重构代码会变得更加痛苦。所以宁愿在每个包含中提到相对路径我声明一个变量rootPath
一次,我在那里给出了回家的路。这样在每次包含时我都可以简单地提及相对路径,就像从根目录开始的路径一样。
例如 guide/index.ejs
我在 ejs 文件的顶部提到了以下内容
<% var rootPath = '../'; %>
and 和 ejs 文件中的代码如下所示
<%- include(rootPath + 'partials/header'); %>
您的 HTML 代码
<%- include(rootPath + 'partials/footer'); %>
因此,如果我将 index.ejs 重构到其他文件夹,我需要做的就是更改 rootPath
的值。
关于node.js - EJS 包含相对于项目根目录的文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38487980/