【Nuxt3系列十九】关键概念-后端服务引擎Nitro

721 阅读1分钟

Nuxt3创建了一个新的服务器Nitro

他附带很多功能

  • 对 Node.js、浏览器、Service Worker 等的跨平台支持。
  • 开箱即用的无服务器支持。
  • API 路由支持。
  • 自动代码拆分和异步加载的块。
  • 适用于静态 + 无服务器站点的混合模式。
  • 具有热模块重新加载的开发服务器。

API层

nuxt的servermiddleware都是使用了Nitro的H3组件来实现的

核心功能是:

  • 直接将一个对象或者数组自动的转为一个json response返回
  • 返回promise对象
  • 解析body、cookie处理、重定向、header处理等

这里是H3的官方文档

我想吐槽有一下这种脑残命名,H3原来是H(TTP)的意思,H后面有三个字母。。跟K8S、i18n一样

直接调用API

假设我这个Nuxt是全栈项目,也就是前端后端都是用Nuxt(并没有,我会用springboot)

前面说过了$fetch,在执行的时候,会因为运行环境不同而有不同的执行逻辑

  • 客户端运行:会发起http请求后端
  • 服务端运行:直接调用后端的api,省略掉一次额外的http调用

类型化的API路由

当使用server/api或者是server/middleware的时候,只要你是返回一个值而不是使用res.end()发送响应的时候,Nitro就会为这些路由生成类型定义。 在使用$fetch()useFetch() 时,你可以访问这些类型定义。

独立运行

以前在Nuxt的时候,server并不是独立运行的,是需要Nuxt的部分核心代码的。这种方式很容易出错。

而现在,Nitro是独立出来的,放在node_modules下面的。当你执行构建的时候,赎出来的文件是包括你Nuxt运行的所有的文件的,包括Nitro

这使得Nuxt成为一个架构合理的混合框架。并且,Nuxt还实现了一个原生的数据访问层,支持多种数据源的驱动和本地资源处理。