FreeMarker准备在2.4版中加入新的指令#template, 用于上下文隔离包含模板. 与原有的#include相对应, #include为上下文内包含(内嵌)模板.
然而, 大家对这一新指令的命名都极不赞同.
首先template是一个名词, 不适合用于包含这样一个动作性指令名.
Attila Szegedi 回复的邮件 写道
Sorry for nitpicking, but shouldn't such a directive rather be a verb?
I.e. #load, #render, #execute come to mind. Using a noun (#template) sounds as if you're defining something (see: #macro, #function, etc.).
中间引出大量回复, 给出了n多方案, 如:
#subtemplate, #safeinclude, #load, #exec, #render, #do. #process, #merge, #embed
赞同较多的是: #render, #process, #embed
但render(渲染)与图形学上的概念混淆, 表意不清.
process(处理)太过泛化, 这个词感觉什么地方都可用.
embed(嵌入)是比较合理的. 但似乎应该与现有的include指令名换一个才恰当. 因为embed才表示在当前上下文执行, include表示包含内容(在不同上下文执行).
Daniel Dekany 回复的邮件 写道
Should I replace all application of #include with #embed in the 2.4 Manual? #include was one of the first few directives introduced (in the Getting Started chapter). I suppose now we should propagate #embed instead. Also I wonder if #include should be deprecated in 2.4.
最后结论还没出来, 但对CommonTemplate(
http://commontemplate.org)的设计很有借鉴意义, 现在CommonTemplate采用inline(内联)表示同上下文包含, include(包含)表示上下文隔离包含, 似乎将inline改成embed会更合理些, 可能会在下一版本进行变更.
分享到:
相关推荐
- 可能扩展了API,增加了新的功能,比如新的指令或函数,以增强模板的表达能力。 - 对模板语法的增强,例如新的控制结构或模板设计模式的改进。 4. **Freemarker 2.3.23**: - 这个版本可能包含了更多的安全修复...
在这个场景中,"freemarker格式化缩进文本或include指令"主要涉及了两个重要的FreeMarker特性:格式化输出(formatting indentation)和模板包含(template inclusion)。 1. **格式化输出**: FreeMarker默认并不...
Freemarker是一款强大的模板引擎,用于将数据模型与表示层分离,从而实现在Web开发中的动态页面生成。根据所提供的文件信息,我们可以详细探讨以下几个关键的知识点: ### 1. 创建配置实例 在Freemarker中,`...
FreeMarker支持一系列模板指令,这些指令允许开发者在模板中嵌入更复杂的逻辑处理。常见的指令包括`<#if>`用于条件判断、`<#list>`用于循环遍历集合等。 #### 3. 表达式(Expressions) 表达式是FreeMarker中用于...
3. **模板语言(Template Language)**:FreeMarker的模板语言包括了一系列的指令和内置函数,如`<#if>`用于条件判断,`<#foreach>`用于循环,`<#assign>`用于赋值等。 4. **配置(Configuration)**:FreeMarker的...
该指令用于导入 FreeMarker 模板中的所有变量,并将该变量放置在指定的 Map 对象中。import 指令的语法格式如下: <#import "/lib/common.ftl" as com> 上面的代码将导入 /lib/common.ftl 模板文件中的所有变量,...
2. **数据模型与变量**: 在Freemarker中,数据模型是由Java对象组成的,这些对象可以通过模板语言访问。模板中的变量通常引用这些数据模型中的属性,例如`${user.name}`将输出用户对象的name属性值。 3. **模板设计...
### Freemarker语法完整版知识点详解 #### A. 概念 **1. Scalars(标量)** - **字符串**: 由单引号或双引号括起来的文本。 - **数字**: 直接使用数值。 - **日期**: 通常从数据模型中获取。 - **布尔值**: `...
在FreeMarker的核心概念中,它是一个基于数据驱动的模板语言。这意味着,开发者不需要关心如何将数据与HTML结合,FreeMarker会自动处理这些细节。模板文件通常包含HTML结构,以及插入数据的占位符(称为变量或指令)...
- **2.4 include指令**:介绍了如何在模板中包含其他模板。 - **2.5 import指令**:解释了如何导入自定义函数或宏。 - **2.6 noparse指令**:介绍了如何避免解析某些文本。 - **2.7 compress指令**:说明了如何压缩...
在处理Freemarker模板引擎时,中文乱码问题是一个常见的挑战,尤其是在国际化应用中。Freemarker是一款功能强大的模板引擎,被广泛应用于Web开发中,用于动态生成HTML、XML等文本格式的页面。然而,当涉及到非英文...
1. 创建自定义指令类:你需要创建一个继承自`freemarker.template.TemplateDirectiveModel`的Java类。这个类将定义你的自定义标签的行为,包括如何处理输入参数,如何处理模板模型数据,以及如何生成输出。 2. 注册...
- Freemarker模板文件(如`index.ftl`)中,可以使用`<#...>`指令和`${...}`表达式来动态生成内容。 - `${name}`:将Java对象的属性值输出到HTML。 - `<#if ...>`、`<#else>`、`<#elseif ...>`:条件判断语句。 ...
在2.3.19中文版手册中,读者可以期待找到关于如何创建和使用模板、如何配置FreeMarker、以及如何处理数据模型等方面的详细指导。2.3.23的手册则可能增加了新版本的更新日志、新特性的介绍和使用方法,以及可能的API...
1. Servlet容器集成:在Servlet环境中,通常通过`Template`类加载模板文件,使用`Configuration`配置管理模板。 2. 数据模型设置:通过`ModelAndView`或`Map`将Java对象传递到视图,供Freemarker使用。 3. 视图...
在这个过程中,Freemarker引擎会解析模板中的占位符,并用数据模型中的实际值替换它们,从而生成最终的输出文本。 #### 4. 输出到文件或流 最后一步是将生成的文本输出到目标位置,这可能是标准输出流(如屏幕显示...
freeMarker 参考手册 2.3.15 参考手册 最新版
本文档将深入探讨FreeMarker的核心组成部分及其使用方法,包括文本、注释、插值以及FTL(FreeMarker Template Language)指令。 #### 一、FreeMarker模板的四个基本组成部分 ##### 1. 文本 文本是模板中最直接输出...
FreeMarker作为一个模板引擎,允许用户在模板中嵌入指令代码,这些代码在模板被处理时执行,并生成最终的文本文件。 在FreeMarker模板中,特定的变量和指令被大括号${}包围。例如,若模板中有${obj.newsTitle}这样...
在Freemarker 2.3.23版中,我们首先会接触到它的核心概念,包括模板(Template)、数据模型(Data Model)和模板语言(Template Language)。模板是Freemarker工作的基础,它是纯文本文件,其中混合了Freemarker指令...