什么是Fastify?Fastify是一个web框架,高度专注于以最小的开销和强大的插件架构提供最佳的开发人员体验。受Hapi和Express的启发,它是目前最快的Node框架之一。Fastify独特地将JSONSchema应用于请求的验证和响应的序列化。作者编写的fast-json-stringify包实现了比JSON.stringify快2倍的神奇效果。为什么使用Fastify100%异步:框架的核心是用异步代码实现的高性能:每秒可以处理34000个请求可扩展:Fastify通过它的钩子、插件和装饰器是完全可扩展的,我们推荐使用JSONSchema来验证路由和序列化输出日志记录:日志记录非常重要,但价格昂贵,我们选择了最好的记录器Pino对开发人员友好:该框架旨在在不牺牲性能和安全性的情况下具有很强的表现力如何安装fastify?使用npm安装:npmifastify--save使用yarn安装:yarnaddfastifyscaffoldinginstallglobalinstallnpmifastify-cli-genterdirectorycd[myproject]initializeFastifyscaffoldingfastifygeneraterunnpmstart如何创建一个简单的Fastify应用程序?声明一个“GET”请求监听客户端http://127.0.0.1:3000/Fastify返回{hello:'world'}。//加载框架并创建一个新实例constfastify=require('fastify')({//开始记录logger:true})//声明路由fastify.get('/',function(request,reply){reply.send({hello:'world'})})//启动服务!fastify.listen(3000,function(err,address){if(err){fastify.log.error(err)process.exit(1)}fastify.log.info(`serverlisteningon${address}`)})-n-我们还可以使用async/await特性来谈谈Fastify执行异步操作constfastify=require('fastify')()fastify.get('/',async(request,reply)=>{return{你好:'world'}})conststart=async()=>{try{awaitfastify.listen(3000)}catch(err){fastify.log.error(err)process.exit(1)}}start()正如在JavaScript中一切都是对象一样,在Fastify中一切都是插件。创建一个新的基本插件//my-first-pugin.jsasyncfunctionroutes(fastify,options){fastify.get('/',async(request,reply)=>{return{hello:'world'}})}module.exports=routes在服务器上注册这个插件constfastify=require('fastify')()//注册插件fastify.register(require('./our-first-route'))//listen在端口3000上,启动fastify.listen(3000,function(err,address){if(err){fastify.log.error(err)process.exit(1)}fastify.log.info(`serverlisteningon${address}`)})为了优化解析JSON和序列化JSON输出的过程,Fastify可以对数据进行序列化。我们可以在schema选项中设置response的值来加速JSON的序列化。约束200状态码的响应数据格式constopts={schema:{response:{200:{type:'object',properties:{hello:{type:'string'}}}}}}fastify.get('/',opts,async(request,reply)=>{return{hello:'world'}})
