Spring MVC не имеет себе равных в области веб-технологий Java, и, будучи одним из стандартных языков в эпоху облачных технологий, язык Go естественным образом породил множество отличных веб-фреймворков. Сегодня я хотел бы поделиться с вами 5 популярными веб-фреймворками на основе языка Go. В чем разница между ними и как выбрать? Не волнуйся, посмотри вниз.
Название проекта: джин-гоник/джин
Количество звезд проекта: 69,2 тыс.
Первым введением является инфраструктура Gin, которая представляет собой облегченную веб-инфраструктуру с механизмами быстрой маршрутизации и промежуточного программного обеспечения. Она разработана на основе языка Go и пользуется большим уважением в области разработки за свой простой и эффективный дизайн и отличную производительность.
Gin должен быть самым популярным веб-фреймворком Go в настоящее время. Хотя он легкий, его функции совершенно не неоднозначны, а производительность очень высока. Он имеет функции, аналогичные Martini (классическому веб-фреймворку Go, поскольку он больше не является таковым). API снова поддерживается (здесь не обсуждается) и имеет лучшую производительность — скорость увеличена в 40 раз. Ниже приведены некоторые из основных функций Джина:
Самое выдающееся в Gin — его отличная производительность. Ниже приведены официальные данные стресс-тестов. Более подробную информацию можно найти на github.
Развитие Gin действительно происходит очень быстро, а сообщество очень активно и расширяется. Достаточно взглянуть на его ужасающие 69,2 тыс. звезд, чтобы понять, насколько он популярен.
Его также очень просто использовать. Ниже кратко показано, как использовать платформу Gin для создания API, обрабатывающего HTTP-запросы.
$ go mod init example.com/gin-demo
$ go get -u github.com/gin-gonic/gin
main.go
издокумент,и добавьте следующий код:package main
import (
"github.com/gin-gonic/gin"
)
func main() {
// Создать движок Gin по умолчанию
r := gin.Default()
// Определите функцию-обработчик для запросов GET.
r.GET("/hello", func(c *gin.Context) {
c.JSON(200, gin.H{
"message": "Hello, Gin!",
})
})
// Запустите HTTP-сервер, который по умолчанию прослушивает локальный порт 8080.
r.Run()
}
$ go run main.go
http://localhost:8080/hello
,Вы увидите следующий ответ в формате JSON:{
"message": "Hello, Gin!"
}
Приведенный выше пример демонстрирует, как создать простое приложение Gin. Вы можете видеть, что весь процесс очень прост, и более сложные функции, основанные на нем, могут поддерживаться относительно легко.
Что ж, позвольте мне похвастаться, Джин действительно стоит попробовать.
Название проекта: labstack/echo
Количество звезд проекта: 25,8 тыс.
Echo — это веб-фреймворк, разработанный на основе языка Go. Он популярен благодаря своей простоте, удобству использования, высокой производительности и легкости расширения. Девиз Echo: высокая производительность, минимализм.
Особенности Эха заключаются в следующем:
Echo больше всего хвалят за интуитивно понятный дизайн API, который очень прост в использовании и содержит меньше шаблонного кода. Кроме того, он подходит для обработки крупномасштабных сценариев с высоким уровнем параллелизма и может обеспечить высокую производительность благодаря механизму маршрутизации и внутренней оптимизации.
Ниже приведен пример использования платформы Echo, показывающий, как создать API, обрабатывающий HTTP-запросы.
$ go mod init example.com/echo-demo
$ go get -u github.com/labstack/echo/v4
main.go
издокумент,и добавьте следующий код:package main
import (
"net/http"
"github.com/labstack/echo/v4"
)
func main() {
// Создайте экземпляр Echo
e := echo.New()
// Определите функцию-обработчик для запросов GET.
e.GET("/hello", func(c echo.Context) error {
return c.JSON(http.StatusOK, map[string]string{
"message": "Hello, Echo!",
})
})
// Запустите HTTP-сервер, который по умолчанию прослушивает локальный порт 8080.
e.Start(":8080")
}
$ go run main.go
http://localhost:8080/hello
,Вы увидите следующий ответ в формате JSON:{
"message": "Hello, Echo!"
}
В приведенном выше примере показано, как создать простой API с использованием платформы Echo. При необходимости вы можете добавить дополнительные маршруты и функции-обработчики для создания более сложных приложений.
Название проекта: биго/биго
Количество звезд проекта: 29,8К
Beego — это полнофункциональная веб-инфраструктура, разработанная на основе языка Go. Она имеет встроенную поддержку ORM, встроенную маршрутизацию, поддержку MVC и RESTful API. Она привлекла большое внимание своей эффективностью, стабильностью и богатыми функциями.
После многих лет разработки и оптимизации платформа Beego получила широкое распространение и проверку. Она обладает хорошей производительностью и стабильностью и очень подходит для создания крупномасштабных веб-приложений. Тем не менее, Beego эквивалентен другим веб-фреймворкам. Его кривая обучения относительно крутая. Новичкам будет медленнее, чтобы начать работу. Им необходимо понимать различные модули и концепции платформы, а документов относительно мало.
Ниже приведен пример использования платформы Beego, показывающий, как создать простой веб-сервис.
$ go mod init example.com/beego-demo
$ go get -u github.com/astaxie/beego
$ go get -u github.com/beego/bee/v2
main.go
издокумент,и добавьте следующий код:package main
import (
"github.com/astaxie/beego"
)
type HelloController struct {
beego.Controller
}
func (c *HelloController) Get() {
c.Data["json"] = map[string]string{
"message": "Hello, Beego!",
}
c.ServeJSON()
}
func main() {
beego.Router("/hello", &HelloController{})
beego.Run()
}
$ bee run
http://localhost:8080/hello
,Вы увидите следующий ответ в формате JSON:{
"message": "Hello, Beego!"
}
Разве это не очень просто~~ Конечно, у beego очень богатые функции, которые далеко не так просты, как показано в приведенном выше случае. У него также есть много сложных функций, которые здесь не будут выполняться, ожидая. вам исследовать.
Название проекта: revel/revel
Количество звезд проекта: 12,9 тыс.
Revel — это полнофункциональная веб-инфраструктура, разработанная на основе языка Go. Она включает в себя множество функций и инструментов, таких как ORM, механизм шаблонов и маршрутизатор, и является комплексной и богатой функциями.
Revel отличается от других веб-фреймворков. Он предоставляет полный набор функций, включая полную архитектуру MVC, маршрутизацию и анализ URL-адресов, базы данных, плагины, механизмы рендеринга и т. д. Таким образом, его функции очень мощные, но при этом относительно сложные. Кроме того, это не так уж и мейнстримно, и активность сообщества относительно низкая.
Ниже приведен пример использования платформы Revel, показывающий, как создать простое веб-приложение.
$ go get -u github.com/revel/revel
$ go get -u github.com/revel/cmd/revel
$ revel new example.com/revel-demo
hello
изконтроллер:$ cd revel-demo
$ revel generate controller hello
app/controllers
Открыть в каталогеhello.go
документ,и добавьте следующий код вHello
в контроллере:package controllers
import "github.com/revel/revel"
type Hello struct {
*revel.Controller
}
func (c Hello) Index() revel.Result {
return c.RenderText("Hello, Revel!")
}
conf/routes
документ Добавьте следующее вмаршрутизация Конфигурация:GET /hello Hello.Index
$ revel run -a example.com/revel-demo
http://localhost:9000/hello
,Вы увидите следующий текстовый ответ:Hello, Revel!
В приведенном выше примере показано, как создать простое веб-приложение с использованием платформы Revel. При необходимости вы можете добавить больше контроллеров и маршрутов для создания более сложных приложений.
Название проекта: гобуффало/буйвол
Количество звезд проекта: 7,7 тыс.
Buffalo — это современный веб-фреймворк на языке Go, получивший широкое внимание благодаря своей простоте, удобству использования, эффективности и стабильности. Это полноценная веб-инфраструктура, объединяющая множество функций, таких как ORM, WebSockets и интерфейсные инструменты.
Buffalo имеет очень богатые функции и отличительные особенности, он небольшой, но красивый:
Фреймворк Buffalo относительно прост в использовании. Он принимает принцип соглашения по конфигурации. Каждая конфигурация будет относительно простой, а вторичное расширение сложных функций также относительно легко. Недостаток заключается в том, что экосистема Buffalo меньше и в ней меньше сопутствующих ресурсных документов. Конечно, это не значит, что она не идеальна. Я считаю, что она довольно красива, когда я использую ее сам.
Ниже приведен пример использования платформы Buffalo, показывающий, как создать простое приложение для управления делами.
$ go get -u github.com/gobuffalo/buffalo/buffalo
$ buffalo new todo-app
task
изресурс:$ cd todo-app
$ buffalo g resource task name done
$ buffalo db migrate
actions
Открыть в каталогеtasks.go
документ,и добавьте следующий код вList
в методе:func (v TasksResource) List(c buffalo.Context) error {
tasks := &models.Tasks{}
if err := models.DB.All(tasks); err != nil {
return errors.WithStack(err)
}
return c.Render(200, r.JSON(tasks))
}
app.go
документ Добавьте следующее вмаршрутизация Конфигурация:app.GET("/tasks", TasksResource.List)
$ buffalo dev
http://localhost:3000/tasks
,Вы увидите пустой список задач.В приведенном выше примере показано, как создать простое приложение для управления делами с использованием платформы Buffalo. При необходимости вы можете добавить больше маршрутов и контроллеров для создания более сложных приложений.
Выше перечислены 5 популярных в настоящее время веб-фреймворков, использующих язык Go. Каждый фреймворк имеет свои уникальные характеристики, так как же нам выбрать?
Позвольте мне поделиться своим мнением.
Прежде всего, в зависимости от знакомства и зрелости членов команды с этими фреймворками, отдавайте предпочтение относительно знакомым фреймворкам. Стоимость обучения ниже, а более позднее обнаружение ошибок, а также эксплуатация и обслуживание также могут кое-что сэкономить.
Если команда не знакома с вышеперечисленными фреймворками, вы можете выбрать один из них в соответствии с вашими потребностями и масштабом проекта и рассмотреть следующие аспекты в целом:
Окончательный выбор должен основываться на потребностях проекта, опыте команды и личных предпочтениях. В процессе фактического выбора вы можете опробовать примеры и учебные пособия различных фреймворков и провести простую разработку прототипов, чтобы лучше понять характеристики и применимость фреймворка.