freemarker

Apache
Free马克(Mark)er模板引擎:Java库来扭转文书输出(HTML网页,电子邮件,配置文件,源代码,等等)基于模板与转变之数码。模板都写于Free马克er模板语言(FTL),那是一个粗略的、专门的语言(不是一个成熟之编程语言(比如PHP)。你虽然准备的数量突显在一个审的编程语言,就如数据库查询及开工作的计量问题,然后模板就准备好的数额的显得。模板被您保护怎么着显示数据,和标的模板你珍视如何数据。

 

电子版 1

 

这种措施一般给誉为MVC(模型-视图-控制器)情势,并也动态网页特别受欢迎。它有助于分离网页设计师(HTML作者)从开发者(Java程序员经常)。在模板设计者不会晤面临复杂的逻辑,可以变动页面的外观无需程序员修改要更编译代码。

Free马克(Mark)er最初创制时生成HTML页面在MVC
web应用程序框架,它不是绑定到servlet或东西的HTML或以上。它的非web应用程序环境中行使。

 

借使你以一个网站要一个HTML页面,类似于:

 

< html >
<头>
<标题>欢迎! < /名称>
< / >头
<身体>
<标题>欢迎John Doe ! < / h1 >
< p >我们的最新产品:
< a href = "产品/ greenmouse。html " >绿色鼠标< / > !
< /身体>
< / html >

而用户的号(下面的“约翰Doe”)取决于登录的用户是什么人,和新星的产品音讯应来自一个数据库。因为这些数变化,你莫可以不可能应用静态HTML。相反,您得下一个模板所急需的出口。模板是同一的静态HTML,除了它包含部分发令Free马克er使该动态:

 

< html >
<头>
<标题>欢迎! < /名称>
< / >头
<身体>
<标题>欢迎$ { user } ! < / h1 >
< p >我们的最新产品:
< a href = " $ { latestProduct.url } " > $ { latestProduct.name } < / > !
< /身体>
< / html >

模板存储在Web服务器上,常常就像静态HTML页面。但于有人看那个页面,Free马克er出席,将纯HTML的沙盘动态替换${...}s与最新的始末,并将结果发送到访问者的Web浏览器。所以访问者的浏览器将收受类似HTML(即首先独例证。纯HTML没有Free马克er指令),它不汇合发觉到Free马克er在服务器上运用。(当然,模板文件存储于Web服务器上并未变动,替换只出现在Web服务器的应)。

专注,模板不含有编程逻辑来索有近期底孤老是何许人也,或查询数据库拿到新型的产品。要显得的数据准备Free马克er外,通常通过一些写以部分“真实”编程语言(如Java)。模板作者不必知道这多少个价值是哪些统计的。事实上,那些价值的计量方法可以完全改变了模版可以维持完全相同,而且,完全改观了页面的外观不相会遇见其他东西,但模板。表示逻辑和工作逻辑的分手可以专程发因而,当模板作者(设计师)和程序员都是差的私有,但也推进管理应用程序的繁杂,假若他们是暨一个人。保持模板集中在陈述问题(视觉设计,布局及格式)是一个至关首要之中采取像Free马克(Mark)er模板引擎。

未雨绸缪的任何数量称数据模型的模版。模板作者而言,数据模型是一个树状结构(如硬盘上的文本夹和文书),而以这种景观下,可以可视化为:

(根)
|
+ -用户=“大乔”
|
+ - latestProduct
|
+ - url =“产品/ greenmouse.html”
|
+ - name =“绿色鼠标”
注意:

 

注意:

如上才是一个可视化;数据模型的文本格式,它自从Java对象。对于Java程序员,根或者是一个Java对象getUser()getLatestProduct()方法,或者一个JavaMap电子版,与"user""latestProducts"钥匙。同样的,latestProduct或是一个Java对象getUrl()getName()方法。

早些时候,你自这个数据模型的接纳值,userlatestProduct.name表达式。假使大家累类相比数据模型就比如一个文件系统,然后“(根)”,latestProduct对应之目(文件夹),user,urlname文件之目。

连、模板与数据模型的需要Free马克er生成输出(如首先差彰显的HTML):

模板+ 数据模型的= 输出

 

Free马克er多少个长:

  • 无敌的沙盘语言:条件块、迭代、作业、字符串和算术运算和格式化,宏和函数,包括其他模板,逃避在默认意况下(可选),和成千上万又多

  • 大抵用以及轻量级:零看重,任何输出格式,可以起此外地点加载模板(可插入),许多部署选

  • 国际化/
    localization-aware:语言环境敏感的多少与日期/时间格式,局部模板的变型。

  • XML处理功用:删除XML
    DOM-s到数据模型的遍历,甚至因宣称的方处理它们

  • 通用的数据模型的:Java对象透露在模板变量通过可插入适配器的塑造,这决定模板怎么着对待他们。

 

 

相关文章