- ubuntu12.04环境下使用kvm ioctl接口实现最简单的虚拟机
- Ubuntu 通过无线网络安装Ubuntu Server启动系统后连接无线网络的方法
- 在Ubuntu上搭建网桥的方法
- ubuntu 虚拟机上网方式及相关配置详解
CFSDN坚持开源创造价值,我们致力于搭建一个资源共享平台,让每一个IT人在这里找到属于你的精彩世界.
这篇CFSDN的博客文章Go Fiber 框架系列之一: 和 Express 对比学习由作者收集整理,如果你对这篇文章有兴趣,记得点赞哟.
大家好,我是 polarisxu.
每次发框架相关的文章,总有人提到 Go Fiber 框架。于是乎,学习了下 Fiber,感觉确实挺不错的。因此写下这个 Fiber 系列.
Fiber 项目地址:https://github.com/gofiber/fiber,目前 Star 数 15.3k+.
这是一个 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 的特点(优势):
不过有两点需要注意,Fiber 使用了 unsafe 和 fasthttp,所以可能和 Go 最新版本有兼容性问题。目前 Fiber 2.18.0 兼容 Go 1.14 到 Go1.17;但 fasthttp 和 net/http 是不兼容的,因此 net/http 生态的项目无法使用在 fiber 上.
既然是受 Express 启发,那就和它比较下.
Hello World 。
基于 Express 的 Hello World 程序:
确实挺简单,几行代码就搞定了一个 Web 服务.
现在用 Fiber 实现类似上面的功能:
目前,几乎所有 Go 框架都是类似的路子,没有太多好解释的.
Fiber 启动后终端的输出结果:
路由和端点 。
任何 Web 应用程序、微服务或 API 都包含一个基于描述 HTTP 方法的端点(endpoint)和处理程序函数的路由系统,只有在这个端点接收到客户端的请求后才会执行这个路由系统.
除了上面的 HTTP GET 方法,Express 和 Fiber 还支持其他 HTTP 基本方法(当然还支持其他 HTTP 方法).
对应的 Fiber 代码:
中间件 。
中间件函数可以访问 HTTP 请求和响应对象,以及调用下一个中间件函数。一般地,中间件函数执行如下动作:
看一个中间件的例子,它们在 Express 和 Fiber 中如何写.
对应 Fiber 的代码如下:
服务静态文件 。
Web 应用经常会有静态文件,它们需要能够被请求,比如图片、css/js 文件等.
服务静态文件,一般基于如下几个点:
看看 Express 如何做到的:
对应 Fiber 的代码如下:
因此,我们对 /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 文件,没有该文件会报错) 。
对应的 Fiber 代码如下(注意,Fiber 对模板的支持是 https://github.com/gofiber/template 包):
本文简单介绍了 Fiber 的一些特性。因为 Fiber 是受 Express 启发实现的,因此和 Express 进行了对比。不知道你对 Fiber 有什么感觉?
下篇文章会较详细的介绍 Fiber 的一些特性.
参考 。
https://dev.to/koddr/go-fiber-by-examples-how-can-the-fiber-web-framework-be-useful-487a 。
https://docs.gofiber.io/api/fiber 。
原文链接:https://mp.weixin.qq.com/s/AUdKsBpqwOU5wJPyAP0fgw 。
最后此篇关于Go Fiber 框架系列之一: 和 Express 对比学习的文章就讲到这里了,如果你想了解更多关于Go Fiber 框架系列之一: 和 Express 对比学习的内容请搜索CFSDN的文章或继续浏览相关文章,希望大家以后支持我的博客! 。
我的 Web 应用程序在后端使用 Node.js 和 Express。当违反内容安全策略 (CSP) 时,报告 URI 报告空对象。我的后台代码如下: app.use(bodyParser.urlen
在服务器端提供静态服务的方式在 Express 中似乎非常简单: To serve static files such as images, CSS files, and JavaScript fil
var express = require('express'); var app = express(); 这就是我们创建快速应用程序的方式。但是这个'express()'是什么?它是方法还是构造函
我在尝试安装时收到以下错误 express : npm ERR! code ERR_OSSL_PEM_NO_START_LINE npm ERR! errno ERR_OSSL_PEM_NO_STAR
如 express 所述routing guide和 this answer ,我们可以创建“迷你应用程序”并从主应用程序使用它。但是我看到一段代码,它在模块中使用 app 而不是 router ap
我正在写一个 NestJS应用。现在我想安装 Express中间件 express-openapi-validator . 但是,我无法让它工作。有一个 description for how to
我看过很多类似的帖子,似乎我声明的 var1 似乎需要在其他地方传递,但我似乎无法弄清楚。 public Expression> CreateEqualNameExpression(string ma
Express(或 Connect 的)bodyParser 中间件被标记为已弃用,建议用户改用: app.use(connect.urlencoded()) app.use(connect.json
我只是想知道这种看似尴尬的配置的原因是什么(来自 Getting Started w/ Apollo Server ), const server = new ApolloServer({ //
我正在尝试在表单组中写入表单控件特定的验证错误消息。我在网上找到了几个教程和示例 ( such as this one ),概述了一个看似简单的 *ngIf div,如果在控件上检测到错误,则显示错误
我有一个简单的 Express 应用程序,托管在 AWS 上,使用无服务器框架。 我正在使用 serverless-http 包装 express 应用程序以部署到 AWS lambda 函数,并使用
我最近在 mozilla 教程的帮助下安装了 node 和 express。我正在安装应用程序生成器的下一步,但是当我运行时 npm install express-generator -g 在我的终
我遇到过两种不同的方式来定义 express、use() 中间件,我想知道它们之间是否有任何区别,或者它是否只是语法糖? 一个 const app = express(); app.use(cors(
我试图让我的 Jade 模板编写一个相对于当前 URL 的超链接 ( )。 例如,我的 View 是从 http://localhost/cats 调用的它看起来像这样: extends layou
检查 Express 文档我在下面看到了这种解决方案: app.all('/*', function(req, res) { console.log('Intercepting request
我似乎无法弄清楚如何包含多个模型。 我有三个模型。Tabs, Servers, and PointsTabs hasMany ServerServers belongsTo Tabs and hasM
我已使用Web PI安装IIS Express。在托盘中,没有IIS Express图标。如何在不使用命令行的情况下启动IIS Express?我希望IIS永久运行,因此没有命令行。 最佳答案 参见R
我不想在我的网站上使用 Jade 或 EJS。如何在不默认使用 Jade 模板的情况下创建快速站点?谢谢 最佳答案 如果您想要的是直接为静态 html 文件提供缓存资源的可能性,同时仍然能够点击“/”
Express是否支持HTTP动词“PATCH”,例如: app.patch("/api/resource", function(req, res){ ... }); 我检查了文档,对我来说似乎还不清
我正在快速服务器中运行 vue SPA。问题是当使用历史模式并刷新页面时,我得到一个 404 not found 异常。我尝试使用 connect-history-api-fallback 但不起作用
我是一名优秀的程序员,十分优秀!