每年國慶長假 jfinal 都會升級一個新版本,今年也不例外。前幾天有事被耽誤,今天正式推送新版本通知。
這次國慶同時升級的項目有 jfinal、jfinal-undertow、jfinal-weixin、enjoy、activerecord。
在國慶假期已全部推送到了 maven 中心庫,可以直接升級使用。
本次升級清掃了積累了很長的待開發列表,大多來自同學們的需求與反饋。新版本以細緻打磨為主,但也不乏一些有意思的功能。
這個需求在底層就是對中文標識符的支持,沒想到提出這個需求的同學還挺多,光是 jfinal 俱樂部就有將近 10 人提出想要這個功能。
雖然我自己感覺這需求挺奇葩,但真實需求就必須要打破個人主觀偏見,為用戶創造價值更重要。
好在 jfinal 極簡設計之下,添加這個功能也就 19 行代碼的事,10 分鐘內打完收工,添加中文標識符支持以後,可以這麼來用了:
#(美女.身高)#define 中文函數名在此() #(中文變量名在此)#end
老版本的捨入默認用的銀行家捨入法,這個在歐美用得較多,在國內四捨五入用得多,所以這個功能很重要。
此外,捨入方式可以配置,配置方法如下:
engine.setRoundingMode(RoundingMode);
老版本的 #date 指令只支持 java.util.Date 及其子類,雖說自行擴展也很容易,但官方提供可以進一步節省你的時間專注業務開發。
為了支持 LocalDateTime,索性對 com.jfinal.template.io.Writer 新增了針對 LocalDateTime 的 write 方法,這樣便於在擴展 enjoy 指令時更方便處理 LocalDateTime。
這個需求提出很久了,起初我一直認為這個僅用於開發模式時輸出一些有利於開發效率的信息,所以沒處理這個需求。
但很多同學說他們將這個功能用於監控系統的運行情況,非常希望能自由擴展,好吧,加上。
擴展很簡單,繼承 ActionReporter,然後配置:
me.setActionReporter(ActionReporter);
經過測試 key = value 格式的配置,對於等號兩邊的空格來說無論是否 trim(),結果是一樣的。
但如果 value 右側有空格,則會成為值的一部分,這類配置錯誤很難被肉眼發現,這個打磨有一定的價值,以後可以放心大膽的在 value 後方留空格了。
這個需求絕大多數同學碰不到,目前為止也就一位同學有這個需求。簡單來說就是有同學在模板渲染的過程之中再次獲取一個新的模板進行渲染。由於 enjoy 內部有一個 ThreadLocal 的 buffer,所以 reentrant 的渲染會覆蓋掉 buffer 中外層正渲染了一部分的數據。
情況與 enjoy 的 reentrant 相似。
代碼量減少了將近 50%,可讀性更好,性能更高,壓縮率更高,壓縮 sql 模板格式更美觀,sql 壓縮配置方法:
activeRecordPlugin.getEngine().setCompressorOn(' ');
簡單說就是 nginx 代理了 https,而 nginx 與應用之間走的是 http,這個改進可以讓 redirect(...) 仍然重定向到 https 而非 http。
JDK 8 處理時間的 API 雖然有很大進步,但用起來還是囉嗦,TimeKit 去除了一些中間步驟,讓功能一步到位,觸手可及。
TimeKit 一直是用在具體的項目之中,用得多了乾脆就轉移到 jfinal 中來,獨享不如共享。
極少數同學反饋在有些部署場景之下,客戶端接收不到數據,在 render 中添加 flush() 可解決。
添加 flush() 解決上述問題的同時,還可以縮短客戶端響應延遲,這個打磨有一定的價值,適應更複雜的部署環境。
老版本的默認值為 2048,buffer 大些性能會高點,但響應延遲也會高點,縮小為 1024 在高性能與低延遲上更平衡,仍是打磨。
剩下還有 27 項細緻打磨,為節省大家時間,在這就不一一細說了,在官網可以下載到完整的 changelog: https://jfinal.com
比 jfinal 新版本發布重要得多的事情是 jfinal 社區計劃很久的 App&Coffee 頻道上線了。
App&Coffee 全稱是 Application And Coffee,簡單說就是 jfinal 官方和俱樂部打造精緻有用的 Application,有需要的同學可以通過給作者來一杯咖啡得到授權,稱之為 "咖啡授權"。
App&Coffee 承載了 jfinal 的生態夢想,最終能不能成,就看你是否願意請作者喝杯咖啡了,寫出好代碼哪能沒有咖啡加持 ^_^
ONE MORE THING:為了進一步大幅度提升開發效率,jfinal 官方已經介入前端,打造一個 jfinal 極簡風格的前端框架,前後端同時極速開發將成為現實。新鮮出爐的 jfinal-kit.js 極簡前端框架已發布,伴隨的第一個應用已經誕生。詳情請移步:https://jfinal.com/app/1