这篇文章和这个
首先,什么是框架?
框架(Framework)是一套已设计好的代码结构和组件,提供了一种标准化的方式来构建应用程序。
这里还有一个可能混淆的概念,库(lib)
库是一组由其他人编写的函数的集合。开发者在需要实现某个功能时,可以在库中选择合适的函数来调用,帮助实现。库通常是面向某个具体的任务,比如有专门用于机器学习的库,专门用于网络的库,专门用于输入输出的库。
库的角色是帮助应用程序的开发者完成特定任务。当开发者遇到某个问题时,可以通过调用库中的函数来解决。库是应用程序的工具箱,开发者根据需要选择和使用。
开发者完全掌控代码的执行流程,他们决定何时以及如何调用库中的函数。
框架则不同,它不仅仅是函数的集合,它更像是一个预设好的结构蓝图。框架为开发者提供了一个完整的开发架构,开发者需要根据框架的规则进行开发。框架会定义应用程序的整体结构,开发者可以在框架提供的基础上填入业务逻辑代码。
比如,用Gin框架实现一个web服务器。
package main
import (
"github.com/gin-gonic/gin"
)
func main() {
r := gin.Default() // 使用 Gin 的默认配置
r.GET("/", func(c *gin.Context) {
c.String(200, "Hello, World!") // 定义处理根路径的 GET 请求
})
r.Run(":8080") // 启动服务器
}
gin框架规定了,首先使用库中的Default
函数,获得一个引擎r
,然后,通过GET
函数注册路由,当然,还可以设置中间件,路由组;最后,通过Run
启动服务器。这些步骤是框架规定的,先干什么,后干什么,不能乱序。只要你照做,框架就会帮你启动这个服务器。
框架不仅提供工具,还提供了一种开发方法。开发者必须遵循框架设定的规则和架构。例如,在 Web 框架中,开发者可能需要遵守特定的路由规则、请求处理方式等。 控制反转(IoC) 是框架的重要特性之一。控制权从开发者手中转移到框架,框架会决定应用程序的执行流程,而开发者只需提供具体的功能模块(如路由、控制器等)。
库:你主动调用它来完成特定任务,你掌控程序的执行流程。
框架:它定义了整体结构和流程,你在框架的规则下填入自己的功能代码,程序的控制权在框架手中