Узнайте о Fiber, новой платформе веб-разработки Golang
Этот фреймворк меня восхищает, потому что он действительно ориентирован на веб-разработку, что мне очень нравится.
Это фреймворк, вдохновленный фреймворком Node.js Express и построенный на основе Fasthttp. И, как и другие фреймворки, он очень помогает вам начать создавать свои веб-приложения на Go.
Требования
На вашем компьютере должен быть установлен Go.
Начнем
Для начала создайте новый проект Go. Создайте новый файл с именем main.go
и введите следующий стартовый код:
package main
func main() {}
Чтобы установить этот фреймворк, выполните следующую команду в командной строке или в терминале / bash:
go get github.com/gofiber/fiber/v2
Это позволит вам установить fiber модуль. Теперь вы можете импортировать это в свой файл main.go
:
package main
import "github.com/gofiber/fiber/v2"
func main() {}
Теперь вы можете использовать фреймворк.
Создаем приложение с Fiber
Ниже представлено простейшее приложение Fiber, которое вы можете себе представить. Мы рассмотрим это строка за строкой:
package main
import "github.com/gofiber/fiber/v2"
func main() {
app := fiber.New()
app.Get("/", func(c *fiber.Ctx) error {
return c.SendString("Hello, World!")
})
app.Listen(":3000")
}
Внутри основной функции вы видите следующие строки кода:
app := fiber.new()
Это инициализирует новый экземпляр приложения Fiber, как и в случае с Express в Node. На самом деле это очень похоже, поэтому, если вы раньше использовали Express, в этом не будет ничего нового.
app.Get("/", func(c *fiber.Ctx) error {
Это ваша строка кода маршрута. На этом маршрутизация завершена. Когда вы хотите использовать GET
запрос, вы используете .Get()
. Когда вы хотите использовать POST
запрос, вы просто используете .Post()
. После этого вы увидите функцию обратного вызова, у которой есть параметр ответа, который определен как c
и возможная обработка ошибок после этого.
return c.SendString("Hello, World!")
В этой строке будет возвращен ответ. Это простая строка, возвращаемая с помощью Hello World
.
В нижней строке мы видим, что порт прослушивания 3000
:
app.Listen(":3000")
Поэтому, когда вы запустите этот сервер с go run main.go
, он запустит веб-сервер на порту 3000 вашего локального хоста. Если вы посетите этот адрес в своем браузере, отобразится простой текст Hello World.
Расширенная маршрутизация
Давайте погрузимся в расширенную маршрутизацию, поскольку простой запрос GET
или POST
без каких-либо параметров не очень удобен.
Чтобы было понятно, это самый простой путь:
app.Get("/", func(c *fiber.Ctx) error {
return c.SendString("Hello, World!")
})
А если вы хотите сделать его более динамичным, вы можете добавить параметры:
app.Get("/:value", func(c *fiber.Ctx) error {
return c.SendString("value: " + c.Params("value"))
})
Итак, после /
, мы видим :value
, это параметр, который может означать что угодно. Это может быть номер страницы, имя пользователя, что угодно. В return
мы видим, что значение этого параметра было возвращено в ответе.
Статические файлы
Как и в случае с любой другой структурой веб-разработки, у нас есть статические файлы, которые будут обслуживаться на наших серверах. Чтобы создать папку со статическим файлом, мы делаем следующее:
app.Static("/", "./public")
Это очень просто: первый аргумент принимает маршрут, а второй - его путь.
Шаблоны
Теперь перейдем к визуальной части этого фреймворка - добавлению шаблонов. Какой веб-сайт без внешнего интерфейса?
Golang's Fiber имеет интерфейс для представлений:
type Views interface {
Load() error
Render(io.Writer, string, interface{}, ...string) error
}
Интерфейс Views
содержит методы Load
и Render
. Load
выполняется Fiber при инициализации приложения для загрузки / анализа шаблонов.
app := fiber.New(fiber.Config{Views: engine,})
Метод Render
связан с функцией ctx.Render()
, которая принимает имя шаблона и связывание данных.
app.Get("/", func(c *fiber.Ctx) error {
return c.Render("index", fiber.Map{
"hello": "world",
});
})
Для наглядности вы храните файлы шаблонов в папке /views
в корне.
Заключение
В этом примере представлено простое приложение Fiber, написанное с использованием Go. Если вам интересна данная тема, пишите комментарии, мы обязательно продолжим ее развивать.