Golang与Beego等Web框架在服务端开发中的主要区别是什么
Golang与Beego等Web框架在服务端开发中的主要区别是什么 最近我正在尝试学习Go语言,众所周知,Web后端有很多Web框架,我想为我的Web应用开发服务,但我不知道应该选择纯Go语言还是Go语言的Web框架?我只想使用REST API来集成我的React.js前端。
我明白了,谢谢,我会的。
更多关于Golang与Beego等Web框架在服务端开发中的主要区别是什么的实战系列教程也可以访问 https://www.itying.com/category-94-b0.html
是否有完全使用Go语言开发的流行应用程序?
感谢您的回答,使用纯 Go,我可以为高流量应用创建服务吗?
如果决定使用框架,哪个Web框架最适合在Golang中构建REST API?
感谢您的回答,请问在 Go 语言中,哪种框架最适合各类项目?
Developerinsky: 为什么他们不迁移
潜在的性能提升是否值得付出重写代码的机会成本?毕竟,这些时间本可以用来开发客户愿意付费的新功能。
并非最终用户应用程序,但包括Kubernetes以及Hashicorp工具(如Consul、Nomad、Terraform、Vault)在内的开发应用均使用Go语言编写。
感谢您的回复。是的,我指的是没有框架,就像 Python 或 Django。Python 是通用语言,但 Django 是 Web 框架。这就是我对 Go 感到困惑的原因,因为 Go 中没有流行的 Web 框架。
Developerinsky:
可以为高流量应用创建服务吗
在我看来——可以。并发是Go的优势。但你可能需要更多地关注数据库的会话限制和会话长度。在这种情况下,框架可能——也可能没有——内置相关的功能。
虽然不是这里提出的确切情况,但以下是反对重写的经典建议:Things You Should Never Do, Part I – Joel on Software
许多Python开发者表示,Go语言凭借其性能优势可以在任何地方超越Python。我对此感到好奇,有多少公司将Go语言集成到他们的Web应用中。一些公司在他们的Web应用中使用Django,但多年后,他们也开始在这个应用中使用Go语言。他们为什么决定使用它?如果是这样,为什么他们不完全迁移到Go语言?
mje:
可能的性能提升是否值得投入重写代码的机会成本?毕竟这些时间本可以用来开发客户愿意付费的新功能。
确实——如果你有一个投入了数百万美元开发的应用程序,那么将其移植到 Go 语言很可能也需要数百万美元的成本。在问题严重到必须用性能更高的语言/技术栈进行重写之前,你可以花费数百万美元来增加大量的服务器算力来应对。这就是为什么人们不会每当出现新的/更好的东西时,就重写每一个应用程序。这太昂贵了。
Developerinsky:
我不知道应该选择纯 Go 语言还是 Go Web 框架?我只想使用 REST API 来集成我的 React.js 前端。
如果你想要一些“魔法”、更多的开销,有时甚至是一种完全不同的语言——那就选择框架。它可能会为你节省大量时间。
如果你想要更少的开销并使用原生的 Go——那就选择纯 Go。我制作了一个简单的 API,没有使用任何框架,也许能给你一些启发。
func main() {
fmt.Println("hello world")
}
Go 的原生 HTTP 库非常出色,这在许多其他语言中并非如此。 对于许多使用场景,标准库中的 http 包就是最优、最完美的选择。
我曾有过编写一个具有复杂逻辑的高级反向代理的经验,当时我使用了 gin,它运行得非常完美。但我正将其迁移到标准库的 http 包,仅仅是因为对于我的使用场景来说,使用 Gin 没有额外的好处。 我当初使用 Gin,正是出于一种认为标准 http 库不可能真的那么好的看法。 但归根结底,你的项目情况可能并非如此。
总之,如果你想使用一个框架,我肯定推荐 Gin。
啊——Go语言中有许多流行的Web框架。但我觉得困惑在于:例如在Python中,Django就像是明显的赢家。而在Go生态系统中,有更多的选择。大多数框架在很大程度上都遵循标准库,因此它们(在大多数情况下)是相当可互换的。而且,仅使用标准库加上一些辅助函数,你就能走得很远,因为你对Web框架的大部分需求只是路由和序列化/反序列化,而后者是标准库的一部分。可以看看我这篇评论,其中谈到了仅使用标准库通过约定进行路由。如果你想完全从零开始,可以以此类方法作为起点。
func main() {
fmt.Println("hello world")
}
Developerinsky:
有没有完全用 Go 语言开发的流行应用?

最佳 Go 语言应用:10 家使用 Go 语言的公司 - Miquido
想知道 Go 语言是否是您下一个产品开发的正确选择吗?请查看我们整理的十大使用 Go 语言开发的应用!
预计阅读时间:10 分钟
使用 Go 语言的公司 - 您每天使用的 7 大热门应用 [2023]
为什么 Go 语言在大型公司中如此受欢迎?查看著名的 Go 语言应用案例,了解这些公司为何使用它。
Developerinsky:
纯 Go 语言还是 Go 语言 Web 框架?
当你说“纯 Go 语言”时,是指标准库吗?因为据我所知,大多数可用的框架都是“纯 Go 语言”的。你担心的是不想给项目添加一堆臃肿的依赖项吗?
gorilla/mux 和 gorilla 工具包 被许多项目使用。我目前在生产环境中就有几个使用 gorilla/mux 构建的 Web API,并且非常喜欢它。话虽如此,标准库中主要缺乏的是路由/参数匹配功能。如果你想要更轻量级、只提供这些功能的工具,可以看看 julienschmidt/httprouter。不过,对于第一个项目来说,我认为选择 gorilla 不会错。
总而言之,Go 语言几乎是为 Web API 量身定做的,非常适合你正在尝试做的事情。祝你好运,玩得开心!
Developerinsky:
在 Golang 中,哪个 Web 框架最适合构建 REST API?
和往常一样,没有所谓的“最佳”框架。这取决于个人偏好以及什么最适合任务。但 Gin 多次出现,是最受欢迎的框架之一。你可以用谷歌搜索一下你的问题,或者也许其他人想参与讨论……


2021年值得选择的顶级 Golang Web 框架 - Rapid Blog
Golang 已成为开发者编写 API 和开发 Web 服务的必备工具之一。这是谷歌的一项杰出举措,在开发者社区中人气飙升。许多人认为它是…
预计阅读时间:5 分钟


什么是构建 Golang REST API 的最佳框架?
对于你的需求,使用纯Go标准库或Beego等框架都能实现REST API开发,但两者在开发模式和效率上有明显差异。
1. 纯Go标准库开发
package main
import (
"encoding/json"
"net/http"
)
type User struct {
ID int `json:"id"`
Name string `json:"name"`
}
func userHandler(w http.ResponseWriter, r *http.Request) {
w.Header().Set("Content-Type", "application/json")
user := User{ID: 1, Name: "John"}
json.NewEncoder(w).Encode(user)
}
func main() {
http.HandleFunc("/api/user", userHandler)
http.ListenAndServe(":8080", nil)
}
2. Beego框架开发
package main
import "github.com/astaxie/beego"
type UserController struct {
beego.Controller
}
func (c *UserController) Get() {
user := map[string]interface{}{
"id": 1,
"name": "John",
}
c.Data["json"] = user
c.ServeJSON()
}
func main() {
beego.Router("/api/user", &UserController{})
beego.Run()
}
主要区别:
路由管理
- 纯Go:手动解析路径和方法
- Beego:自动路由到控制器方法
中间件支持
- 纯Go:需要手动实现中间件链
- Beego:内置中间件系统
开发效率
- 纯Go:需要更多样板代码
- Beego:快速生成CRUD操作
项目结构
- 纯Go:自由组织代码结构
- Beego:遵循MVC约定
对于React.js前端集成,两种方案都能提供JSON API。如果项目简单且需要轻量级方案,纯Go标准库足够。如果需要快速开发、数据库ORM、会话管理等完整功能,Beego更合适。

