不少人会问为何有那么多框架了,还要去实现一个框架呢?是否是你们都有本身实现框架的情节,我能够确定的说不是,我说一下为何设计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处理、日志处理、配置处理、自动化运行等功能。 函数