欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 教育 > 高考 > Nuxt3【插件】plugins 详解

Nuxt3【插件】plugins 详解

2024/10/24 1:53:44 来源:https://blog.csdn.net/weixin_41192489/article/details/141270714  浏览:    关键词:Nuxt3【插件】plugins 详解

创建插件

  • 只有一个参数 nuxtApp
  • 可以使用组合式 API以及工具函数,但若一个组合式依赖于稍后注册的另一个插件,可能无法正常工作。若一个组合式依赖于Vue.js的生命周期,也无法正常工作。

如 plugins/hello.ts

export default defineNuxtPlugin({name: 'my-plugin',enforce: 'pre', // 或 'post'async setup (nuxtApp) {// 这相当于一个普通的功能性插件},hooks: {// 这里可以直接注册Nuxt应用运行时钩子'app:created'() {const nuxtApp = useNuxtApp()// }},env: {// 如果不希望插件在仅渲染服务器端或孤立组件时运行,请将此值设置为`false`。islands: true}
})

使用Vue插件

  1. 先安装Vue插件的依赖
pnpm add -D vue-gtag-next
  1. 创建一个插件文件 plugins/vue-gtag.client.ts
import VueGtag, { trackRouter } from 'vue-gtag-next'export default defineNuxtPlugin((nuxtApp) => {nuxtApp.vueApp.use(VueGtag, {property: {id: 'GA_MEASUREMENT_ID'}})trackRouter(useRouter())
})

自定义Vue指令

plugins/my-directive.ts

export default defineNuxtPlugin((nuxtApp) => {nuxtApp.vueApp.directive('focus', {mounted (el) {el.focus()},getSSRProps (binding, vnode) {// 你可以在这里提供SSR特定的propsreturn {}}})
})

如果你注册了一个Vue指令,你必须在客户端和服务器端都注册它,除非你只在一个端口渲染时使用它。如果这个指令只在客户端有意义,你可以将它移动到~/plugins/my-directive.client.ts,并在~/plugins/my-directive.server.ts中为服务器端提供一个’存根’指令。

自动注册插件

plugins 目录中的顶层文件会被自动注册为 Nuxt 的插件

在nuxt.config.ts 中添加配置,可支持自动注册子目录中的插件

export default defineNuxtConfig({plugins: ['~/plugins/bar/baz','~/plugins/bar/foz']
})

插件的注册顺序

默认按文件名的字符串顺序注册,可添加数字前缀自定义顺序(注意,单个数字前需加 0 ,因为字符串中 102 的前面)

plugins/| - 01.myPlugin.ts| - 02.myOtherPlugin.ts

插件的加载策略

默认情况下,Nuxt按顺序加载插件。你可以将插件定义为parallel,这样Nuxt在加载下一个插件之前不会等待插件执行结束。
plugins/hello.ts

export default defineNuxtPlugin({name: 'my-plugin',parallel: true,async setup (nuxtApp) {// 下一个插件将立即执行}
})

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com