精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

Go Fiber 框架系列之一: 和 Express 對比學習

開發 后端
這是一個 Go 語言 Web 框架,啟發自 NodeJS 框架:Express。該框架基于 FastHTTP 構建,旨在簡化、零內存分配和提高性能,以便快速開發。

[[425569]]

大家好,我是 polarisxu。

每次發框架相關的文章,總有人提到 Go Fiber 框架。于是乎,學習了下 Fiber,感覺確實挺不錯的。因此寫下這個 Fiber 系列。

Fiber 項目地址:https://github.com/gofiber/fiber,目前 Star 數 15.3k+。

01 Fiber 框架

這是一個 Go 語言 Web 框架,啟發自 NodeJS 框架:Express。該框架基于 FastHTTP 構建,旨在簡化、零內存分配和提高性能,以便快速開發。

如果你是一位 NodeJS 開發者,想學習 Go,這個框架應該很適合你,同時這里還有一份專門為 NodeJS 開發者準備的 Go 學習資料:https://github.com/miguelmota/golang-for-nodejs-developers

這個框架是 2020 年 1 月份啟動開發的,沒想到短時間就受到很多人關注。從 README 的多國語言就可見一斑:

從第三方性能測試結果看,Fiber 的表現比 Gin、Echo 好很多。這里有詳細的 Benchmark 測試說明:https://docs.gofiber.io/extra/benchmarks。

摘抄一段官方關于 Fiber 的哲學:

Fiber 作為一個 Web 框架 ,是按照極簡主義的思想并遵循 UNIX 方式創建的,因此新的 gopher 可以在熱烈和可信賴的歡迎中迅速進入 Go 的世界。

Fiber 受到了互聯網上最流行的 Web 框架 Express 的啟發 。我們結合了 Express 的易用性和 Go 的原始性能 。如果您曾經在 Node.js 上實現過 Web 應用程序(使用 Express 或類似工具),那么許多方法和原理對您來說應該非常易懂。

我們關注 整個互聯網 用戶在 issues 和 Discord channel 的消息,為了創建一個迅速,靈活以及友好的 Go Web 框架,滿足任何任務,最后期限和開發者技能。就像 Express 在 JavaScript 世界中一樣。

所以,總結一下 Fiber 的特點(優勢):

  • 強大的路由
  • 靜態文件服務
  • 極致高性能
  • 內存占用低
  • API 接口
  • 中間件和 Next 支持
  • 快速服務器端編程
  • 支持各種模版引擎
  • WebSocket 支持
  • 頻率限制器
  • 文檔被翻譯為 16 種語言

不過有兩點需要注意,Fiber 使用了 unsafe 和 fasthttp,所以可能和 Go 最新版本有兼容性問題。目前 Fiber 2.18.0 兼容 Go 1.14 到 Go1.17;但 fasthttp 和 net/http 是不兼容的,因此 net/http 生態的項目無法使用在 fiber 上。

02 和 Express 的簡短比較

既然是受 Express 啟發,那就和它比較下。

Hello World

基于 Express 的 Hello World 程序:

  1. const express = require("express"); // 引用 Express library 
  2. const app = express(); // 創建一個 Express 實例 
  3.  
  4. // 路由:/ endpoint 
  5. app.get("/", (req, res) => { 
  6.   res.send("Hello World!"); 
  7. }); 
  8.  
  9. // 在 3000 端口啟動服務 
  10. app.listen(3000); 

確實挺簡單,幾行代碼就搞定了一個 Web 服務。

現在用 Fiber 實現類似上面的功能:

  1. package main 
  2.  
  3. import "github.com/gofiber/fiber/v2" // 注意,最新版本是 v2.18.0,所以有 v2 
  4.  
  5. func main() { 
  6.   app := fiber.New() // 創建一個 Fiber 實例 
  7.  
  8.   // 路由:/ endpoint 
  9.   app.Get("/", func(c *fiber.Ctx) error { 
  10.     return c.SendString("Hello, World!"
  11.   }) 
  12.  
  13.   // 在 3000 端口啟動服務 
  14.   app.Listen(":3000"

目前,幾乎所有 Go 框架都是類似的路子,沒有太多好解釋的。

Fiber 啟動后終端的輸出結果:

  1. $ go run main.go 
  2.  
  3.  ┌───────────────────────────────────────────────────┐ 
  4.  │                   Fiber v2.18.0                   │ 
  5.  │               http://127.0.0.1:3000               │ 
  6.  │       (bound on host 0.0.0.0 and port 3000)       │ 
  7.  │                                                   │ 
  8.  │ Handlers ............. 2  Processes ........... 1 │ 
  9.  │ Prefork ....... Disabled  PID ............. 83538 │ 
  10.  └───────────────────────────────────────────────────┘ 

路由和端點

任何 Web 應用程序、微服務或 API 都包含一個基于描述 HTTP 方法的端點(endpoint)和處理程序函數的路由系統,只有在這個端點接收到客戶端的請求后才會執行這個路由系統。

除了上面的 HTTP GET 方法,Express 和 Fiber 還支持其他 HTTP 基本方法(當然還支持其他 HTTP 方法)。

  1. // Endpoint for POST method 
  2. app.post("/", (req, res) => { 
  3.   // function that stores a new data 
  4. }); 
  5.  
  6. // Endpoint for PUT method 
  7. app.put("/", (req, res) => { 
  8.   // function that replaces the existing data 
  9. }); 
  10.  
  11. // Endpoint for PATCH method 
  12. app.patch("/", (req, res) => { 
  13.   // function that replaces part of the existing data 
  14. }); 
  15.  
  16. // Endpoint for DELETE method 
  17. app.delete("/", (req, res) => { 
  18.   // function that deletes the data 
  19. }); 

對應的 Fiber 代碼:

  1. // Endpoint for Post method 
  2. app.Post("/", func(c *fiber.Ctx) error { 
  3.   // function that stores a new data 
  4. }) 
  5.  
  6. // Endpoint for PUT method 
  7. app.Put("/", func(c *fiber.Ctx) error { 
  8.   // function that replaces the existing data 
  9. }) 
  10.  
  11. // Endpoint for PATH method 
  12. app.Path("/", func(c *fiber.Ctx) error { 
  13.   // function that replaces part of the existing data 
  14. }) 
  15.  
  16. // Endpoint for DELETE method 
  17. app.Delete("/", func(c *fiber.Ctx) error { 
  18.   // function that deletes the data 
  19. }) 

中間件

中間件函數可以訪問 HTTP 請求和響應對象,以及調用下一個中間件函數。一般地,中間件函數執行如下動作:

  • 執行我們想讓其執行的代碼
  • 對請求或響應對象做任何修改
  • 完成請求-響應循環
  • 調用堆棧中的下一個中間件函數

看一個中間件的例子,它們在 Express 和 Fiber 中如何寫。

  1. app.use(function (req, res, next) { 
  2.   // 打印當前時間 
  3.   console.log("Date:"Date.now()); 
  4.  
  5.   next(); 
  6. }); 

對應 Fiber 的代碼如下:

  1. app.Use(func(c *fiber.Ctx) error { 
  2.   // 打印當前時間 
  3.   fmt.Println("Date:"time.Now()) 
  4.  
  5.   return c.Next() 
  6. }) 

服務靜態文件

Web 應用經常會有靜態文件,它們需要能夠被請求,比如圖片、css/js 文件等。

服務靜態文件,一般基于如下幾個點:

  • 一個存儲靜態文件的文件夾
  • 在 Web 程序中指定掛載點
  • 對掛載點進行引用

看看 Express 如何做到的:

  1. app.use( 
  2.   "/static", // mount address 
  3.   express.static("public") // path to the file folder 
  4. ); 

對應 Fiber 的代碼如下:

  1. app.Static
  2.   "/static",  // mount address 
  3.   "./public", // path to the file folder 

因此,我們對 /static/ 下的文件訪問,都對應到 public 下的文件。比如:

http://localhost:3000/static/images/background.jpg 對應是 public/images/background.jpg 文件

使用模板

目前,Go 很多框架對各種模板引擎支持是不夠的。但 Fiber 做到了和 Express 類似,支持大量開箱即用的模板引擎,比如:Pug、Jade、Mustache 和 Handlebars 等。

以 Pug 為例,看看 Express 和 Fiber 如何使用的。(注意,以下代碼會查找 ./views 目錄下的 index.pug 文件,沒有該文件會報錯)

  1. app.set("view engine""pug"); 
  2.  
  3. // 初始化模板文件夾 
  4. app.set("views""./views"); 
  5.  
  6. app.get("/", (req, res) => { 
  7.   res.render("index", { 
  8.     title: "Hey!"
  9.     message: "This is the index template."
  10.   }); 
  11. }); 

對應的 Fiber 代碼如下(注意,Fiber 對模板的支持是 https://github.com/gofiber/template 包):

  1. // 基于 ./views 文件夾初始化 Pug 模板引擎 
  2. engine := pug.New("./views"".pug"
  3.  
  4. app := fiber.New(fiber.Config{ 
  5.   Views: engine, // 設置模板引擎 
  6. }) 
  7.  
  8. app.Get("/", func(c *fiber.Ctx) error { 
  9.   return c.Render("index", fiber.Map{ 
  10.     "Title":   "Hey!"
  11.     "Message""This is the index template."
  12.   }) 
  13. }) 

03 小結

本文簡單介紹了 Fiber 的一些特性。因為 Fiber 是受 Express 啟發實現的,因此和 Express 進行了對比。不知道你對 Fiber 有什么感覺?

下篇文章會較詳細的介紹 Fiber 的一些特性。

參考

https://dev.to/koddr/go-fiber-by-examples-how-can-the-fiber-web-framework-be-useful-487a

本文轉載自微信公眾號「polarisxu」,可以通過以下二維碼關注。轉載本文請聯系polarisxu公眾號。

 

https://docs.gofiber.io/api/fiber

 

責任編輯:武曉燕 來源: polarisxu
相關推薦

2021-10-06 19:03:35

Go中間件Middleware

2021-10-12 18:32:17

Go框架測試

2024-01-04 07:02:36

GoLangFiber開發

2020-09-16 12:18:28

GoJava模式

2025-09-29 01:25:00

GoGinWeb 服務

2022-02-28 14:54:48

openHarmon鴻蒙操作系統

2024-12-12 08:57:47

2018-03-12 22:13:46

GO語言編程軟件

2022-02-09 14:36:25

GoMongoDBFiber

2022-01-07 15:11:27

項目Go 框架

2009-06-01 11:28:48

EquinoxOSGi入門

2023-10-22 20:20:37

FiberGo

2020-08-28 17:54:31

深度學習框架

2021-02-04 15:08:37

Vue漸進式框架

2021-07-07 09:18:00

Java并發編程

2010-08-06 10:46:20

IGRPRIP

2021-10-19 11:22:08

SentinelGo源碼

2019-03-06 09:55:54

Python 開發編程語言

2017-05-05 10:15:38

深度學習框架對比分析

2021-01-11 05:18:11

機器學習
點贊
收藏

51CTO技術棧公眾號

在线精品国产亚洲| 久草免费在线视频观看| 久久青青视频| 国产精品看片你懂得| 不卡av电影院| 一区二区三区四区影院| 不卡视频观看| 欧美国产精品一区| 99久久一区三区四区免费| 久久久久久久久久影院| 欧美疯狂party性派对| 亚洲一区二区精品视频| 久久久99爱| 99久久久无码国产精品免费| 最新日韩在线| 日韩三级成人av网| 精品国产人妻一区二区三区| 欧美日韩卡一| 色综合久久久久| 8x8ⅹ国产精品一区二区二区| 女人偷人在线视频| 久国产精品韩国三级视频| 久久免费视频网站| 二区三区四区视频| 欧美日本成人| 亚洲第一页中文字幕| 黄色永久免费网站| 中文字幕乱码中文乱码51精品| 亚洲视频免费在线观看| 茄子视频成人在线观看 | 亚洲美女性囗交| 小视频免费在线观看| 亚洲欧美日韩国产另类专区 | 国产大片一区| 亚洲视频综合网| 无码一区二区精品| 在线欧美三级| 欧美国产一区二区在线观看 | 人妻一区二区三区四区| 国产伦理精品不卡| 国产在线观看精品一区二区三区| 国产精品第5页| 亚洲影视在线| 91av在线影院| 国产成人在线免费视频| 亚洲国产日本| 午夜精品蜜臀一区二区三区免费| 欧美黄色免费观看| 中文字幕一区二区av| 久久精品青青大伊人av| 国产男女猛烈无遮挡在线喷水| 精品久久久亚洲| 欧美日韩不卡在线| 999香蕉视频| 日韩三区免费| 欧美日韩一卡二卡三卡| 午夜精品中文字幕| www一区二区三区| 欧美一卡2卡3卡4卡| 国产91沈先生在线播放| 中文字幕在线三区| 亚洲最大成人网4388xx| www.男人天堂网| 青青青国内视频在线观看软件| 有码一区二区三区| 97中文字幕在线| 96av在线| 国产精品久久毛片a| 水蜜桃一区二区| 日本在线视频网| 亚洲精选在线视频| 成年人网站国产| 小视频免费在线观看| 欧美亚洲高清一区| 亚洲一二区在线观看| 亚洲视频国产| 亚洲国产精品久久91精品| 国产麻豆xxxvideo实拍| 九九热精品视频在线观看| 中文字幕亚洲综合久久筱田步美| 性一交一黄一片| 亚洲精品国产精品国产| 91福利国产精品| 中文字幕 日韩 欧美| 日韩三级久久| 日韩美女av在线| 免费一级suv好看的国产网站| 羞羞答答成人影院www| 欧美国产高跟鞋裸体秀xxxhd| 午夜影院在线看| 麻豆国产欧美一区二区三区| 91超碰rencao97精品| 四虎影院在线播放| 国产精品国产自产拍高清av| 黄色激情在线视频| 日本一区二区三区视频在线| 日韩一级片在线播放| 国产ts丝袜人妖系列视频| 婷婷精品进入| 欧美中文在线观看国产| 国产精品一区二区人人爽| www..com久久爱| 亚洲一卡二卡三卡| 久久久男人天堂| 91精品麻豆日日躁夜夜躁| 国产精品久久不卡| 欧美在线视屏| 国产精品欧美亚洲777777| 国产成人三级在线观看视频| 中文在线一区二区| 日韩小视频在线播放| 日韩成人免费av| 亚洲国产精品yw在线观看| 婷婷社区五月天| 日韩激情一二三区| 久久av一区二区三区漫画| 免费a级人成a大片在线观看| 日本一区二区免费在线观看视频| 成人短视频在线看| 日韩免费小视频| 亚洲国产精品va在线看黑人动漫| 日韩欧美综合视频| 美女网站色91| 日韩wuma| 肉色欧美久久久久久久免费看| 精品国产精品一区二区夜夜嗨| 懂色av粉嫩av蜜臀av一区二区三区| 中文高清一区| 国产精品久久九九| a级影片在线观看| 亚洲综合图片区| 欧美成人乱码一二三四区免费| 先锋影音国产精品| 亚洲人成网站999久久久综合| 国产亚洲自拍av| 国产精品99久久久久| 中文字幕免费高| 日韩久久一区| 俺去了亚洲欧美日韩| 黄色一区二区视频| 国产欧美日韩在线看| 国产成人av影视| 免费电影一区二区三区| 欧美在线免费视频| 亚洲 美腿 欧美 偷拍| 午夜av一区二区| 北条麻妃在线一区| 日本欧美高清| 日韩中文综合网| 国产免费a视频| 国产视频一区不卡| 亚洲精品高清无码视频| 欧美人与物videos另类xxxxx| 欧美一级bbbbb性bbbb喷潮片| 天天影院图片亚洲| 日韩欧美综合在线视频| 男女黄床上色视频| 久久中文在线| 亚洲欧洲另类精品久久综合| 欧美大陆国产| 欧美美女15p| 色综合免费视频| 疯狂欧美牲乱大交777| 欧美精品色婷婷五月综合| 天海翼亚洲一区二区三区| 欧美在线不卡区| 国产美女性感在线观看懂色av| 欧美伊人精品成人久久综合97 | 国产探花一区在线观看| 国产精品黄视频| 日本激情在线观看| 欧美一区二区人人喊爽| 久久久久久久久艹| av不卡在线播放| 草草草在线视频| 99久久婷婷国产综合精品电影√| 91黄色国产视频| 蜜桃视频在线观看免费视频| 国产午夜精品一区理论片飘花 | 超碰91在线播放| 国产精品激情| 精品一区久久久| 久久国产三级| 久久免费观看视频| 黄色网址在线播放| 亚洲人成7777| 亚洲男女在线观看| 日本欧美一区二区三区| 无码毛片aaa在线| 亚洲系列另类av| 91香蕉亚洲精品| 国产h视频在线观看| 3atv一区二区三区| 国产69精品久久久久久久久久| 欧美国产丝袜视频| 中文字幕人妻一区| 美女一区二区三区在线观看| 免费拍拍拍网站| 欧美成人自拍| 久久精品国产99精品国产亚洲性色| 成人免费毛片嘿嘿连载视频…| 欧美男插女视频| 国产福利第一视频在线播放| 欧美成人性战久久| 中文字幕乱码一区二区| 亚洲电影一区二区三区| 天堂av免费在线| 26uuu国产电影一区二区| www.51色.com| 日韩av网站在线观看| 亚洲精品蜜桃久久久久久| 色乱码一区二区三区网站| 日本国产欧美一区二区三区| 黄色免费在线网站| 亚洲性猛交xxxxwww| 后进极品白嫩翘臀在线视频| 欧美日韩dvd在线观看| 在线观看日韩中文字幕| 99国产精品一区| 日本一二三四区视频| 国产精品综合色区在线观看| 欧美日韩激情四射| 国产精品久久久久久麻豆一区软件| 欧美激情论坛| 欧美日韩导航| 国产精品国产精品国产专区不卡| 99亚洲男女激情在线观看| 国产精品久久99久久| 理论片午夜视频在线观看| 久久999免费视频| 国产一二区在线| 亚洲第一页中文字幕| 人人干在线观看| 欧美国产在线观看| 美女久久久久久久久久| 亚洲欧美一级二级三级| 亚洲自拍的二区三区| 国产一区二区三区电影在线观看| 精品视频第一区| 精品资源在线| 精品视频在线观看| 理论片一区二区在线| 九色视频成人porny| 欧美成人基地| 久久资源av| 亚洲精品无吗| 欧美一区视久久| 久久99国产精品视频| 欧美福利一区二区三区| 日韩三区视频| 欧美成人在线免费观看| 亚洲欧洲色图| 奇米视频888战线精品播放| 精品国产aⅴ| 日韩av在线一区二区三区| av亚洲免费| 一区二区三区在线视频111| 日韩成人18| 999国产在线| 超碰在线一区| 久久精品aaaaaa毛片| 九色精品国产蝌蚪| 亚欧精品在线| 亚洲欧美综合久久久| 欧美这里只有精品| 9国产精品视频| 欧洲熟妇精品视频| 久久精品国产一区二区| 黑人无套内谢中国美女| av一区二区三区黑人| 中文字幕免费高清| 中文字幕在线观看一区二区| 免费看一级一片| 欧美性猛交xxxx黑人| 国产三级国产精品国产国在线观看| 亚洲私人黄色宅男| 久久精品国产亚洲av香蕉| 狠狠色噜噜狠狠狠狠97| 自拍偷拍精品视频| 日韩欧美在线影院| 青青草av免费在线观看| 欧美成人一区二区三区| 午夜视频福利在线观看| 国产亚洲视频在线观看| av文字幕在线观看| 77777亚洲午夜久久多人| 成人在线观看免费视频| 91视频99| 欧洲美女日日| 日韩国产一级片| 蜜桃视频一区二区三区在线观看| 91人妻一区二区三区| wwwwww.欧美系列| 99自拍视频在线| 欧美日韩一区二区三区在线免费观看| 亚洲在线免费观看视频| 日韩av在线高清| 欧美性天天影视| 欧洲成人在线视频| 国产免费区一区二区三视频免费| 久久av一区二区| 欧美日韩综合| 性chinese极品按摩| 99久久精品情趣| 国产精品久久久精品四季影院| 欧美性黄网官网| 亚洲黄色在线播放| 日韩在线视频免费观看高清中文 | 蜜桃一区二区三区| www.亚洲成人网| 麻豆91精品91久久久的内涵| 女人被狂躁c到高潮| 亚洲精品乱码久久久久久黑人| 波多野结衣视频网址| 亚洲国产毛片完整版| 国产精品剧情| 国产美女精品视频| 天天躁日日躁狠狠躁欧美| 精品免费久久久久久久| 久热成人在线视频| 一区二区三区伦理片| 精品久久久久久中文字幕大豆网| 国产三级自拍视频| 中文字幕在线看视频国产欧美| 色老头在线一区二区三区| av在线不卡一区| 亚洲久久久久| 日韩在线一区视频| 国产精品久久久久久一区二区三区| 国产香蕉视频在线| 亚洲福利影片在线| 日本在线视频中文有码| 欧美二区乱c黑人| 亚洲欧美久久精品| 亚洲视频小说| 蜜臀国产一区二区三区在线播放| 国产肥白大熟妇bbbb视频| 狠狠色噜噜狠狠狠狠97| 午夜av免费在线观看| 91精品国产高清久久久久久| 久久动漫网址| 99热在线这里只有精品| 99精品欧美一区二区三区综合在线| 精品在线视频免费| 亚洲精品在线电影| 国产高清自产拍av在线| 精品无人乱码一区二区三区的优势| 在线成人黄色| 99久久人妻无码中文字幕系列| 精品福利在线看| 日韩精品123| 国产成人精品一区二区| 国产欧美日韩精品高清二区综合区| 欧美成人精品欧美一级乱| 久久久99精品免费观看不卡| 天堂网中文字幕| 亚洲图中文字幕| 国产精品无码久久久久| 欧美 另类 交| 丁香六月综合激情| 国产精品500部| 国产视频精品在线| 欧美va视频| 9999在线观看| 成人免费毛片嘿嘿连载视频| 日韩 欧美 综合| 亚洲一级一级97网| 亚洲成人1区| 男人添女人荫蒂免费视频| 91丨porny丨国产入口| а中文在线天堂| 操91在线视频| 狼人精品一区二区三区在线| 欧美在线观看视频网站| 中文字幕一区二区三区在线不卡| 国产极品999| 欧美中文字幕在线播放| 清纯唯美日韩| 亚洲美女精品视频| 色综合色综合色综合色综合色综合| av在线电影网| 99精品欧美一区二区三区| 亚洲少妇诱惑| 日韩欧美综合视频| 亚洲美女性视频| av在线中出| 日韩亚洲欧美精品| 国产精品小仙女| 亚洲成人第一网站| 欧美成人免费全部| 国产精品成人国产| 国产尤物av一区二区三区| 久久蜜桃一区二区| 999免费视频| 奇米4444一区二区三区| 66久久国产| 国产一级久久久久毛片精品| 欧美成人精品福利| 日韩欧美专区| 久久精品午夜福利|