代碼量少到極致僅 215 行代碼搞定 statement 語法分析
DLRD語法分析算法是Jfinal Template Engine獨創的,其中Jfinal Template Engine還使用了獨創的DKFF詞法分析算法。
極大減少了代碼量,降低了學習成本,並提升用戶體驗。
當初剛接觸jfinal實現分頁的時候,當時只會用jsp來進行前端實現接收後臺數據。而有人說jsp已經過時了,現在都用jfinal和Template Engine來實現接收後臺數據。當時覺得Template Engine有這麼好用嗎?而我現在也喜歡用Template Engine來實現前端接收數據...
Jfinal Template Engine表達式的規則設計總體是符合java表達式的規則,僅僅只對模板引擎的特徵進行極其少少量符合直覺有利於開發體驗的拓展。
接下來開始Template Engine的使用:
1.設置模塊引擎
public void configEngine(Engine me)
{
//模塊文件修改會即時生效,相當於熱加載
me.setDevMode(true);
me.addSharedFunction("Test.html");
me.addSharedMethod(new Now());
}
搜狗截圖17年12月07日1124_4.png
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>[圖片上傳中...(搜狗截圖17年12月07日1056_3.png-d3843a-1512615375914-0)]
</head>
<body>
<h1>#(123+"abc")</h1>
<h1>#("asdasdxzc".substring(0,5))</h1>
<h1>#(userlist.get(0).getName)</h1>
</body>
</html>
對於表達式的使用,掌握一個關鍵點,就是表達式與java是直接相同的。以上的第一行第二行的代碼跟java的表達式一樣,方法也是一樣的。如果是第三行的集合類型,想要取出當中的某些值,也能直接使用方法.
表達式:
算術運算:+,-,*,/,%,++,--
比較運算:>,>=,<,<= == !=
邏輯運算:!,&&,||
三元表達式:?:
字符串常量:"abcd"
布爾常量:true,false
數字類型:123,456F,789L,0.1D,02E10
數組存取:arrayi
屬性取值:object.field(Map被增強爲額外支持map.key的方式取值)
方法的調用:object.method(p1,p2...pn)
逗號表達式:123,1>2,null,"abc",3+6
接下來介紹幾種常用的表達式:
//for的表達式
//兩種方式都行
#for(x:[1..10])
#(x)
#end
#for(i=0;i<10;i++)
#(i)
#end
Map的定義表達式:
#set(map={k1:123,"k2":"abc",'k3':object})
#(map.k1)
#(map.k2)
#(map["k1"])
#(map["k2"])
if指令:
#if(object)
...
#end
#if(object)
...
#elseif(object1)
...
#elseif(object2)
...
#else
...
#end
set指令:
#set(x=15553)
#set(a=1,b=2,c=a+b)
#(x),#(c)
調用自定義函數(要有返回值的函數)
package com.common;
public class Now
{
public String SayHello(String name)
{
return "hello "+name+",歡迎學習jfinal!";
}
}
模塊調用方法:
#(SayHello("大家"))
以上幾種是比較常用的指令和表達式.其他更多的可以去查詢jfinal文檔。