Beego 是一个用于构建 Web 应用程序和后端服务的 Go 语言框架。它提供了一整套功能,包括路由、模型、视图、会话管理等。
0 go框架beego现在被淘汰了吗?
2016年提出的这个问题,由于当时自己刚入门学习go,就想找一个快速入门的框架学习使用,所以提出了这个很无脑的问题,在此,也向框架作者表示深深的歉意!
经过两年多的深入学习和理解,越来越发现各类go框架只是一个工具,在不同的需求或者场景下选用最适合的,才是最正确的。
对比beego和gin都有不同使用场景,beego相对go语言的风格来说可能显得有些臃肿,但也不影响它依然是go MVC较好的解决方案。
目前好像框架作者没有太多的精力打理这个框架了,beego已经凉凉。
1 Beego框架的地位
国内Go语言社区第一个框架,Beego作者作为国内Go语言最早布道者,对go语言在中国普及作出不可磨灭贡献,先不说这框架优秀还是差劲,就凭这点,我们就应该对这个框架和作者respect。
beego是一个快速开发 Go 应用的 HTTP 框架,他可以用来快速开发 API、Web 及后端服务等各种应用,是一个 RESTful 的框架,主要设计灵感来源于 tornado、sinatra 和 flask 这三个框架,但是结合了 Go 本身的一些特性(interface、struct 嵌入等)而设计的一个框架。
2 设计思想
听说Beego作者是从PHP跨入到GO语言行列,所以当初设计Beego的时候还带着强烈的PHP设计思想,从MVC架构来看,有点像是参考PHP的优秀框架Laravel,至少从1.0版本来看,似乎没有融入Go语言的设计思想。但是文档上面写来源于tornado、sinatra 和 flask 这三个框架就不得而知。
Beego框架从刚开始设计就是冲着大而全思想,完全不像Gin这样追求性能而精致的路由级别的框架,它集成了ORM、VIEW、业务封装还有一系列的工具模块,所以对初学者,特别是从PHP跨入GO的程序员们眼前一亮的感觉,3天看GO语法,3天看Beego框架,然后周末休息一天,周一就可以CRUD业务写的飞快了,老板喜笑颜开连连点赞,这不是国内一些中小型互联网公司的缩影。
3 不足之处
不可否认的是,Beego有很多不足之处,里面很多代码质量也是被很多人所诟病,毕竟是第一代作品很多设计理念还比较青涩,现在2.0版本也在慢慢改进。但是你会发现动动嘴永远都比动动手来的轻松,我是写不出这个东西,但是你写的这个东西就是垃圾。作为一个优秀的程序员,你最好的辩论武器就是代码,Show Me Your Code!你觉得它不够好你可以去改善它去贡献它,或者你可以写个更好的去替代它,而不是一味的为了喷而喷!
Go语言目前有很多优秀的框架,Beego早已不是优先选择了,即便它有这样那样的问题,但是不妨碍它影响了一代Go语言人。我最后想说,用什么框架或者不用框架,是看你对业务的理解和对Go理解程序的一个认知过程,希望大家不要把时间浪费在这种口舌上面,有时间多去贡献Go的生态。
beego.Router
是 Beego 框架中的路由器功能。路由器用于将 HTTP 请求映射到相应的处理函数,可根据 URL 和请求方法执行不同的逻辑。
4 使用示例
基本路由
beego.Router("/", &controllers.MainController{})
根路径("/")映射到名为 MainController
的控制器。
带有参数的路由
beego.Router("/user/:username", &controllers.UserController{})
在这个例子中,:username
是一个参数,可以在处理函数中被访问。
RESTful 路由
beego.Router("/api/user", &controllers.UserController{}, "get:GetAllUsers")
beego.Router("/api/user/:id", &controllers.UserController{}, "get:GetUser")
beego.Router("/api/user", &controllers.UserController{}, "post:CreateUser")
beego.Router("/api/user/:id", &controllers.UserController{}, "put:UpdateUser")
beego.Router("/api/user/:id", &controllers.UserController{}, "delete:DeleteUser")
在这个例子中,使用了 RESTful 风格的路由,映射到不同的 HTTP 方法和处理函数。
标签:beego,框架,布道者,controllers,Beego,Go,Router From: https://blog.51cto.com/JavaEdge/7923486