PHP有一个函数include_once('target')
,它包含target
,但前提是它还没有被包含。 freemarker有这样的东西吗?
Include Once通过不必使用代码处理依赖项来防止错误。我有一堆shell脚本来安装我正在模板化的应用程序。当我使用scala导入,并希望能够在模板中声明它对java有依赖性,但是如果已经包含hadoop模板,那么它已经包含了java。无需两次包含java安装脚本。 freemarker可以这样做吗?
答案 0 :(得分:2)
内置没有这样的指令,但只要你不至少使用相对路径就可以用宏来模拟它:
<#global incuded = {}>
<#macro includeOnce path>
<#if !path?startsWith('/')>
<#stop "The path must start with /">
</#if>
<#if incuded[path]??><#return></#if>
<#include path>
<#global incuded += {path: true}>
</#macro>
然后:
<@includeOnce '/something.foo' />