《手把手教您使用Nuxt3框架(Nuxt3中文开发教程)》全文电子档将分章节陆续在“nuxt”微信订阅号原创发布,敬请关注。如果您等不及,急切提前阅读和实操,可以在订阅号中有偿获取完整电子教程和后续持续更新版本。
本教程配套示例在线预览网址:https://www.dvtop.cn
Nuxt3自动扫描~/server/api、~/server/routes和~/server/middleware目录中的文件,以注册HMR支持的api和服务端处理程序。
每个文件都应该导出用defineEventHandler((event) => ......))定义的默认函数,处理程序可以直接返回JSON数据、Promise或使用event.res.end()发送响应。
server中还支持插件~/server/plugins、工具包~/server/utils、服务端存储(如redis的存取)等高级功能。其中服务端存储使用unjs/unstorage工具,支持fs (node)、localStorage (browser)、memory (universal)、overlay (universal)、http (universal)、redis、cloudflare-kv-http、cloudflare-kv-binding、github等存取方式。
注意:Nuxt3部署时可能为多实例运行,如果server中涉及操作数据库,要注意多实例并存,并发数据库连接,后台是否有共享数据等情况处理。
4.13.1 MIDDLEWARE中间件
Nuxt3将自动读取~/server/midleware中的任何文件,自动为项目创建服务端中间件。
中间件处理程序在任何其他服务端路由之前对每个请求运行,以添加或检查报头、记录请求或扩展事件的请求对象。
中间件处理程序不应返回任何内容(也不应关闭或响应请求),只应检查或扩展请求上下文或抛出错误。
注意:此中间件只会对服务端渲染路由进行处理,对于客户端渲染的页面路由不会在此中间件跟踪范围内。
| ~/server/middleware/logging.js |
| export default defineEventHandler((event) => { //显示所有服务端渲染的路由请求日志 const time = new Date().toLocaleString(); console.log(`[${time}] request url: ${event.req.url}`); //统一附加数据内容 event.context.reqTime = time; }) |
以上附加的数据reqTime会在“API接口”和“ROUTES路由”中使用。
4.13.2 API接口
api接口可以将后台数据存取操作统一封装,如果业务后台API较为简单且负载较小,可以将后台代码直接写在server的api模块中,实现前后端在一个工程中,方便开发和运维。
此部分将在“nuxt”微信订阅号原创发布,csdn同步更新,敬请关注。如果您等不及,急切提前阅读和实操,可以在订阅号中有偿获取完整电子教程和后续持续更新版本。
4.13.3 ROUTES路由
~/server/api中的文件在其路由中自动以/api作为前缀。对于添加不带/api前缀的服务端路由,可以将他们放在~/server/routes目录中。
routes和api类似,都可以作为数据API或直接在浏览器中访问,只是访问的URL前缀不同,可以根据应用场景来归类相应模块。
通过自定义routes,还可以实现proxy功能,这种方式在dev或build都能正常使用。
此部分将在“nuxt”微信订阅号原创发布,csdn同步更新,敬请关注。如果您等不及,急切提前阅读和实操,可以在订阅号中有偿获取完整电子教程和后续持续更新版本。
注意:由于nuxt3的路由约定机制,在nuxt.config.ts中配置proxy会出现404错误,并且只能在dev时使用。
本文介绍了Nuxt3框架中的服务端处理,包括自动扫描的~/server/api、~/server/routes和~/server/middleware目录。讲解了MIDDLEWARE中间件如何作为服务端路由的前置处理,API接口如何封装后台数据操作,以及ROUTES路由如何自定义实现proxy功能。同时强调了多实例运行时的并发处理和数据库连接注意事项。
3585

被折叠的 条评论
为什么被折叠?



