精品欧美一区二区三区在线观看 _久久久久国色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在线免费观看国产| 日韩av免费在线| 四虎精品一区二区| 黑人精品一区| 国产精品国产馆在线真实露脸| 97免费资源站| 波多野结衣不卡| 在线中文一区| 国产午夜精品全部视频播放 | 羞羞的视频在线看| 97久久精品人人爽人人爽蜜臀| 国产精品三级网站| 国产一卡二卡在线播放| 日本激情一区| 日韩av影视在线| 日韩肉感妇bbwbbwbbw| 白白色在线观看| 国产精品国产a级| 久久精彩视频| 亚洲大尺度视频| 精品一区二区三区蜜桃| 欧洲亚洲妇女av| 国产第100页| 91成人免费| 一区二区三区久久精品| 尤物网站在线观看| 久久av偷拍| 欧美私模裸体表演在线观看| 1024av视频| 欧美14一18处毛片| 国产精品三级av| 欧美裸体网站| 亚洲色欧美另类| 成人免费毛片aaaaa**| 国产欧美日韩视频| 国产真人无遮挡作爱免费视频| 极品裸体白嫩激情啪啪国产精品| 久久精品国产视频| 自拍偷拍你懂的| 欧洲乱码伦视频免费| 日韩久久免费电影| 7788色淫网站小说| 国产精品18hdxxxⅹ在线| 日韩午夜在线观看视频| 九九热视频免费| 国产麻豆精品| 欧美一区二区三区在线观看 | 中日韩美女免费视频网址在线观看 | 亚洲女人被黑人巨大进入| 国产情侣久久久久aⅴ免费| 免费看日产一区二区三区| 欧美丰满嫩嫩电影| 亚洲制服中文字幕| 国产精品亚洲欧美一级在线 | 亚洲制服在线观看| av在线播放一区二区| 91精品国产欧美日韩| 五月六月丁香婷婷| 日韩精品视频中文字幕| 欧美成va人片在线观看| 天堂va欧美va亚洲va老司机| 在这里有精品| 亚洲国产高清福利视频| 在线视频 日韩| 人人精品视频| 国产亚洲精品va在线观看| 免费成人深夜天涯网站| 日本一区二区三区视频| www.国产一区| 妺妺窝人体色www在线下载| 136国产福利精品导航网址| 2019精品视频| 中日韩在线观看视频| 久久av资源网| 国产精品久久亚洲| 欧洲一区av| 国产欧美视频一区二区| 黄色一级片网址| 黄色污污视频在线观看| 欧美视频免费在线| 五月婷婷之婷婷| 91国内精品| 亚洲人成网站777色婷婷| 女教师淫辱の教室蜜臀av软件| 亚洲五月综合| 韩国精品久久久999| 丰满人妻一区二区三区四区| 国产又粗又猛又爽又黄91精品| 国产精品久久久久久久免费大片| 国产高清一级毛片在线不卡| 亚洲色图都市小说| 国产91在线视频观看| 国产成人福利夜色影视| 精品国产麻豆免费人成网站| 欧美另类z0zx974| 欧美日韩91| 国产成人精品网站| 性欧美18一19性猛交| 久久久不卡网国产精品一区| 成年人视频大全| av激情成人网| 精品国产乱码久久久久久浪潮| 午夜时刻免费入口| 好吊视频一区二区三区四区| 国产成人亚洲精品| 精品区在线观看| 国产欧美日韩中文久久| 久久男人资源站| 亚洲青青一区| 亚洲日本中文字幕| 日本少妇性高潮| 麻豆精品视频在线观看| 狠狠色狠狠色综合人人| 黄色网页网址在线免费| 色综合色狠狠天天综合色| 中文字幕第三区| 成人在线亚洲| 日本亚洲精品在线观看| 亚洲国产综合一区| 中文字幕一区二区三区在线观看| 鲁一鲁一鲁一鲁一澡| 亚洲成人黄色| 日韩视频亚洲视频| 波多野结衣电车| 97aⅴ精品视频一二三区| 国产一二三四区在线观看| 日本.亚洲电影| 国产视频精品xxxx| 国产成人啪精品午夜在线观看| 国内不卡的二区三区中文字幕| 日韩不卡av| 都市激情综合| 亚洲美女av在线| 免费观看一区二区三区毛片| 粉嫩aⅴ一区二区三区四区 | 亚洲无线看天堂av| 精品视频在线一区二区| 欧美性xxxx极品hd欧美风情| 国产高潮失禁喷水爽到抽搐| 亚洲影视一区二区三区| 国产精品免费福利| 国产美女性感在线观看懂色av| 午夜精品一区在线观看| 精品一区二区三区四区五区六区| 欧美精品黄色| 91文字幕巨乱亚洲香蕉| 91网址在线观看| 欧美一区二区三区免费| 99久久婷婷国产综合| 激情五月激情综合网| 色乱码一区二区三区熟女| 国产精品免费精品自在线观看| 中文字幕一区二区三区电影| 中文字幕在线视频免费| 国产精品国产三级国产aⅴ中文 | 亚洲性线免费观看视频成熟| 国产伦精品一区二区三区视频网站| 91视频.com| 一级黄色香蕉视频| 日韩欧美三级| 亚洲综合视频1区| 蜜桃传媒在线观看免费进入| 亚洲高清一二三区| 日韩 欧美 中文| 国产日韩v精品一区二区| 国产一二三四在线视频| 国产黄a三级三级看三级| 麻豆成人综合网| 成人在线免费观看网址| 国产精品videossex| 欧美在线一区二区三区四| 国产日本在线视频| 欧美日韩精品一区二区天天拍小说 | 中文字幕va一区二区三区| 国产精品自在自线| 亚洲特级毛片| 蜜桃导航-精品导航| 成人国产激情| 欧美韩国理论所午夜片917电影| 丰满人妻一区二区三区免费| 欧美性猛交视频| 久久噜噜色综合一区二区| 粉嫩在线一区二区三区视频| 2018中文字幕第一页| 欧美美女在线| 91精品国产一区二区三区动漫| 黄色污网站在线观看| 日韩亚洲第一页| 熟妇人妻一区二区三区四区 | 国产精品国产三级国产专播精品人| 成年人视频免费在线观看| 欧美xxxxxxxxx| 亚洲国产成人精品女人久久| 亚洲欧美国产毛片在线| 国产老熟女伦老熟妇露脸| 免费成人在线观看| 国产视频精品在线| 久久久精品人妻一区二区三区四| 精品香蕉视频| av噜噜色噜噜久久| 91成人在线| 国模私拍视频一区| 999福利视频| 国产成人超碰人人澡人人澡| 999精品视频在线| 伊人久久亚洲美女图片| 亚洲一区二区三区精品视频| 神马香蕉久久| 99国产高清| 四虎国产精品永久在线国在线| 国产69精品久久久久久| 特级毛片在线| 丝袜一区二区三区| 欧美女同网站| 亚洲风情亚aⅴ在线发布| 国产精品视频一区二区三区,| 色综合视频在线观看| 精品少妇theporn| 一区在线观看视频| 国产7777777| 久久影院视频免费| www国产视频| 国产一区二区三区综合| 色一情一区二区三区| 日韩成人精品在线| av片中文字幕| 日韩一级大片| 久久久久久免费看| 欧美视频不卡| 四虎精品欧美一区二区免费| 久久久久久久久丰满| 午夜精品一区二区在线观看| 蜜桃一区二区| 欧美日韩系列| 伊人久久大香线蕉av不卡| 久久精品二区| 日本福利一区| 久久免费99精品久久久久久| 青草久久视频| 久久狠狠久久综合桃花| 亚洲第一福利社区| 欧美激情第六页| 亚洲a级精品| 日韩不卡av| 水蜜桃久久夜色精品一区| 亚洲黄色成人久久久| 久久国产电影| 亚洲免费av网| 欧美日韩国产精品一区二区亚洲| 欧美a级黄色大片| 国内精品久久久久久久97牛牛| 91嫩草国产丨精品入口麻豆| 欧美日韩国产色综合一二三四| av日韩在线看| 日韩一级不卡| 中文字幕乱码人妻综合二区三区| 久久精品一区二区国产| 冲田杏梨av在线| 加勒比av一区二区| 美女流白浆视频| 9久草视频在线视频精品| 久久无码人妻精品一区二区三区| 久久中文娱乐网| 五月天免费网站| 亚洲精品欧美二区三区中文字幕| 中文字幕另类日韩欧美亚洲嫩草| 亚洲一区二区三区影院| 日韩精品视频播放| 91成人在线观看喷潮| 伊人成人在线观看| 日韩免费一区二区| 爽爽视频在线观看| 亚洲精品一区久久久久久| 香蕉视频免费在线播放| 九九久久综合网站| 中文字幕乱码在线播放| 国产精品在线看| 国产精品zjzjzj在线观看| 欧美高清性xxxxhd| 亚洲精品网址| koreanbj精品视频一区| 久久精品免费看| 18禁一区二区三区| 久久精品网站免费观看| 黄色录像免费观看| 亚洲成人黄色影院| 最新国产中文字幕| 欧美大片国产精品| 成年女人的天堂在线| 久久久久久久久久国产精品| 国产成人精品一区二三区在线观看| 91九色国产视频| 992tv国产精品成人影院| 96国产粉嫩美女| 最新亚洲精品| 久久av高潮av| 美女视频一区二区三区| 人妖粗暴刺激videos呻吟| 日本一区二区综合亚洲| 黄色小视频在线免费看| 欧美精品18+| 男生女生差差差的视频在线观看| 久久综合五月天| 日本一道高清亚洲日美韩| 国产伦精品一区二区三区视频孕妇| 精品国产不卡| 国产中文字幕二区| 国产乱国产乱300精品| 无码人妻精品一区二区中文| 亚洲午夜在线视频| 怡春院在线视频| 亚洲免费一级电影| 欧美伦理免费在线| 成人激情电影一区二区| 精品午夜久久| 蜜臀av午夜一区二区三区 | 在线精品视频播放| 亚洲天堂2016| 中文人妻熟女乱又乱精品| 日韩国产在线看| 丰满诱人av在线播放| 国产主播精品在线| 精品国产一区二区三区小蝌蚪 | 99久久精品一区二区成人| 精品一卡二卡三卡四卡日本乱码 | 国产欧美久久久久久| 九九热线有精品视频99| 大陆极品少妇内射aaaaa| 成人午夜短视频| 久久久久久久久久一区二区三区| 51精品国自产在线| 免费高清在线观看| 国产精品视频区1| 成人在线电影在线观看视频| mm1313亚洲国产精品无码试看| 久久先锋影音av| 欧美 日韩 精品| 国产视频丨精品|在线观看| 欧美久久天堂| 看高清中日韩色视频| 亚洲免费一区二区| 亚洲av网址在线| 欧美性xxxx极品hd满灌| 欧美孕妇孕交xxⅹ孕妇交| 日本亚洲欧美三级| 成人网18免费网站| 中文字幕网av| 日韩美女久久久| 午夜精品久久久久久久91蜜桃| 精品少妇一区二区30p| 一区二区三区视频播放| 夜夜添无码一区二区三区| 成人精品视频网站| 亚洲 欧美 视频| 日韩av中文字幕在线| 国产精品粉嫩| 性欧美.com| 国产乱国产乱300精品| 天堂资源在线播放| 亚洲人成电影在线| 亚洲18在线| 久久男人资源站| 久久日韩粉嫩一区二区三区| 中文字幕精品无| 久久精品国产亚洲7777| 日韩区一区二| 欧美深夜福利视频| 欧美极品少妇xxxxⅹ高跟鞋| 国产精品国产av| 欧美精品中文字幕一区| 黄色网一区二区| 日韩av播放器| 亚洲欧美国产毛片在线| 亚洲色欧美另类| 国产精品青青在线观看爽香蕉| 午夜激情一区| 中文字幕被公侵犯的漂亮人妻| 欧美在线三级电影| 亚洲婷婷噜噜| 日韩精品伦理第一区| 国产精品538一区二区在线| 久久久久久久久久久久久久av| 一区二区在线免费视频| 免费一级欧美在线大片| 久久国产乱子伦免费精品| 亚洲天堂成人在线观看| 色视频在线观看福利| 成人精品久久久| 亚洲免费中文| 男女免费视频网站| 中国人与牲禽动交精品| 成人资源在线播放| 无需播放器的av| 午夜伊人狠狠久久| 蜜桃视频在线观看免费视频网站www| 久久大片网站| 国产一区91精品张津瑜| 成人免费毛片视频| 久久久久久成人精品| 成人亚洲一区|