之前一直不知道freemarker是什么,也不了解这个,自从自己进到一个使用freemarker的公司才知道这个东西的好处,简单几乎没有什么复杂逻辑项目下来看着代码能很清晰的知道页面的实现功能思路,简单 容易 代码的复用。
FreeMarker对于我来说算是一个新东西,心想着可以多学点东西的心态接触了这个语言,接下来就我个人理解的东西总结一下。
首先FreeMarker是一个JAVA的东西,是当中的一个类库,他的语言也可以生成HTML网页可以嵌入到开发产品的组件中,感觉这个模式像一个MVC模式,就跟Angular一样当中的语言结构嵌入到我们写的HTML中把html中的文字内容变成可变的可传入任何东西的,这样就可以把静态的HTML变成一个可以随意改变内容的页面以供需求方的改变。
由于我也是刚接触FreeMarker知道的代码标签也不多,我就把知道的罗列一下,每一个语言都有自己的结构标签语法,<>尖括号里都是以#警号开始以警号结束,定义获得的东西用插值${}把html的东西替换掉就行,这是特有的语法。一 :FreeMarker的常用标签有:
是定义一个变量,相当于js里的var声明一个变量,性质是一样的。
<#if 变量>
里面是判断执行的语句
<#elseif>
<#else>
以警号开始以警号结束,if是判断如果这个…怎么样,另外一个情况就是,反面就是<#else>。当然js里有if判断也有switch,这里也有switch语句
<#switch 变量>
<#case 变量><#break>
<#case 变量><#break>
<#case 变量><#break>
…….
<#case 变量><#default>
FreeMarker的Switch与js的一样。但是使用程度也和js一样switch不常用用的都是if语句。
<#list taskList as i>
想得到taskList列表的东西,用i变量对象获取
意思是遍历taskList列表赋值给i变量,<#list>相当于js的for循环,性质都是遍历变量里的东西,
常用的就是以上几个,还有不经常用的当然也是很总要的,
<#include “lcobright-footer.html”>
意思是include里的是路径,把文件插入到文件里的内容。
<#macro HDfunc(parama,url,num)>
<#if url = “”||url=”null”||url?contains(“/#”)||url?contains(“javascript:;”)>
<#call HDfunc(d_link,taskUrl,ln_num)>
这个也是很常用的标签,这个是宏定义的可以随意定义一些方法很方便也能给您写的碎片带来方便代码结构的清晰,但是这个方法调用需要<#call>方法调用,此方法和js里的封装函数类似,封装一些方法当代码用到时候随时调用这个方法就可以了。
<#compress>
中间你可以把碎片写的代码放中间
<#compress>意思是压缩空白空间的行,有利于代码的压缩调整。
二:写碎片时要注意的点
碎片是html结构加ftl嵌入两者的结合,拿到需求看需求写页面结构,五个文件夹一个HTML,CSS,JS,images,FTL;写完HTML看文档写FTL不要求把文档全部写完在复制到平台上,最好是一段一个结构写完就去平台测试看看那一部分出错以来减少错误,碎片的变量 数据源名称用:英文,在平台上变量名称用f_value,d_link等等,f_value是开发过程中的变量命名,d_link是开发过程中的数据源命名,碎片中写html结构这是页面步骤,
接下来是写碎片要注意的地方:
1:FTL中的变量(f_value)数据源(d_link)
UES里的数据源处理:
Util:工具数据源不需要拖入碎片中判断可直接使用
Request:请求数据源可直接使用
只要在ues门户上数据源写着可拖入 可通过使用都是可以直接使用的
链接数据源,链接列表:碎片中需要先判断数据源是否存在。
2:FTL中路径(URL)的处理:先判断这个数据源是否存,声明一个变量接收这个变量,路径的处理最后封装一个方法用<#macro>宏定义,路径跳转需要计算次数,
3:获取的东西都要写一个![]判空处理,意思是如果不是空就执行下面如果是空那就不执行,主要是判断这个获取的东西有没有,
4:如果获取的是列表 需要判断列表的长度,尽量做到细致每一个情况都要注意都要判断,
5:
总结的ftl处理方法
1:在ftl中方法返回的类型基本都是字符串string,有时候就需要进行字符串的处理变成数字进行比较
<#if taskType=””>
<#else>
2:在ftl中也能用index_of方法,查找你要的东西
<#if ric?index_of(‘
’)!=-1>
’,’’)
3:在ftl中链接路径需要配置任务id
4:如果页面上有用到swiper 或者ajax加载的,js要放到现网的js脚本文件里,这样就要求 自己用的不能与现网名称重复,还有要自己的页面才加载这一段js,所以要判断一下
If($(“.task”).length>0){
Var myswiper = new Swiper(‘.task’,swiper-antaner,{
slidesPerview:auto,
spaeP:8,
freeMode:true,
autoPlayDsiableonInteraction:false,
speed:1500,
grabCursor:true,
})
}