Nuxt 官方文档把 app/plugins/ 定义成应用创建时的插件系统。
它适合做:
- 注册 Vue 插件
- 注入全局工具
- 接第三方 SDK
- 挂全局 hooks
最基础写法:
// app/plugins/hello.ts
export default defineNuxtPlugin((nuxtApp) => {
return {
provide: {
stationName: '软件城市电视台'
}
}
})页面里直接取:
<script setup lang="ts">
const { $stationName } = useNuxtApp()
</script>
<template>
<h1>{{ $stationName }}</h1>
</template>#1. 客户端专属 / 服务端专属
Nuxt 文档明确支持文件后缀:
.client.server
app/plugins/analytics.client.ts
app/plugins/request-id.server.ts这非常重要,因为不是所有插件都能双端跑。
#2. 插件别滥用
很多人学到 provide 后,容易变成:
什么都往插件里注入最后的问题是:
- 调用链难追
- 测试困难
- 依赖来源模糊
更实用的判断是:
需要在应用启动时统一安装的东西 → plugin
普通可复用逻辑 → composable
普通工具函数 → utils#3. 顶层扫描规则要记住
官方文档特别提醒:
- 插件自动扫描的是顶层文件
- 子目录里通常只有
index这种情况还能被识别 - 更深层插件要在
nuxt.config.ts里手动声明
这意味着插件系统是“可控自动化”,不是“无限制全自动”。