freeMarker

Posted kellypan

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了freeMarker相关的知识,希望对你有一定的参考价值。

今天学习了一下freeMarker,大概整理了一点东西。

之前写过一点前端的代码,所以对于html css js有过一些了解。看了一些关于freemaker的文档,自己的理解如下:类似于MVC框架。model-view-controller(模型-视图-控制器)

一、整体理解

freemarker也是一种基于模板和数据的展示。

用官方的话来说:FreeMarker是一款模板引擎: 即一种基于模板和要改变的数据, 并用来生成输出文本(HTML网页、电子邮件配置文件源代码等)的通用工具。

借用一个图来给大家解释:

技术分享图片

模板+数据-------------输出(通俗的话来讲就是:freemarker插件把写好的模板和动态的数据组合起来,呈现出一个完整的输出。

二、freewarker相关的语法

1、数据模型(树形结构)

标量类型分为这几类:字符串、数字、日期、布尔值

标量用于存储单一的值;

哈希表存储变量及其相关有唯一标识名称的容器;

序列是存储有序变量的容器。有序,就可以通过索引来检索。

下面用Java的一点东西帮大家更好的理解标量、哈希表、序列:

先定义一个类:class animals

  类里面有多个实例:mouse

           elephant

           dog

     对于每个实例都有自己的属性:

                mouse:

                  age = 3;

                  size = ‘small‘;

好了:

animals、mouse、elephant、dog这些都可以理解为:哈希(表)

age、size称为:标量

mouse、elephant、dog可以通过animals[0]...来访问,所以这个可以称为:序列。

技术分享图片

 

2、指令

我之前用过angularJS,所以是从它的指令出发理解的。

对于free marker有自己的指令,当然也可以有用户自己写的一些指令。

基本的指令:

if指令

list指令

include指令

基本的指令使用只需要关注用法:

<# if user == ‘pan‘> welcome you!</#if>

<#if...>.......<#elseif>.....<#else>.....</#if>

<#list animals as animal> <tr><td>${animal.name}<td>${animal.price} Euros </#list>

include 指令:可以用于文件复用的时候。(把需要复用的部分单独写一个模块,然后,需要的时候可以防止重复代码,直接用include指令将写好的模板复用进来。)

 

 


 

以上是关于freeMarker的主要内容,如果未能解决你的问题,请参考以下文章

如何从源代码构建 freemarker?

如何在 Maven 中使用模板代码生成器(例如 freemarker)?

FreeMarker自定义指令--代码实现

SpringBoot获取Freemarker模板引擎,生成HTML代码

FreeMarker里如何调用java代码?

java工程中使用freemarker例子