Freemarker学习笔记 1
*学习资料来源:《Freemarker- 中文手册》,译者:南磊 Freemarker 版本 2.3.16
1. 概念
Freemarker是一个模板引擎,用来动态生成Html页面。它应用于典型的MVC场景中的View部分。实行前端设计与动态程序相分离,真正做到了前端Web工程师只关注前端设计,后台开发工程师只关注后台逻辑的实现的目的。这种分离模式使得整个工程结构层次清晰,代码易于维护。
Freemarker是免费的,基于BSD¹风格的许可,它是OSI²许可的开源软件。
1.BSD开源协议是一个给于使用者很大自由的协议。基本上使用者可以”为所欲为”,可以自由的使用,修改源代码,也可以将修改后的代码作为开源或者专有软件再发布。
以BSD协议代码为基础做二次开发自己的产品时,需要满足三个条件:
1.如果再发布的产品中包含源代码,则在源代码中必须带有原来代码中的BSD协议。
2.如果再发布的只是二进制类库/软件,则需要在类库/软件的文档和版权声明中包含原来代码中的BSD协议。
3.不可以用开源代码的作者/机构名字和原来产品的名字做市场推广。
2.表达式
<html> <head> <title>Welcome!</title> </head> <body> <h1>Welcome ${user}!</h1> <p>Our latest product: <a href="${latestProduct.url}">${latestProduct.name}</a>! </body> </html>
那些动态变量表达式 ${...} 几乎很多前端框架都这样定义,例如常用的struts2框架。Freemarker将会输出真实的值来替换花括号中的表达式,这样被称为interpolations插值。
表达式的值实际由后台对应的数据模型来自动填充。每个表达式的每个元素都对应数据模型中的某个元素。这个数据模型是一个树状结构,一级一级的往下扩展。
(root)
|
+- user = "Big Joe"
|
+- latestProduct
|
+- url = "products/greenmouse.html"
|
+- name = "green mouse"
2.标签
FTL tags标签(FreeMarker 模板的语言标签):FTL标签和HTML标签有一点相似,但是它们是FreeMarker的指令而且是不会直接输出出来的东西。这些标签的使用一般以符号#开头。(用户自定义的FTL标签使用@符号来代替#)
<html> <head> <title>Welcome!</title> </head> <body> <h1> Welcome ${user}<#if user == "Big Joe">, our beloved leader</#if>! </h1> <p>Our latest product: <a href="${latestProduct.url}">${latestProduct.name}</a>! </body> </html>
3.注释
FreeMarker的注释和HTML的注释相似,但是它用<#--和-->来分隔。任何介于这两个分隔符(包含分隔符本身)之间内容会被FreeMarker忽略,就不会输出出来了。
4.小结
Freemarker作为一个模板,大概的构成可用下图来表示: