Welcome to Fiber — an Express.js styled web framework written in Go with ❤️

Introduction

Hello, World! :wave: Today we will deal with a young (but ambitious) Fiber web framework on Go and understand that this is not " yet another new framework, like X ", but a great tool for creating rapid web applications.

:pushpin: It will be a review article, dive into Fiber we will start further.

Table of contents

What is Fiber and why is it so good?

Follow official README from GitHub repository:

Fiber is an Express.js styled HTTP web framework implementation running on Fasthttp , the fastest HTTP engine for Go (Golang). The package make use of similar framework convention as they are in Express.

And I tend to agree with that. If you have ever implemented a web application on Node.js using Express.js (like me), then many methods and principles will seem very common to you!

For example, this is standard Hello, World! by Express.js:

// ...

const app = express()

app.get('/', (req, res) => res.send('Hello, World!'))

app.listen(8080)

And similar example by Fiber :

// ...

app := fiber.New()

app.Get("/", func(c *fiber.Ctx) {
  c.Send("Hello, World!")
})

app.Listen(8080)

Useful information to start working with Fiber

Actually, all you need for start is official documentation ! :wink:

Fiber, as a web framework , was created with idea of minimalism to more easily start creating a web application's backend for new gophers , but who have experience with JavaScript.

That's what the authors themselves say:

People switching from Node.js to Go often end up in a bad learning curve to start building their webapps, this project is meant to ease things up for fast development, but with zero memory allocation and performance in mind.

Main features

Easy to enable the prefork feature

Just set Prefork to true on your code:

// ...

app := fiber.New()

app.Prefork = true // enable prefork

app.Get("/", func(c *fiber.Ctx) {
  c.Send(fmt.Sprintf("Hi, I'm worker #%v", os.Getpid()))
  // => Hi, I'm worker #16858
  // => Hi, I'm worker #16877
  // => Hi, I'm worker #16895
})

app.Listen(8080)

What's prefork?

Enable prefork feature will spawn multiple go processes listening on the same port. Nginx has a great article about Socket Sharding , this picture are taken from the same article :point_down:

:sparkles: My favorite killer feature :sparkles:

And one more big feature (for me) is full access to all Fasthttp methods and properties (read documentation for more info about it).

Yeah, you didn't mishear! Fiber is extremely easy to use as Express.js and has everything under the hood that Fasthttp has now and will have in the future :fire:

Benchmarks

Click here to see all benchmark results. I'll only bring some.

  • TechEmpower: JSON serialization

  • Go-Web: enable HTTP pipelining

Project assistance

  1. Add a GitHub Star to project.
  2. Help to translate README and API Docs to another language.

Photo by

[Title] Fiber authors https://gofiber.github.io/fiber/#/

[1] Nate Grant https://unsplash.com/photos/dFF8z3WH5FI

P.S.

If you want more — write a comment below & follow me. Thx! :kissing_heart:

我来评几句
登录后评论

已发表评论数()

相关站点

+订阅
热门文章