我正在编写一个模板引擎,我希望允许用户引用当前目录中的文件,但如果它不存在,请查看父目录,依此类推直到该source/
目录,该目录是在我的例子中是模板源树。
这允许轻松覆盖文件包含并根据位置解析不同的文件(对于国际化等有用)。
是否有任何常用的语法来处理这样的事情?
答案1
经过几天的等待,看起来没有人知道这方面的通用语法。
当我编写自己解析路径的系统时,我将只选择我希望有意义的内容:.../file
将引用当前目录或祖先目录中的任何文件,直到source/
我的“根”目录。
我的模板看起来像这样:
<div>{{ include path }}</div>
path
这将包括在与当前文件相同的目录中调用的文件。
如果路径是绝对路径,如/path
,那么它将解析为source/path
。
source/abc/def/ghi/other-file
现在,使用这种新语法,给定一个包含以下内容的文件:
<div>{{ include .../path }}</div>
包含的文件可能位于以下任意位置:
source/path
source/abc/path
source/abc/def/path
source/abc/def/ghi/path
这使我能够通过构建如下目录来获得国际化等功能:
source/en/_messages
source/sv/_messages
现在,我可以拥有一个共享文件,根据包含的位置,只需声明以下内容即可填充来自包含所在区域的消息:
{{ include .../_messages }}