全书目录

第六篇:Nuxt 完全指南 —— 全媒体演播中心宇宙

第十章:server 目录和 Nitro —— 后台机房终于不是另一个仓库了

1 分钟 435 字 第 137 / 962 个阅读单元

这是 Nuxt 和“只做前端”的 Vue 项目最关键的分水岭之一。

官方文档明确说:

  • server/ 用于注册 API 和 server handlers
  • 底层服务引擎是 Nitro
  • server/api/ 自动带 /api 前缀
  • server/routes/ 是无 /api 前缀的服务路由

目录映射:

text
server/
├── api/
│   └── hello.ts      -> /api/hello
├── routes/
│   └── rss.xml.ts    -> /rss.xml
└── middleware/
    └── log.ts
#1. 最基础的 API 路由
ts
// server/api/hello.ts
export default defineEventHandler(() => {
  return {
    hello: 'world'
  }
})

页面里直接取:

vue
<script setup lang="ts">
const { data } = await useFetch('/api/hello')
</script>

<template>
  <pre>{{ data }}</pre>
</template>
#2. 不带 /api 的路由
ts
// server/routes/rss.xml.ts
export default defineEventHandler(() => {
  return '<rss><channel><title>Software City TV</title></channel></rss>'
})

这就像:

  • server/api/ 是新闻热线窗口
  • server/routes/ 是对外播出附属产物,比如 RSS、sitemap、健康检查
#3. Nitro 到底是什么?

Nuxt 官方文档的核心意思可以概括为:

text
Nuxt = 前后台统一节目系统
Nitro = 播控与发射引擎

Nitro 负责:

  • 跑服务端逻辑
  • 构建 server output
  • 适配 Node / Serverless / Edge
  • 支撑 hybrid rendering

所以你别把 Nuxt 的“服务端能力”理解成“顺手送了你几个 API 文件”。

它背后是整套可部署的服务引擎。