不少人會問爲何有那麼多框架了,還要去實現一個框架呢?是否是你們都有本身實現框架的情節,我能夠確定的說不是,我說一下爲何設計beego的初衷 python
還記得當初寫書的時候,我純粹只是想把本身在學習Go語言中的一些體會寫出來,因爲我之前主要從事PHP和python的Web開發,因此想寫一本Go如何來作Web實戰的經驗,剛開始的時候書的目錄裏面根本就沒有框架實現這些章節,是寫到後來發現其實對於Web開發者來講,一個微型的框架是很是有利於你們學習一個語言和快速進行應用開發的。 git
我之前常常用PHP的CI框架和python的tornado框架,這些框架都是很是輕量級的,輕量級就有利於咱們: github
因此基於上面這些的考慮,我就想實現一個相似這些語言的輕量級框架,因此我就在書的最後設計了兩個章節來介紹和實現beego框架,這就是當初寫beego框架的初衷。 session
有了這個初衷以後我就開始設計beego的執行邏輯,因爲Go語言和python的思路比較接近,因此我就參考了tornado的思路來設計beego,你能夠看到beego的RESTful處理徹底和tornado的處理是如出一轍的,經過controller層的Get、Post等方法來實現RESTFul。剛開始的時候路由參考的是https://github.com/drone/routes,這個的正則處理我以爲很是好,彌補了Go語言默認Mux中的路由功能,可是因爲要採用RESTFul方式,因此我本身設計了一個接口,實現python中的繼承思想。 框架
整個的MVC邏輯中C是最重要的部分,這一塊採用了我上面說的接口方式,M模塊目前我還沒想好怎麼作,可是你們能夠參考個人另外一個開源項目beedb來實現數據的管理,V這一塊目前採用了Go語言自帶的模板引擎,可是實現了不少方便的模板函數。這樣一個簡易的框架就完成了,而後我就不斷的完善周邊的功能,包括表單處理、session處理、日誌處理、配置處理、自動化運行等功能。 函數