手把手带你写一个 Web 框架
叶剑峰
腾讯高级工程师,前滴滴技术专家
22731 人已学习
新⼈⾸单¥59
登录后,你可以任选4讲全文学习
课程目录
已完结/共 42 讲
特别放送 (1讲)
手把手带你写一个 Web 框架
15
15
1.0x
00:00/00:00
登录|注册

07|目标:站在巨人肩膀,你的理想框架到底长什么样?

功能完备性
核心模块
功能完备性
核心模块
功能完备性
核心模块
重启方式
中间件
Context
路由
HTTP服务的启动方式
小结
选择框架的原则
Gin
Echo
Beego
文档完备度及社区活跃度
框架性能
框架扩展性
功能完备性
核心模块
从埋头搭建 Web 框架的视角中暂时跳出来,站在更高的角度来纵观全局
思考题
你理想的框架是什么样的
比较开源框架
开源框架比较
视角
理想框架的特点

该思维导图由 AI 生成,仅供参考

你好,我是轩脉刃。
在前面几节课,我们使用 Golang 的 net/http 库实现了一个带有控制器、路由、中间件等功能的 Web 框架,凡事都在向完成一个自定义 Web 框架的方向发展。
在开发的过程中,不知道你有没有意识到,其实框架中的某个模块,比如说路由,实现的方法不止一种,每一个模块要实现的功能也各有不同,所以用哪一种方法来实现,以及要实现哪些功能,都是一种选择。
而每种选择的背后,其实都是方向问题,因为这些选择共同构成了一个框架的倾向性,也就是设计感。你要明白,我们的最终方向是:实现我们想要的理想框架。这就好比驾驶汽车的时候,作为司机,你要对目的地有明确清晰的认识。
那理想框架到底是什么样子的?这个终极问题,闭门造车是无法得到答案的,所以今天,我想让你先从埋头搭建 Web 框架的视角中暂时跳出来,站在更高的角度来纵观全局。

开源框架怎么比较

我们先进入开源世界,对比开源世界中现有的各种 Web 框架,理解一下它们的实现选择和意图。
Golang 语言的 Web 开发有很多的框架可以用,但是选择太多也不是好事,因为在技术群里我总会遇到群友有这些疑问:哪款框架比较好呢?我要选择哪款框架呢?这些疑问至少暴露出两个问题:一不知道如何比较开源框架、二不了解这些开源框架,那么接下来我们一一解答。
确认放弃笔记?
放弃后所记笔记将不保留。
新功能上线,你的历史笔记已初始化为私密笔记,是否一键批量公开?
批量公开的笔记不会为你同步至部落
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
  • 深入了解
  • 翻译
    • 英语
    • 中文简体
    • 中文繁体
    • 法语
    • 德语
    • 日语
    • 韩语
    • 俄语
    • 西班牙语
    • 阿拉伯语
  • 解释
  • 总结

本文深入比较了三款 Golang Web 框架:Gin、Beego、Echo,并提出了衡量框架的五个标准:核心模块、功能完备性、框架扩展性、框架性能、文档完备度及社区活跃度。在对比分析中,Beego 框架被认为是一个功能完备性很强的框架,适用于快速开发的场景。Echo 框架则更适合个人开发者,注重扩展性和框架性能。而Gin 框架则适合企业级团队使用,具有较高的社区活跃度和功能完备性。总结指出,选择框架应该根据真正的业务需求,选取最合适的框架。文章通过分析框架的特点和适用场景,为读者提供了选择框架的思路和方法。

仅可试看部分内容,如需阅读全部内容,请付费购买文章所属专栏
《手把手带你写一个 Web 框架》
新⼈⾸单¥59
立即购买
登录 后留言

全部留言(7)

  • 最新
  • 精选
  • 用的是 beego 同事一开始介绍的,然后我就直接使用了,其实对于他自带的ORM 个人用的不是很习惯 很有可能是之前接触 laravel mybatis的缘故 一开始上手 beego的ORM不是很喜欢 所以及时用的是beego还是换了各种ORM体验 比如 ent 或者 gorm 所以我个人是比较喜欢那种 可扩展 自由度高的框架

    作者回复: 嗯,大多数的程序员都会喜欢扩展高的框架,但是一个团队一定就一套路子,否则就各种乱了。框架一定程度上说就是牺牲自由度换规范化的。

    2021-12-03
    2
  • 王仔秋秋糖
    iris框架也非常不错的

    作者回复: 是的,go有很多优秀开源框架

    2021-10-15
    2
  • 王阿觉
    Go zero也很不错

    作者回复: 是的,go有很多优秀的开源框架

    2021-10-15
    1
  • 星期三。
    看文章的描述,beego和echo好像中间节点不能存放handler,那 /user/name 和 /user/name/bob 这两个路由底层结构是怎么样的

    作者回复: beego的底层结构也是一个树,https://github.com/beego/beego/blob/7ec9cfdb4d0a21e8bb5fb0aa2c9c0e3700e4bd15/server/web/tree.go#L201 按照segment建立这个树。name这个节点也会存放handler的,在beego代码的tree结构中,leafInfo这个结构里面

    2021-12-07
  • 其实没啥好选择的 会啥用啥 都不会就看有人带没有了
    2022-06-07
  • Charles
    框架选择维度衡量,web框架前三名beego、echo、gin从路由,context,middleware等核心内容进行比较
    2022-03-17
  • 骑着🚀看银河
    iris 值得分析和学习
    2022-02-21
收起评论
显示
设置
留言
7
收藏
沉浸
阅读
分享
手机端
快捷键
回顶部