挺早之前就想写个 api 接口服务,封装下自己收集的一些 api 接口,以便调用,正好最近在接触 SSR 框架,所以就使用 Nuxt3 来编写该项目。
在线地址: API-Service
开源地址: kuizuo/api-service
如果你已经了解过 Nuxt3 与运行过程,那么可以直接跳转至 实战
npx nuxi init nuxt3-app
可能会安装不上 会提示 could not fetch remote https://github.com/nuxt/starter
,大概率就是本地电脑无法访问 github,这时候科学上网都不一定好使,这里建议尝试更换下网络或设置 host 文件。
安装完毕后,根据提示安装依赖与启动项目
初始的 nuxt3 项目及其简单,甚至没有 page、components、assets 等目录。
关于 nuxt3 本文不做过多介绍,本文只对部分进行介绍。nuxt 已经发布快 1 年了,相信外面很多相关介绍文章。
Nuxt3 介绍
自动导入
nuxt.js 与 next.js 极其相像,但 nuxt 却精简许多,这归功于 nuxt 的自动导入,这可以让你无需导入像 vue 中的 ref 等等函数,导入组件等操 作,不过前提是代码文件位置要符合 nuxt 规范。如果你尝试使用过 vite 的一些自动导入插件,其效果是一样的,只不过 nuxt 都已经配置好,开箱即用。
文件路由
pages 为 nuxt 中页面所存放的位置,会将 pages 目录下的文件(.vue
, .js
, .jsx
, .ts
or .tsx
) 与路由映射,像pages/index.vue
映射为 /
,然后在 app.vue 中通过<NuxtPage/>
来展示 pages。
要注意,pages 下的文件一定要有根节点,不然在路由切换的时候可能会出现问题(事实上建议所以的 vue 组件都有根节点,虽说 vue3 允许多个根节点,但或多或少存在一定问题)
至于动态路由与嵌套路由,文档说明的比较详细了,这里就不费口舌了
服务引擎
Nuxt3 中的的 api 接口服务引擎使用的是⚗️ Nitro 的 JavaScript 服务,使用的是h3的 http 框架(相当于 hook 版的 http 框架),不过文档不是特别详细,很多东西都要琢磨。(这个框架是真的相对冷门,之前都未曾听闻过)
关于 Nuxt3 的服务具体可以看 Nuxt 3 - Server Routes,这里演示部分代码
创建一个服务,创建文件server/api/hello.ts
export default defineEventHandler(event => {
return 'hello nuxt'
})