和有些小伙伴一樣,本人是從php轉(zhuǎn)到了go,從事php時(shí)使用symfony框架一直享受其豐富的功能帶來(lái)的便利,轉(zhuǎn)到其他語(yǔ)言時(shí)比較直觀的感覺(jué)就是twig真強(qiáng),為什么其他語(yǔ)言沒(méi)有擴(kuò)展twig呢?
創(chuàng)新互聯(lián)是一家集網(wǎng)站建設(shè),商丘企業(yè)網(wǎng)站建設(shè),商丘品牌網(wǎng)站建設(shè),網(wǎng)站定制,商丘網(wǎng)站建設(shè)報(bào)價(jià),網(wǎng)絡(luò)營(yíng)銷,網(wǎng)絡(luò)優(yōu)化,商丘網(wǎng)站推廣為一體的創(chuàng)新建站企業(yè),幫助傳統(tǒng)企業(yè)提升企業(yè)形象加強(qiáng)企業(yè)競(jìng)爭(zhēng)力。可充分滿足這一群體相比中小企業(yè)更為豐富、高端、多元的互聯(lián)網(wǎng)需求。同時(shí)我們時(shí)刻保持專業(yè)、時(shí)尚、前沿,時(shí)刻以成就客戶成長(zhǎng)自我,堅(jiān)持不斷學(xué)習(xí)、思考、沉淀、凈化自己,讓我們?yōu)楦嗟钠髽I(yè)打造出實(shí)用型網(wǎng)站。
雖然前后端的開(kāi)發(fā)模式,讓模板引擎這個(gè)東西慢慢淡去,但是有時(shí)候還是需要用到這種東西,所以就有了,go調(diào)用php實(shí)現(xiàn)twig模板引擎的想法。
原理,go 通過(guò)exec.Command調(diào)用php,通過(guò)STDIN,STDOUT 方式進(jìn)行數(shù)據(jù)交互
go在初始化階段提供一些配置參數(shù),比如模板引擎的為止,是否為開(kāi)發(fā)環(huán)境等,php接收數(shù)據(jù)并初始化
初始換環(huán)境完畢后,當(dāng)需要渲染模板,go再講模板文件和數(shù)據(jù)以json字符串的形式寫(xiě)入STDIN告知php,
php接收到數(shù)據(jù)后,解析數(shù)據(jù),選取指定的模板并渲染,然后通過(guò)STDOUT返回給go
這樣一次渲染就結(jié)束了
整理好的文件打包在github上了
如果喜歡就動(dòng)動(dòng)你的小手指點(diǎn)個(gè)贊,star一下吧!
主要通過(guò)以下幾個(gè)過(guò)程生成:
(一)編寫(xiě)模板文件
(二)配置FreeMarker
(三)統(tǒng)一文件生成工具
(四)數(shù)據(jù)庫(kù)操作
(五)封裝填充數(shù)據(jù)
FreeMarker是一款模板引擎:即一種基于模板和動(dòng)態(tài)數(shù)據(jù),用于輸出文本的通用工具。
FreeMarker模板使用FreeMarker Template Language(FTL)編寫(xiě),它是一種簡(jiǎn)單的、專用的語(yǔ)言。
代碼生成器的實(shí)現(xiàn)原理十分簡(jiǎn)單,就是根據(jù)數(shù)據(jù)庫(kù)的某一個(gè)或多個(gè)業(yè)務(wù)表的結(jié)構(gòu),生成對(duì)應(yīng)的Entity.java、Dao.java、Service.java、Controller.java、Mapper.xml文件
可以。golang模板引擎動(dòng)態(tài)可以讀取sql。text/template是Go語(yǔ)言標(biāo)準(zhǔn)庫(kù),實(shí)現(xiàn)數(shù)據(jù)驅(qū)動(dòng)模板以生成文本輸出,可以理解為一組文字按照特定格式動(dòng)態(tài)嵌入另一組文字中。