談從publicCms項目里的收獲
談從publicCms項目里的收獲
近期一個項目用到了cms,各種因素考慮最后決定使用 publicCms V2019免費版,因為之前沒真正接觸過cms類系統(tǒng),這次還是收獲比較大。
- 引導創(chuàng)建數(shù)據(jù)庫設(shè)計, 這個項目第一次啟動,會引導你創(chuàng)建數(shù)據(jù)庫, 一般應用里是沒有這種設(shè)計的。 這種模式在開源項目里,更加符合二次開發(fā)人員的需求,二次開發(fā)人員不用再去找初始化腳本,執(zhí)行數(shù)據(jù)庫,修改數(shù)據(jù)庫配置 再啟動應用 這套流程了。
? 技術(shù)層面查看了它的實現(xiàn),是用了 ScriptRunner 連接數(shù)據(jù)庫后執(zhí)行指定目錄的sql文件
-
對外接口的設(shè)計,它做了一層抽象,類似這種AbstractTemplateDirective,抽象的目的我猜測是 為了規(guī)范接口拓展 和 方便用戶二次開發(fā)。這種設(shè)計正是 面向接口 面向抽象 編程的體現(xiàn)。
-
對外接口的設(shè)計,它還貼心的提供了 接口列表 接口, 調(diào)用后可以之間看到 系統(tǒng)有哪些接口。 假如系統(tǒng)新增接口,也不用再告訴三方 新的地址了,三方可以自己查。
技術(shù)層面是用 Map保存起來的 Map<String, AbstractTemplateDirective> -
appToken 設(shè)計, 對外接口一般都要求傳 appToken。 它是這樣設(shè)計的, 首先在網(wǎng)站后臺 創(chuàng)建一個三方應用,創(chuàng)建后自動生成appKey appSecurity,還可以設(shè)置該應用 可以調(diào)用哪些接口, token超時時間。 把 appKey appSecurity 告訴三方應用后,三方應用可以調(diào)用獲取appToken的接口,獲取到appToken后, 可以再利用該值 調(diào)用其他接口(比如發(fā)布文章接口)。
這樣設(shè)計的好處,我想可以對三方應用進行管理,更大層面講 隔離應用,隔離接口,Token超時校驗 保證了系統(tǒng)的安全性。 -
擴展字段的設(shè)計, 它允許用戶自己定義有哪些擴展字段,然后對應的新增文章 和 查看文章 里 就會自動列出擴展字段,同時對外接口里也滿足這種設(shè)計。 技術(shù)層面 我查看了它的表結(jié)構(gòu)設(shè)計,有擴展表, 擴展字段表, 然后實際值是存了一個json到原表。
這種設(shè)計是第一次遇到,它提供了一個思路,之前維護系統(tǒng)經(jīng)常要加字段, 一般的方式 都是修改表結(jié)構(gòu), 有個這個方式后或許可以改變之前的方式。 -
大字段分表設(shè)計, 文章涉及的大字段(文章內(nèi)容, 擴展json) 它是單獨建表的,并沒有在主表里. 這種設(shè)計倒是比較常見,我雖然之前也知道這種方式的好處,但是自己開發(fā)系統(tǒng)真正實際執(zhí)行的時候為了省事 都直接在一個表里了。執(zhí)行力還是不夠,應該改正。
-
多語言設(shè)計, 它可以自由切換語言版本,實際對應的值是存到了properties。
-
大批量的靜態(tài)化, 基本上它所有的界面 都可以靜態(tài)化, 當訪問網(wǎng)站時,你看到的數(shù)據(jù) 并不是臨時從數(shù)據(jù)庫讀取的,而是之前就用freeMarker靜態(tài)化好的,這樣就減小了數(shù)據(jù)庫的訪問壓力。

浙公網(wǎng)安備 33010602011771號