成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

【Nuxt3從入門到實戰】巧用Nuxt插件機制,擴展強化Nuxt的利器!

開發 前端
本篇我們研究nuxt3的插件系統。通過插件系統,我們可以獲取nuxt實例以及vue實例,這樣我們有機會擴展nuxt或vue,比如引入一個UI庫。

[[438473]]

前言

大家好,我是村長,歡迎關注我的公眾號村長學前端和B站Young村長

上一篇寫了Nuxt3狀態共享,本篇我們研究nuxt3的插件系統。通過插件系統,我們可以獲取nuxt實例以及vue實例,這樣我們有機會擴展nuxt或vue,比如引入一個UI庫。

plugins目錄

Nuxt3會自動讀取plugins目錄下的文件并加載它們。我們可以在文件名上使用.server或者.client前綴使他們僅作用于服務端或者客戶端。

創建插件

使用defineNuxtPlugin()注冊一個插件:

  1. import { defineNuxtPlugin } from '#app' 
  2. // 唯一的參數是nuxt實例 
  3. export default defineNuxtPlugin(nuxtApp => { 
  4.   // Doing something with nuxtApp 
  5. }) 

插件用例:自動提供幫助方法

一個常見應用是給NuxtApp實例提供一些額外的幫助方法,我們可以通過編寫一個插件,返回一個對象,在里面設置providekey,比如:

  1. import { defineNuxtPlugin } from '#app' 
  2.  
  3. export default defineNuxtPlugin(() => { 
  4.   return { 
  5.     provide: { 
  6.       hello: () => 'world' 
  7.     } 
  8.   } 
  9. }) 

使用這個helper,index.vue:

  1. // 會自動加上$前綴 
  2. const { $hello } = useNuxtApp(); 
  3. console.log($hello()) 

插件用例:訪問Vue實例

如果想要擴展Vue,我們通常要訪問Vue實例,引入Vue插件。在nuxt3中可以通過插件訪問nuxtApp.vueApp.use(xxx)做到。

我們引入vue-devui試一下,前面我們曾經試圖自動導入失敗了,這里我們手動導入:

  1. npm i vue-devui 

創建一個插件vue-devui-plugin.ts:

  1. import { defineNuxtPlugin } from "#app"
  2. import { Button } from "vue-devui"
  3. import 'vue-devui/button/style.css' 
  4.  
  5. export default defineNuxtPlugin((nuxtApp) => { 
  6.   nuxtApp.vueApp.use(Button); 
  7. }); 

使用組件測試一下:

  1. <d-button>按鈕</d-button> 

擴展

引入其他組件庫嘗試結果:

  • naive-ui按官方方式在SFC中直接使用組件 引入就報錯,參見:https://github.com/TuSimple/naive-ui/issues/1427又找到了這個回答:https://github.com/TuSimple/naive-ui/issues/636#issuecomment-945990935不過這個解決方案關閉了vite,不是我喜歡的風格,僅供大家可以參考!
  1. import { NButton } from 'naive-ui' 
  1. <n-button>button</n-button> 
  • vant是可以的,不過暫時不知道樣式如何按需引入,編寫如下插件:可以看一下有贊官方有計劃做一個next3+vant的demo
  1. import { defineNuxtPlugin } from "#app"
  2. import { Button } from 'vant'
  3. import 'vant/lib/index.css' 
  4. // 這里如果引入 vant/lib/button/index.css是沒有效果的 
  5. export default defineNuxtPlugin((nuxtApp) => { 
  6.   nuxtApp.vueApp.use(Button) 
  7. }); 
  • element-plus官方有個starter項目:

https://github.com/element-plus/element-plus-nuxt-starter

只可惜也是全量引入,按需引入沒交代,也明確了自動引入暫時支持不了。

配套視頻

我專門錄制了Nuxt3從入門到實戰系列視頻,愛看視頻學習的小伙伴不要錯過!

https://space.bilibili.com/480140591/channel/seriesdetail?sid=456250

Young村長的個人空間-嗶哩嗶哩:https://b23.tv/rfg5t64

 

責任編輯:武曉燕 來源: 村長學前端
相關推薦

2021-11-29 14:18:05

Nuxt3靜態Nuxt2

2023-01-26 00:56:41

Nuxt.js存儲庫開發

2023-06-14 20:58:05

2023-06-24 22:12:23

2021-08-31 15:53:48

Nuxt 開箱服務

2023-05-18 09:00:39

Nuxt類型Nuxt 2

2019-05-06 14:51:46

Node框架前端

2023-08-27 09:08:45

CLI工具Web

2024-01-31 12:13:22

2023-06-24 23:11:07

2011-06-09 17:26:17

Qt 插件 API

2023-05-12 07:31:58

NuxtVue.js

2019-01-22 15:28:04

Javascriptvue.jsnuxt.js

2023-07-26 10:21:26

服務端組件客戶端

2022-11-17 06:17:41

Nuxt 3.0.0Vue

2021-06-22 06:52:46

Vite 插件機制Rollup

2023-10-20 10:11:00

Nuxt 3.8前端

2009-12-11 10:29:03

PHP插件機制

2010-09-08 14:39:35

2022-09-30 15:46:26

Babel編譯器插件
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 欧美日韩在线一区二区 | 国产一级在线 | av中文在线观看 | 亚洲成人a v | 国产激情偷乱视频一区二区三区 | 狠狠婷婷综合久久久久久妖精 | 奇米超碰在线 | 青青久在线视频 | 亚洲综合在线视频 | 免费一级欧美在线观看视频 | 成人午夜精品 | 日韩欧美在线视频播放 | 国产99视频精品免费视频7 | 久久国产欧美一区二区三区精品 | 一级黄色播放 | 国产乱码精品一区二区三区忘忧草 | 中文字幕在线看人 | 国产激情视频在线 | 亚洲国产精品一区二区第一页 | 国产91在线 | 中日 | 亚洲男女视频在线观看 | 国产99久久久国产精品 | 黄色成人免费在线观看 | 日韩高清中文字幕 | 欧美男男videos | 成人乱人乱一区二区三区软件 | 成人在线视频一区二区三区 | 久久综合一区 | dy天堂 | 久久成人一区 | 欧产日产国产精品99 | 一区二区日本 | 欧美成人激情 | 日韩在线不卡 | 色眯眯视频在线观看 | 91精品国产91久久久久久丝袜 | 亚洲一区国产精品 | 久久久久久国产精品 | 怡红院免费的全部视频 | 久久精品久久久久久 | 欧美在线色 |