Nuxt Bridge 提供对 Composition API 语法的支持。它专门设计为与 Nuxt 3 保持一致。因此,如果你之前已经在使用 Composition API,启用 Nuxt Bridge 时需要执行一些额外步骤。
@vue/composition-api。@nuxtjs/composition-api(并且从 nuxt.config 的 modules 中移除)。@vue/composition-api如果你之前只使用了 @vue/composition-api 而没有使用 @nuxtjs/composition-api,那么事情非常简单。
- import Vue from 'vue'
- import VueCompositionApi from '@vue/composition-api'
-
- Vue.use(VueCompositionApi)
@vue/composition-api 的显式导入,改由 Nuxt Bridge 为你自动导入。@nuxtjs/composition-api 迁移Nuxt Bridge 对 Composition API 的实现与 @nuxtjs/composition-api 略有不同,并提供了不同的 composable(旨在与 Nuxt 3 提供的 composable 保持一致)。
由于某些 composable 已被移除且尚无替代方案,这将是一个稍微复杂一些的过程。
@nuxtjs/composition-api/module你不必立即更新你的导入——Nuxt Bridge 将为你当前的大多数导入自动提供“兼容层”,以便你有时间迁移到新的、与 Nuxt 3 兼容的 composable,但有以下例外:
withContext 已被移除。见 下文。useStatic 已被移除。当前没有替代方案。如果你对此有使用场景,请随时发起讨论。reqRef 和 reqSsrRef 现在已完全移除。请按照下面关于 ssrRef 的说明进行替换。bridge.capiimport { defineNuxtConfig } from '@nuxt/bridge'
export default defineNuxtConfig({
bridge: {
capi: true,
nitro: false, // If migration to Nitro is complete, set to true
},
})
对于你从 @nuxtjs/composition-api 使用的每个其他 composable,请按照下面的步骤进行。
$fetchState 和 $fetch 已被移除。
const {
- $fetch,
- $fetchState,
+ fetch,
+ fetchState,
} = useFetch(() => { posts.value = await $fetch('/api/posts') })
defineNuxtMiddleware这是一个类型帮助的存根函数,现在已被移除。
移除 defineNuxtMiddleware 包装:
- import { defineNuxtMiddleware } from '@nuxtjs/composition-api`
- export default defineNuxtMiddleware((ctx) => {})
+ export default (ctx) => {}
如需 TypeScript 支持,你可以使用 @nuxt/types:
import type { Middleware } from '@nuxt/types'
export default <Middleware> function (ctx) { }
defineNuxtPlugin这是一个类型帮助的存根函数,现在已被移除。
你也可以继续使用 Nuxt 2 风格的插件,只需移除该函数(如同 defineNuxtMiddleware)。
移除 defineNuxtPlugin 包装:
- import { defineNuxtPlugin } from '@nuxtjs/composition-api'
- export default defineNuxtPlugin((ctx, inject) => {})
+ export default (ctx, inject) => {}
如需 TypeScript 支持,你可以使用 @nuxt/types:
import type { Plugin } from '@nuxt/types'
export default <Plugin> function (ctx, inject) {}
useRouter 和 useRouteNuxt Bridge 通过 useRouter 和 useRoute 为这些 composable 提供了直接替代。
唯一的关键区别是 useRoute 不再返回一个 computed 属性。
- import { useRouter, useRoute } from '@nuxtjs/composition-api'
const router = useRouter()
const route = useRoute()
- console.log(route.value.path)
+ console.log(route.path)