一、為什么需要代碼生成器
在后臺(tái)管理系統(tǒng)中,我們有大量的單表簡(jiǎn)單查詢(xún)、新增和修改之類(lèi)的業(yè)務(wù)場(chǎng)景,對(duì)于這樣的業(yè)務(wù)往往需要編寫(xiě)大量的控制器、模型、配置等文件,這些文件其實(shí)本質(zhì)來(lái)說(shuō)就是對(duì)數(shù)據(jù)庫(kù)單表的映射,代碼生成器就是可以通過(guò)簡(jiǎn)單的操作,快速將數(shù)據(jù)庫(kù)表映射成代碼和配置,大大減少開(kāi)發(fā)人員的工作難度。
二、代碼生成器實(shí)現(xiàn)
-
這里我選擇的是Electron,基于Nodejs的桌面應(yīng)用開(kāi)發(fā)。通過(guò)Node的ORM框架Sequelize來(lái)逆向生成數(shù)據(jù)表相關(guān)結(jié)構(gòu)
新建數(shù)據(jù)庫(kù)連接 -
對(duì)于每張表的不同字段,我想可以通過(guò)標(biāo)簽和拖拽的方式可以給每一個(gè)字段不同的屬性,讓可以在新增、查詢(xún)、修改的表單中有不同的表現(xiàn)方式。通過(guò)在模板中進(jìn)行判斷,來(lái)使在不同的文件中,展示不同的效果,比如時(shí)間日期字段,可以使用時(shí)間日期的控件來(lái)展示,開(kāi)啟關(guān)閉的字段,可以使用switch相關(guān)的控件來(lái)展示,這樣讓代碼生成器更加的靈活,更加易用。
自定義標(biāo)簽 -
模板的編寫(xiě)我選擇集成MonacoEditor,MonacoEditor是微軟開(kāi)源的Web代碼編輯器,可以自定義代碼提示、語(yǔ)法之類(lèi)的。
對(duì)于模板引擎用的是artTemplate,artTemplate是一個(gè)高性能的JavaScript模板引擎,具體使用方法可以看看它的官網(wǎng)
模板編寫(xiě) -
最后就是選擇需要生成的模板數(shù)據(jù)庫(kù)了,選擇需要生成的數(shù)據(jù)庫(kù)表和模板,生成對(duì)應(yīng)的前后端代碼到指定目錄。這里其實(shí)還可以集成beyondcompare,對(duì)重復(fù)生成的代碼做比較合并操作
選擇模板
選擇數(shù)據(jù)庫(kù)
完成





