fastify.com.cn
Open in
urlscan Pro
2606:4700:3030::ac43:8da5
Public Scan
URL:
https://fastify.com.cn/
Submission: On June 14 via api from US — Scanned from DE
Submission: On June 14 via api from US — Scanned from DE
Form analysis
0 forms found in the DOMText Content
Your Docusaurus site did not load properly. A very common reason is a wrong site baseUrl configuration. Current configured baseUrl = / (default value) We suggest trying baseUrl = / 跳至主要内容 主页文档生态系统基准采用者贡献资源 最新(v4.26.x) * 最新(v4.26.x) * v4.26.x * v4.25.x * v4.24.x * v4.23.x * v4.22.x * v4.21.x * v4.20.x * v4.19.x * v4.18.x * v4.17.x * v4.16.x * v4.15.x * v4.14.x * v4.13.x * v4.12.x * v4.11.x * v4.10.x * v4.9.x * v4.8.x * v4.7.x * v4.6.x * v4.5.x * v4.4.x * v4.3.x * v4.2.x * v4.1.x * v4.0.x * v3.29.x * v2.15.x * v1.14.x ⌘K 快速且低开销的 WEB 框架,适用于 NODE.JS 标星 Fork 原因 高效的服务器意味着更低的设施成本、在负载下的更好响应能力和满意的用户。如何有效地处理服务器资源,既能提供尽可能多的请求,又不牺牲安全验证和便捷的开发? 使用 Fastify。Fastify 是一款高度专注于在最低开销下提供最佳开发者体验并拥有强大插件架构的 Web 框架。它受到 Hapi 和 Express 的启发,据我们所知,它是市面上最快的 Web 框架之一。 谁在使用 FASTIFY? Fastify 自豪地为众多组织和产品提供支持。 发现 更多使用 Fastify 的组织。您想让您的组织 在此处展示 吗? * * * * * * * * * * * * 核心功能 这些是构建 Fastify 的主要功能和原则 * 高性能:据我们所知,Fastify 是城中最快的 Web 框架之一,根据代码复杂性,我们可以每秒处理多达 3 万个请求。 * 可扩展:Fastify 通过其钩子、插件和装饰器完全可扩展。 * 基于模式:即使不是强制性的,我们也建议使用 JSON 模式 来验证你的路由并序列化你的输出,在内部,Fastify 将模式编译成高性能函数。 * 日志记录:日志非常重要,但成本很高;我们选择了最好的记录器来几乎消除此成本,Pino! * 对开发者友好:该框架旨在非常富有表现力,并在日常使用中帮助开发者,而不会牺牲性能和安全性。 * TypeScript 准备就绪:我们努力维护 TypeScript 类型声明文件,以便我们可以支持不断增长的 TypeScript 社区。 快速入门 通过 NPM 获取 Fastify npm install fastify 然后创建 server.js 并添加以下内容 * ESM * CJS // Import the framework and instantiate it import Fastify from 'fastify' const fastify = Fastify({ logger: true }) // Declare a route fastify.get('/', async function handler (request, reply) { return { hello: 'world' } }) // Run the server! try { await fastify.listen({ port: 3000 }) } catch (err) { fastify.log.error(err) process.exit(1) } // Require the framework and instantiate it const fastify = require('fastify')({ logger: true }) // Declare a route fastify.get('/', function handler (request, reply) { reply.send({ hello: 'world' }) }) // Run the server! fastify.listen({ port: 3000 }, (err) => { if (err) { fastify.log.error(err) process.exit(1) } }) 最后,使用以下命令启动服务器 node server 并使用以下命令对其进行测试 curl http://localhost:3000 使用 CLI 获取 fastify-cli 来创建一个新的脚手架项目 npm install --global fastify-cli fastify generate myproject 请求/响应验证和钩子 Fastify 的功能远不止这些。例如,你可以轻松地使用 JSON 模式提供输入和输出验证,并在执行处理程序之前执行特定操作 * ESM * CJS import Fastify from 'fastify' const fastify = Fastify({ logger: true }) fastify.route({ method: 'GET', url: '/', schema: { // request needs to have a querystring with a `name` parameter querystring: { type: 'object', properties: { name: { type: 'string'} }, required: ['name'], }, // the response needs to be an object with an `hello` property of type 'string' response: { 200: { type: 'object', properties: { hello: { type: 'string' } } } } }, // this function is executed for every request before the handler is executed preHandler: async (request, reply) => { // E.g. check authentication }, handler: async (request, reply) => { return { hello: 'world' } } }) try { await fastify.listen({ port: 3000 }) } catch (err) { fastify.log.error(err) process.exit(1) } const fastify = require('fastify')({ logger: true }) fastify.route({ method: 'GET', url: '/', schema: { // request needs to have a querystring with a `name` parameter querystring: { type: 'object', properties: { name: { type: 'string'} }, required: ['name'], }, // the response needs to be an object with an `hello` property of type 'string' response: { 200: { type: 'object', properties: { hello: { type: 'string' } } } } }, // this function is executed for every request before the handler is executed preHandler: (request, reply, done) => { // E.g. check authentication done() }, handler: (request, reply) => { reply.send({ hello: 'world' }) } }) fastify.listen({ port: 3000 }, (err) => { if (err) { fastify.log.error(err) process.exit(1) } }) TYPESCRIPT 支持 Fastify 附带一个类型文件,但你可能需要安装 @types/node,具体取决于你使用的 Node.js 版本。 以下示例创建一个 http 服务器。 我们传递了所用 http 版本的相关类型。通过传递类型,我们可以正确地键入对路由中底层 http 对象的访问。 如果使用 http2,我们将传递 <http2.Http2Server, http2.Http2ServerRequest, http2.Http2ServerResponse>。 对于 https 传递 http2.Http2SecureServer 或 http.SecureServer 而不是 Server。 这确保在服务器处理程序中,我们还将获得带有 reply.res 上正确类型的 http.ServerResponse。 * TypeScript import Fastify, { FastifyInstance, RouteShorthandOptions } from 'fastify' import { Server, IncomingMessage, ServerResponse } from 'http' const server: FastifyInstance = Fastify({}) const opts: RouteShorthandOptions = { schema: { response: { 200: { type: 'object', properties: { pong: { type: 'string' } } } } } } server.get('/ping', opts, async (request, reply) => { return { pong: 'it worked!' } }) const start = async () => { try { await server.listen({ port: 3000 }) const address = server.server.address() const port = typeof address === 'string' ? address : address?.port } catch (err) { server.log.error(err) process.exit(1) } } start() 访问 文档 了解更多关于 Fastify 提供的所有功能的信息。 一个快速的 WEB 框架 利用我们在 Node.js 性能方面的经验,Fastify 从头开始构建,以尽可能快。查看我们的 基准测试部分,将 Fastify 性能与其他常见 Web 框架进行比较。 查看我们的基准测试 生态系统 Fastify 拥有不断发展的插件生态系统。可能已经有一个用于你最喜欢的数据库或模板语言的插件。查看 生态系统页面 浏览当前可用的插件。找不到你正在寻找的插件?没问题,编写一个非常容易! 探索 291 个插件 认识团队 按字母顺序排列 主要维护者 Matteo Collina Tomas Della Vedova Manuel Spigolon James Sumners 合作者 Aras Abbasi Tommaso Allevi Ayoub El Khattabi David Clements Gürgün Dayıoğlu Dustin Deus Carlos Fuentes Rafael Gonzaga Vincent Le Goff Luciano Mammino Salman Mitha Igor Savin Evan Shortiss Maksim Sinik Frazer Smith 过去合作者 Ethan Arrowood Çağatay Çalı Cemre Mengu Trivikram Kamat Nathan Woltman 致谢 此项目由以下机构赞助 * NearForm * Platformatic 过去赞助商 * LetzDoIt * Microsoft 还要感谢 * 令人惊叹的 Fastify 社区 由以下机构托管 我们是 OpenJS Foundation 的大型项目 文档 * 入门 社区 * Stack Overflow * Discord * Twitter 更多 * GitHub Fastify,版权所有 © 2016-2024 OpenJS Foundation 和 Fastify 团队,获得 MIT 许可