Nuxt3创建了一个新的服务器Nitro
他附带很多功能
- 对 Node.js、浏览器、Service Worker 等的跨平台支持。
- 开箱即用的无服务器支持。
- API 路由支持。
- 自动代码拆分和异步加载的块。
- 适用于静态 + 无服务器站点的混合模式。
- 具有热模块重新加载的开发服务器。
API层
nuxt的server和middleware都是使用了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还实现了一个原生的数据访问层,支持多种数据源的驱动和本地资源处理。