成人免费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

2023-10-20 10:11:00

Nuxt 3.8前端

2021-06-22 06:52:46

Vite 插件機制Rollup

2009-12-11 10:29:03

PHP插件機制

2010-09-08 14:39:35

2022-09-30 15:46:26

Babel編譯器插件
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 日韩在线一区二区三区 | 亚洲福利 | 亚洲区一区二区 | 毛片网站在线观看 | 亚洲一区二区在线 | 国产精品美女久久久 | 亚洲日产精品 | av无遮挡 | www国产亚洲精品 | 欧美精品一二区 | 99久久精品一区二区毛片吞精 | 免费看一区二区三区 | 久国产视频| 欧美视频1区 | 在线一区二区国产 | 99pao成人国产永久免费视频 | 国产精品久久一区二区三区 | 亚洲国产一区二区三区 | 久久国产一区二区三区 | 久久精品亚洲精品国产欧美 | 精久久久 | 国产丝袜一区二区三区免费视频 | 久久精品97 | aaa天堂| 国产一级片免费看 | 亚洲日本免费 | 男女视频在线免费观看 | 91免费高清 | 日韩精品免费视频 | 狠狠色综合久久婷婷 | 日韩久久久久 | 国产精品久久久久一区二区三区 | 亚洲精品18 | 日韩欧美国产一区二区 | 久久精品二区亚洲w码 | 日日操av| 狠狠色网 | 日韩欧美一区二区三区 | 亚洲欧美一区二区三区国产精品 | 久久久久久久久久久久久9999 | 日韩精品专区在线影院重磅 |