手把手带你写一个Web框架

手把手带你写一个Web框架 / 从0到1,实现自己的工业级Web框架

叶剑峰

腾讯高级工程师,前滴滴技术专家

  • 课程目录
  • 课程介绍
  • 开篇词|为什么我们要从零开发框架?

    Web 开发框架太多怎么快速上手?

  • 01|net/http:使用标准库搭建Server并不是那么简单

    如何快速掌握一个代码库?

  • 02|Context:请求控制器,让每个请求都在掌控之中

    怎么实现框架的 Context ?

  • 03|路由:如何让请求更快寻找到目标函数?

    规则条数不是评价路由好坏的标准,设计感才是。

  • 04|中间件:如何提高框架的可拓展性?

    在架构层面,中间件机制就相当于在每个请求的横切面统一注入了一个逻辑。

  • 05|封装:如何让你的框架更好用?

    框架中每个函数的参数、返回值、命名,都代表着我们作为作者在某个事情上的思考。

  • 06|重启:如何进行优雅关闭?

    从shutdown函数的实现原理看Golang源码优雅之处。

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

    评价一个框架的五项标准

  • 08|自研or借力(上):集成Gin替换已有核心

    细节和生态是Gin如此成功核心原因。

  • 09|自研or借力(下):集成Gin替换已有核心

    复制源码替换Gin?

  • 加餐|国庆特别放送:什么是业务架构,什么是基础架构?

    架构师做什么?怎么做架构师?

  • 加餐|阶段答疑:这些代码里的小知识点你都知道吗?

    读源码,思维导图怎么画?

  • 10|面向接口编程(上):一切皆服务,服务基于协议

    什么是面向过程/对象/接口编程?

  • 11|面向接口编程(下):一切皆服务,服务基于协议

    实现框架主体的服务容器逻辑。

  • 12|结构:如何系统设计框架的整体目录?

    目录结构如何贯彻面向接口的思想?

  • 13|交互:可以执行命令行的框架才是好框架

    把框架改造成命令行工具,加速开发效率。

  • 14|定时任务:如何让框架支持分布式定时脚本?

    如果要开发一个定时命令,能不能做到在业务中增加一行代码就行了?

  • 15|配置和环境(上):配置服务中的设计思路

    在容器化流行的架构设计中,框架需要支持使用环境变量来区别不同的环境和配置。

  • 16|配置和环境(下):配置服务中的设计思路

    如何为框架增加配置服务?

  • 17|日志:如何设计多输出的日志服务?

    一切皆服务,类似积木拼接?

  • 18|一体化:前端和后端一定要项目分开吗?

    你的框架支持前后端一体化吗?

  • 19|提效(上):实现调试模式加速开发效率

    如何用Golang的反向代理实现调试模式?

  • 20|提效(下):实现调试模式加速开发效率

    前端、后端、前后端同调,调试模式的具体实现细节。

  • 21|自动化(上):DRY,如何自动化一切重复性劳动?

    自动化命令行工具的套路是?

  • 22|自动化(下):DRY,如何自动化一切重复性劳动?

    自动化初始化脚手架的命令设计

  • 23|管理接口:如何集成swagger自动生成文件?

    如何把swagger融合进入hade框架?

  • 24|管理进程:如何设计完善的运行命令?

    app 一级命令和四个二级命令启动/停止/重启/查询 app 服务的实现

  • 25|GORM(上):数据库的使用必不可少

    Gorm 源码解读

  • 26|GORM(下):数据库的使用必不可少

    如何把Gorm完美集成到hade框架,更好地支持业务对数据库频繁的增删改查操作?

  • 27|缓存服务:如何基于Redis实现封装?

    一个服务的接口设计,就是一个“我们想要什么服务”的思考过程。

  • 28|SSH:如何生成发布系统让框架发布自动化?

    如何实现将代码自动化部署到Web服务器的机制?

  • 29|周边:框架发布和维护也是重要的一环

    为框架的升级和维护设计了一套完整的方案

  • 大咖助阵|大明:抽象,抽象,还是抽象

    谁是我们的朋友,谁是我们的敌人,是革命的首要问题

  • 大咖助阵|飞雪无情:十年面试经验忠告,不要被框架所束缚

    框架是减少重复代码、提升开发效率的工具,我们可以通过它打开学习框架的大门,但是永远不要被它所束缚。

  • 30|设计先于实战:需求设计和框架搭建

    实战部分,我们真正使用hade框架来开发一个类知乎的问答网站。

  • 31|通用模块(上):用户模块开发

    “协议优于实现”,一个业务,最重要的是定义好、说明清楚协议,然后才是实现。

  • 32|通用模块(下):用户模块开发

    服务模块的协议设计不一定能一次性抽象好,从需求出发,遇到新的需求,不断迭代你的设计就可以。

  • 33|业务开发(上):问答业务开发

    开发问答业务服务

  • 34|业务开发(下):问答业务开发

    恭喜你完成了一个自己的Web框架的搭建和使用

  • 结束语|在语言的上升期投入最大热情,是最正确的投资

    感谢能一起经历这段Golang的Web之旅

  • 期末测试|来赴一场满分之约!

    特别给你准备了一套结课测试题,快来挑战一下吧!

你将获得

  • 洞悉 Web 框架底层设计原理
  • 攻克框架开发 6 大核心概念
  • 4 站通关 Go Web 框架项目开发
  • 深度剖析 Gin 框架,提升业务效能

讲师介绍

叶剑峰,网名轩脉刃,腾讯高级工程师。前后就职于开心网、奇虎、滴滴等大型互联网公司,负责公司核心业务的架构设计和开发。

专注 Web 后端研发十余年,包括服务端的架构搭建、维护、优化等,一直在一线为技术团队搭建业务架构和解决实际问题,日积月累逐步形成了自己的一套方法论,对底层框架如何设计有着深刻的思考和丰富的项目经验。

课程介绍

在 Web 领域,特别是中小型项目,开发效率往往是业务的第一需求。一个产品拥有的市场机会转瞬即逝,抢占市场依靠的是更快的开发速度和迭代速度。为了提效,前端轮子太多已经是共识。不管什么语言,在 Web 领域,开发必备的框架总有很多款。

因此,就有很多实际的问题摆在了我们面前:

  • 市面上众多框架如何迅速上手?如何选择?
  • 业务快速迭代时,框架如何迅速拓展?
  • 想要自研一款称手的 Web 框架,如何设计?

全方位提升开发效能成为突破瓶颈的最佳解决方案。叶剑峰根据自己的十余年一线 Web 后端研发经验,梳理了一套系统的 Web 框架搭建方法论。他将使用 Go 语言,从标准库开始,逐步演进,手把手带你研发一个工业级的 Go Web 框架,以基本概念与核心理论为指导,实战演练总结底层框架的设计技巧

课程模块设计

整个专栏分为实战四关,你会从零开始,收获一个自己的工业级 Go Web 框架。

实战第一关:分析 Web 框架的本质,从最底层的 Go 的 HTTP 库讲起,如何基于 HTTP 库搭建 server、如何搭建路由、如何增加中间件等等,从而搭建出一个 Web 框架最核心的设计部分。

实战第二关:框架核心搭建好后,基于具体业务场景重新思考,要设计的框架目标到底是什么? 框架的设计感和要解决的问题在哪里? 框架的倾向性是什么? 如果要搭建出一个“一切皆服务”的框架,应该如何设计。

思考清楚后,我们会用 Gin 框架集成实战第一关自研的 Web 框架的核心,力求站在巨人的肩膀上看世界,然后一步步实现框架核心的功能服务。

实战第三关:为这个框架增加不同的周边功能,在添加功能时,会首先讨论目前社区中的标准做法,以及有没有更好的设计,最终把这些标准做法融合到我们的框架中。

实战第四关:现在框架已经基本搭建完成了,我们会用这个框架应用开发一个问答后台,使用 vue-element-admin 来做前端封面,再结合框架开发具体的统计展示和计算业务。

课程目录

适合人群

有一些Go语言开发经验,以及有Web开发经验或Web框架使用经验的开发者

特别放送

免费领取福利

限时活动推荐

订阅须知

相关教程

Learnfk - Lua教程

Learnfk - Kotlin教程

Learnfk - Java 泛型教程

Learnfk - SQL教程

Learnfk - Xpath教程

Learnfk - Swift5教程

随机推荐

SKG颈椎按摩器对比哪款性价比更高,质量好吗

松下暖风机网友诚实不欺人!评测好不好用

婧麒防辐射服护胎宝孕妇装防辐射肚兜防辐射服孕妇装银灰色功能评...

中诺电话机买前必看,评测值得入手吗

晨光M&G文具0.5mm黑色中性笔纤维头会议笔质量值得入手吗,冰箱评...

一朵国潮超薄婴儿纸尿片XL126片柔薄透气秒吸大家真实看法解读,评...