当前位置: 首页 > 科技观察

【Nuxt3从入门到实战】熟练使用Nuxt插件机制,扩充强化Nuxt这把利器!

时间:2023-03-12 11:03:16 科技观察

前言大家好,我是村长,欢迎来到我的公众号村长学习前端和B站年轻村长在上一篇文章中写过Nuxt3状态分享。在这篇文章中,我们研究了nuxt3的插件系统。通过插件系统,我们可以获得nuxt实例和vue实例,从而有机会对nuxt或vue进行扩展,比如引入UI库。plugins目录Nuxt3会自动读取plugins目录下的文件并加载。我们可以在文件名上使用.server或.client前缀,使它们仅用于服务器或客户端。创建插件使用defineNuxtPlugin()注册插件:import{defineNuxtPlugin}from'#app'//唯一的参数是nuxt实例exportdefaultdefineNuxtPlugin(nuxtApp=>{//DoingsomethingwithnuxtApp})插件用例:自动提供辅助方法Acommonapplication是为NuxtApp实例提供一些额外的帮助方法。我们可以写一个插件,返回一个对象,在里面设置providekey,比如:import{defineNuxtPlugin}from'#app'exportdefaultdefineNuxtPlugin(()=>{return{provide:{hello:()=>'world'}}})使用这个助手,index.vue://会自动添加$prefixconst{$hello}=useNuxtApp();console.log($hello())插件用例:访问Vue实例如果我们要扩展Vue,通常需要访问Vue实例并引入Vue插件。在nuxt3中,您可以通过插件访问nuxtApp.vueApp.use(xxx)。下面引入vue-devui试试看。我们试图自动导入它但失败了。这里我们手动导入:npmivue-devui创建插件vue-devui-plugin.ts:import{defineNuxtPlugin}from"#app";import{Button}from"vue-devui";import'vue-devui/button/style.css'exportdefaultdefineNuxtPlugin((nuxtApp)=>{nuxtApp.vueApp.use(Button);});使用组件测试:按钮尝试扩展引入其他组件库的结果:Naive-ui直接在SFC中使用官方方式的组件报错,参见:https://github.com/TuSimple/naive-ui/issues/1427我找到了这个答案:https://github.com/TuSimple/naive-ui/issues/636#issuecomment-945990935但是这个解决方案关闭了vite,这是不是我喜欢的款式,仅供参考!import{NButton}from'naive-ui'buttonvant是可以的,但是暂时不知道怎么按需引入样式,写如下插件:可以看看有赞官方计划做一个next3+vantdemoimport{defineNuxtPlugin}from"#app";import{Button}from'vant';import'vant/lib/index.css'//如果vant这里引入/lib/button/index.css,没有作用exportdefaultdefineNuxtPlugin((nuxtApp)=>{nuxtApp.vueApp.use(Button)});element-plus官方有启动项目:https://github.com/element-plus/element-plus-nuxt-star可惜ter也是全导入的,按需导入没有解释。也明确自动介绍暂时不能支持配套视频。特地录制了Nuxt3系列从入门到实战的视频。爱看视频学习的朋友不要错过哦!https://space.bilibili.com/480140591/channel/seriesdetail?sid=456250小村长的个人空间-哔哩哔哩:https://b23.tv/rfg5t64