FreeMarker准备在2.4版中加入新的指令#template
FreeMarker准备在2.4版中加入新的指令#template,用于上下文隔离包含模板.与原有的#include相对应,#include为上下文内包含(内嵌)模板.
然而,大家对这一新指令的命名都极不赞同.
首先template是一个名词,不适合用于包含这样一个动作性指令名.
I.e.#load,#render,#executecometomind.Usinganoun(#template)soundsasifyou'redefiningsomething(see:#macro,#function,etc.).
中间引出大量回复,给出了n多方案,如:
#subtemplate,#safeinclude,#load,#exec,#render,#do.#process,#merge,#embed
赞同较多的是:#render,#process,#embed
但render(渲染)与图形学上的概念混淆,表意不清.
process(处理)太过泛化,这个词感觉什么地方都可用.
embed(嵌入)是比较合理的.但似乎应该与现有的include指令名换一个才恰当.因为embed才表示在当前上下文执行,include表示包含内容(在不同上下文执行).
最后结论还没出来,但对CommonTemplate(http://commontemplate.org)的设计很有借鉴意义,现在CommonTemplate采用inline(内联)表示同上下文包含,include(包含)表示上下文隔离包含,似乎将inline改成embed会更合理些,可能会在下一版本进行变更.