本文比較了JFina3.0和Beetl的新模板引擎功能
Jfinal3.0自帶模板引擎功能??戳私榻B和下載演示,發(fā)現(xiàn)尺寸增加了不少。似乎對于一個模板引擎來說,JFinal的大小已經增加到了800K,和Jfinal早先宣稱的200k大小有很大的區(qū)別。為一個模板引擎投入這么大的尺寸值得嗎?作為Beetl和BeetlSql的作者,這是必然的。模板引擎其實是一種語言,一種基礎技術,可以作為視圖渲染,規(guī)則解釋,Sql模板片段等很多地方使用。以betel為例,在百度金融網站頁面渲染、某系統(tǒng)的58個郵件模板、JD.COM某系統(tǒng)的功能規(guī)則解釋中得到了應用,這些也是BeetlSql的基礎。如果Jfina想像BeetlSql一樣把Sql放在文件管理中,就必須使用模板技術?;仡^看看Mybatis,因為使用了xml解析和OGNL表達式,沒有使用模板引擎,導致了XML管理中的各種問題。我在文章中已經解釋過了
離家近一點,對于JFinal來說,我不認同他文章里解釋的觀點,感覺有很多地方不正確
Antlr為負
Antlr是一個語法解析工具,已經在很多開源產品中使用過,比如hiberante、Google系列開源、betel實現(xiàn)?!栋蔡貭枴返淖髡呤敲绹髮W教授特倫斯·帕爾(Terence Parr)。實現(xiàn)Antlr用了30年??赡蹵ntlr新手覺得它體積大了一點,但毫無疑問它功能可靠穩(wěn)定,性能很好。同時,Antlr還可以生成各種目標語言,比如Java、Python、GO、JS等。毫不夸張地說,如果我愿意,betel & amp;beetSqL不能只依賴Java原生
JFinal3.0聲稱Antlr不可靠,無法調試。我不懂。不知道他們在使用過程中有什么問題。中國有個Antlr集團。我曾經是一個小組主持人,經常回答一些antlr的入門知識。沒見過有人給出這樣的反饋。
所謂的原始詞法分析算法
語言解析技術至少已經有50年的歷史了,這方面已經非常成熟。沒想到還有原創(chuàng)空。我覺得這個成績能不能衡量,要看能不能應用到多個場景。如果只是極簡的詞法分析,那就沒有意義了。另外,可以請大神尹來評價一下。王銀無疑是這方面的權威,他見多識廣,善于批評。
看了一下提到的一些特性,我不這么認為,比如
原空和安全值調用運算符?
該功能在許多模板引擎中可用,以及從2011年開始可用的Betel,例如
用戶可以為空或不存在,安全調用也可以在循環(huán)中使用
消除宏指令?
任何語言都要考慮如何復用。對于模板語言來說,重用模板非常重要。宏只是重用的一種方式。不管用什么技術,都只是重用的馬甲??纯碆eetl是怎么復用的。
像宏一樣,比如標簽,beetl支持兩種標簽,標簽函數(shù)和html標簽,比如下面這樣的模板片段
這是一個類似html的重用,非常適合CMS中的模板渲染和自定義標簽。而且它的實現(xiàn)非常簡單,只需要創(chuàng)建一個位于htmltag/my/output.tag中的實現(xiàn),其實就是一個模板片段。
另一個例子是模板變量
上面的代碼定義了一個變量,它的值是模板的輸出,所以您可以隨時調用這個變量來計算和呈現(xiàn)它以供重用。此功能用于復雜的布局方法,如繼承布局
JFinal的原創(chuàng)特色
Jfinal手冊也提供了一些原創(chuàng)功能。在我看來,Beetl至少存在了很長時間。比如JFinal提到可以修改語法樹節(jié)點的實現(xiàn)(其目的是在sql片段中輸出sql占位符?),這個betel從2011年就有了,就這樣。它的在線體驗網站已經運行了90萬次。例如,當您輸入以下代碼時
事實上,只運行了5次循環(huán)后,它就退出并給出警告。這是因為Beetl引擎修改了While的語法執(zhí)行實現(xiàn),發(fā)現(xiàn)循環(huán)超過5次就退出了。BeetlSql還利用了Beetl引擎的特性。當sql輸出時,不是輸出內容,而是輸出?,以下是beetlsql片段
事實上,在渲染beetl模板之后,輸出是
這也是因為beetl引擎可以修改語法節(jié)點的實現(xiàn)。這項技術從2012年就有了。我一直認為Beetl是真正原創(chuàng)的,在Jfinal3問世之前就引領了這一潮流
總結
總的來說,我覺得JFinal Template并沒有給模板引擎帶來多少新東西,不如Beetl。比如Beetl有很多功能。我覺得JFinal Template目前沒有。
Html標記重用,類似于
帶有綁定變量的標簽,這個freemaker有,beetl有,在cms中用的很多
自定義占位符和分隔符,很多人喜歡beetl
在本地調用安全管理,這在beetl在線體驗中也有。不知道jfinal是否也有這個功能。如果沒有,如果用戶輸入@System.exit(),系統(tǒng)將關閉
語法節(jié)點實現(xiàn)修改,如上所述,這也是beetlsql實現(xiàn)的基礎
虛擬屬性實現(xiàn)
自定義函數(shù)和格式化函數(shù)
MVC分層開發(fā)和實現(xiàn),前端開發(fā)者可以專注于前端開發(fā)
流行框架的集成
更多的語法特征,如for in,for(exp;expExp),同時,適應各種應用場景
國內外的許多績效評估都是名列前茅的
還有更多特性沒有一一列出。甜菜在中國已經很受歡迎了。甜菜和甜菜.本文無意推廣Beetl,只是認為作為開源用戶,在決定使用開源產品之前,我們需要對其進行分析,而不僅僅是看標語。俗話說,不看廣告看療效,希望能為猶豫不決的模板用戶提供一個客觀的參考。
推薦閱讀
點擊“閱讀原文”查看更多精彩內容
1.《Beetl JFina 3.0 “重新定義的模板引擎”與 Beetl 的功能對比》援引自互聯(lián)網,旨在傳遞更多網絡信息知識,僅代表作者本人觀點,與本網站無關,侵刪請聯(lián)系頁腳下方聯(lián)系方式。
2.《Beetl JFina 3.0 “重新定義的模板引擎”與 Beetl 的功能對比》僅供讀者參考,本網站未對該內容進行證實,對其原創(chuàng)性、真實性、完整性、及時性不作任何保證。
3.文章轉載時請保留本站內容來源地址,http://f99ss.com/junshi/1636623.html