和有些小伙伴一樣,本人是從php轉(zhuǎn)到了go,從事php時使用symfony框架一直享受其豐富的功能帶來的便利,轉(zhuǎn)到其他語言時比較直觀的感覺就是twig真強,為什么其他語言沒有擴展twig呢?
公司主營業(yè)務(wù):成都做網(wǎng)站、成都網(wǎng)站設(shè)計、移動網(wǎng)站開發(fā)等業(yè)務(wù)。幫助企業(yè)客戶真正實現(xiàn)互聯(lián)網(wǎng)宣傳,提高企業(yè)的競爭能力。成都創(chuàng)新互聯(lián)公司是一支青春激揚、勤奮敬業(yè)、活力青春激揚、勤奮敬業(yè)、活力澎湃、和諧高效的團隊。公司秉承以“開放、自由、嚴(yán)謹(jǐn)、自律”為核心的企業(yè)文化,感謝他們對我們的高要求,感謝他們從不同領(lǐng)域給我們帶來的挑戰(zhàn),讓我們激情的團隊有機會用頭腦與智慧不斷的給客戶帶來驚喜。成都創(chuàng)新互聯(lián)公司推出阜南免費做網(wǎng)站回饋大家。
雖然前后端的開發(fā)模式,讓模板引擎這個東西慢慢淡去,但是有時候還是需要用到這種東西,所以就有了,go調(diào)用php實現(xiàn)twig模板引擎的想法。
原理,go 通過exec.Command調(diào)用php,通過STDIN,STDOUT 方式進(jìn)行數(shù)據(jù)交互
go在初始化階段提供一些配置參數(shù),比如模板引擎的為止,是否為開發(fā)環(huán)境等,php接收數(shù)據(jù)并初始化
初始換環(huán)境完畢后,當(dāng)需要渲染模板,go再講模板文件和數(shù)據(jù)以json字符串的形式寫入STDIN告知php,
php接收到數(shù)據(jù)后,解析數(shù)據(jù),選取指定的模板并渲染,然后通過STDOUT返回給go
這樣一次渲染就結(jié)束了
整理好的文件打包在github上了
如果喜歡就動動你的小手指點個贊,star一下吧!
主要通過以下幾個過程生成:
(一)編寫模板文件
(二)配置FreeMarker
(三)統(tǒng)一文件生成工具
(四)數(shù)據(jù)庫操作
(五)封裝填充數(shù)據(jù)
FreeMarker是一款模板引擎:即一種基于模板和動態(tài)數(shù)據(jù),用于輸出文本的通用工具。
FreeMarker模板使用FreeMarker Template Language(FTL)編寫,它是一種簡單的、專用的語言。
代碼生成器的實現(xiàn)原理十分簡單,就是根據(jù)數(shù)據(jù)庫的某一個或多個業(yè)務(wù)表的結(jié)構(gòu),生成對應(yīng)的Entity.java、Dao.java、Service.java、Controller.java、Mapper.xml文件
可以。golang模板引擎動態(tài)可以讀取sql。text/template是Go語言標(biāo)準(zhǔn)庫,實現(xiàn)數(shù)據(jù)驅(qū)動模板以生成文本輸出,可以理解為一組文字按照特定格式動態(tài)嵌入另一組文字中。
Go語言模板文件可以引入js文件或css文件,但是在引入的過程中,需要注意以下幾點:
1. 引入的文件路徑應(yīng)該是相對路徑,而不是絕對路徑。
2. 在引入js文件時,需要使用{{ url }} 模板函數(shù),用來拼接路徑, 這樣可以更好的兼容不同的路徑。
3. 如果是在統(tǒng)一的文件夾中的js文件,最好使用{{ static }}模板函數(shù),這樣可以更好的節(jié)省路徑長度。
4. 在引用js文件時,需要在頁面底部,可以使用{{ template }}模板函數(shù),這樣可以保證js文件在頁面加載完成之前就被加載。
總之,使用Go語言模板文件引入js文件,需要注意路徑的相對性,并且使用模板函數(shù)來拼接路徑,這樣可以更好的兼容不同的路徑,從而保證引用js文件的正確性。