最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

vue3自定義插件的作用場景及使用示例詳解

 更新時間:2023年02月23日 10:34:50   作者:元子不圓呀  
這篇文章主要為大家介紹了vue3自定義插件的作用場景及使用示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪

插件的作用場景

在vue2的插件那篇文章我們介紹過插件其實就是vue的增強功能。通常來為vue添加全局功能的。在vue3中插件的功能也是一樣的,只是它們在定義上有所不同。

  • 通過app.component()和app.directive()注冊一到多個全局組件或自定義指令
  • 通過app.provide()使一個資源可被注入進整個應(yīng)用
  • 向app.config.globalProperties中添加一些全局實例屬性或方法
  • 一個可能上述三種都包含了的功能庫(如vue-router)

插件的定義(注冊)

一個插件可以是一個擁有 install() 方法的對象,也可以直接是一個安裝函數(shù)本身。安裝函數(shù)會接收到安裝它的應(yīng)用實例和傳遞給 app.use() 的額外選項作為參數(shù):

下面是我定義的一個插件,為了方便管理,在src目錄下新建一個plugins文件夾,根據(jù)插件的功能,文件夾里面可以放置很多js文件。

export  default {
  install: (app, options) => {
    // 注入一個全局可用的方法
    app.config.globalProperties.$myMethod = () => {
      console.log('這是插件的全局方法');
    }
    // 添加全局指令
    app.directive('my-directive', {  
      bind (el, binding, vnode, oldVnode) {  
        console.log('這是插件的全局指令'); 
      }   
    })  
  }
}

插件的安裝

我們一般是安裝在全局的,這樣方便多個組件使用。

// main.js
import { createApp } from 'vue'
import App from './App.vue'
import ElementPlus from 'element-plus'
import 'element-plus/dist/index.css'
import myPlugin from './plugins/myPlugin'
createApp(App).use(ElementPlus).use(myPlugin).mount('#app');

插件的使用

在組件中使用

<template>
  <div v-my-directive></div>
  <el-button @click="clicFunc">測試按鈕</el-button>
</template>
<script setup>
import { getCurrentInstance } from 'vue';
const ctx = getCurrentInstance();
console.log('ctx', ctx);
const clicFunc = ctx.appContext.app.config.globalProperties.$myMethod();
</script>

效果如下:

插件中的Provide/inject

在插件中,還可以通過provide為插件用戶提供一些內(nèi)容,比如像下面這樣,將options參數(shù)再傳給插件用戶,也就是組件中。

// myPlugin.js
export  default {
  install: (app, options) => {
    // 注入一個全局可用的方法
    app.config.globalProperties.$myMethod = () => {
      console.log('這是插件的全局方法');
    }
    // 添加全局指令
    app.directive('my-directive', {  
      bind () {  
        console.log('這是插件的全局指令'); 
      }   
    })
    // 將options傳給插件用戶
    app.provide('options', options);
  }
}
// main.js
import { createApp } from 'vue'
import App from './App.vue'
import ElementPlus from 'element-plus'
import 'element-plus/dist/index.css'
import myPlugin from './plugins/myPlugin'
createApp(App).use(ElementPlus).use(myPlugin, {
  hello: '你好呀'
}).mount('#app');
// 組件中使用
<template>
  <div v-my-directive></div>
  <el-button @click="clicFunc">測試按鈕</el-button>
</template>
<script setup>
import { getCurrentInstance, inject } from 'vue';
const ctx = getCurrentInstance();
const hello = inject('options');
console.log('hello', hello);
const clicFunc = ctx.appContext.app.config.globalProperties.$myMethod();
</script>

效果如下:

以上就是vue3自定義插件的作用場景及使用示例詳解的詳細內(nèi)容,更多關(guān)于vue3自定義插件作用的資料請關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • 使用Electron打包vue文件變成exe應(yīng)用程序的全過程

    使用Electron打包vue文件變成exe應(yīng)用程序的全過程

    這篇文章主要給大家介紹了使用Electron打包vue文件變成exe應(yīng)用程序的全過程,文中通過代碼示例和圖文結(jié)合的方式給大家講解的非常詳細,具有一定的參考價值,需要的朋友可以參考下
    2024-01-01
  • vue 使用eventBus實現(xiàn)同級組件的通訊

    vue 使用eventBus實現(xiàn)同級組件的通訊

    這篇文章主要介紹了vue 使用eventBus實現(xiàn)同級組件的通訊,需要的朋友可以參考下
    2018-03-03
  • vue中使用scrollTo沒有效果的完美解決方法

    vue中使用scrollTo沒有效果的完美解決方法

    這篇文章主要介紹了在vue中使用scrollTo沒有效果的解決方法,本文給大家分享具體操作步驟,在這里需要注意scrollTo要作用在可滾動的元素上,不然不生效,scrollTop就會一直為0,需要的朋友可以參考下
    2023-10-10
  • 使用vue3+ts+setup獲取全局變量getCurrentInstance的方法實例

    使用vue3+ts+setup獲取全局變量getCurrentInstance的方法實例

    這篇文章主要給大家介紹了關(guān)于使用vue3+ts+setup獲取全局變量getCurrentInstance的相關(guān)資料,文中通過實例代碼介紹的非常詳細,對大家學(xué)習(xí)或者使用vue3具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2022-08-08
  • el-date-picker默認(rèn)結(jié)束為當(dāng)前時分秒的操作方法

    el-date-picker默認(rèn)結(jié)束為當(dāng)前時分秒的操作方法

    在element?ui中的日期時間選擇組件中默認(rèn)是00:00,現(xiàn)在需求是點擊默認(rèn)結(jié)束時間為當(dāng)前時分秒,查了很多資料寫的都不準(zhǔn)確?,今天給大家分享el-date-picker默認(rèn)結(jié)束為當(dāng)前時分秒的操作方法,感興趣的朋友一起看看吧
    2024-01-01
  • Vue引入Stylus知識點總結(jié)

    Vue引入Stylus知識點總結(jié)

    在本篇文章里小編給各位整理的是一篇關(guān)于Vue引入Stylus知識點總結(jié)內(nèi)容,有需要的朋友們可以學(xué)習(xí)參考下。
    2020-01-01
  • Vue表格首列相同數(shù)據(jù)合并實現(xiàn)方法

    Vue表格首列相同數(shù)據(jù)合并實現(xiàn)方法

    這篇文章主要介紹了Vue實現(xiàn)表格首列相同數(shù)據(jù)合并的方法,本文通過實例代碼給大家介紹的非常詳細,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2023-04-04
  • vue踩坑之在input中使用filters局部過濾器問題

    vue踩坑之在input中使用filters局部過濾器問題

    這篇文章主要介紹了vue踩坑之在input中使用filters局部過濾器問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2023-11-11
  • vue使用qrcode生成二維碼的方法

    vue使用qrcode生成二維碼的方法

    這篇文章給大家介紹了vue使用qrcode生成二維碼的方法,在Vue中實現(xiàn)二維碼生成需要使用第三方庫來處理生成二維碼的邏輯,常用的庫有qrcode和vue-qrcode,所以接下來小編將給大家介紹vue?qrcode生成二維碼的方法示例,需要的朋友可以參考下
    2024-01-01
  • Vue動態(tài)組件實例解析

    Vue動態(tài)組件實例解析

    讓多個組件使用同一個掛載點,并動態(tài)切換,這就是動態(tài)組件。這篇文章主要介紹了Vue動態(tài)組件 ,需要的朋友可以參考下
    2017-08-08

最新評論

罗平县| 凤凰县| 黄梅县| 桃园县| 安丘市| 乐清市| 扎赉特旗| 垣曲县| 揭西县| 崇明县| 若羌县| 盐城市| 剑川县| 哈密市| 福安市| 福州市| 正蓝旗| 儋州市| 射洪县| 全椒县| 游戏| 巫山县| 博兴县| 大安市| 彭州市| 车险| 洛阳市| 大田县| 新宾| 邵东县| 浦城县| 宜川县| 辉县市| 宁阳县| 台东县| 得荣县| 永川市| 湖南省| 泰顺县| 涿州市| 湄潭县|