大战熟女丰满人妻av-荡女精品导航-岛国aaaa级午夜福利片-岛国av动作片在线观看-岛国av无码免费无禁网站-岛国大片激情做爰视频

專注Java教育14年 全國咨詢/投訴熱線:400-8080-105
動力節(jié)點LOGO圖
始于2009,口口相傳的Java黃埔軍校
首頁 hot資訊 教你創(chuàng)建自定義Vue插件

教你創(chuàng)建自定義Vue插件

更新時間:2022-03-16 09:52:03 來源:動力節(jié)點 瀏覽1397次

構(gòu)建你的第一個插件

作為對Vue插件世界的介紹,我們將編寫一個插件,每次將組件掛載到DOM時都會寫入控制臺。

const MyPlugin = {
  // eslint-disable-next-line no-unused-vars
  install(Vue, options) {
    Vue.mixin({
      mounted() {
        console.log('Mounted!');
      }
    });
  }
};
export default MyPlugin;

Vue 插件是一個對象,其install方法帶有兩個參數(shù):

全局Vue對象

和一個包含用戶定義的對象options

Vue.mixin()用于將功能注入所有組件。在這種情況下,該mounted()方法會在組件添加到 DOM 時運行。

您的插件現(xiàn)在可以通過導(dǎo)入并調(diào)用來在 Vue 應(yīng)用程序中使用Vue.use(MyPlugin):

import Vue from 'vue'
import MyPlugin from './my-vue-plugin.js'
import App from './App.vue'
Vue.use(MyPlugin)
new Vue({
  el: '#app',
  render: h => h(App)
});

您可能想知道,為什么我不能通過調(diào)用Vue.mixin()來做到這一點main.js?原因是由于我們向 Vue 添加了不直接修改應(yīng)用程序的全局功能,因此幾乎總是最好將其拆分為一個可以隨意添加或刪除的單獨模塊。它還使插件非常容易分發(fā)。

添加能力

添加組件生命周期掛鉤或?qū)傩?/strong>

如上面“您的第一個插件”示例中所述,您可以使用Mixin添加生命周期掛鉤并對 Vue 組件進(jìn)行其他修改。

注意: Mixins 是一個相當(dāng)高級的主題,超出了本文的范圍。目前,一個充分的解釋是它們本質(zhì)上是組合到(“混合”)其他組件的組件定義。

const MyPlugin = {
  // eslint-disable-next-line no-unused-vars
  install(Vue, options) {
    Vue.mixin({
      mounted() {
        console.log('Mounted!');
      }
    });
  }
};
export default MyPlugin;

安裝應(yīng)用程序范圍的組件和指令

如果您希望打包組件或指令以作為插件分發(fā),您可以編寫如下內(nèi)容:

import MyComponent from './components/MyComponent.vue'
import MyDirective from './directives/MyDirective.js'
const MyPlugin {
  // eslint-disable-next-line no-unused-vars
  install(Vue, options) {
    Vue.component(MyComponent.name, MyComponent)
    Vue.directive(MyDirective.name, MyDirective)
  }
};
export default MyPlugin;

修改全局 Vue 對象

Vue您可以從插件修改全局對象:

const MyPlugin {
  // eslint-disable-next-line no-unused-vars
  install(Vue, options) {
    Vue.myAddedMethod = function() {
      return Vue.myAddedProperty
    }
  }
};
export default MyPlugin;

修改 Vue 實例

要在沒有任何注入機(jī)制的情況下直接向組件實例添加屬性或方法,您可以修改Vue prototype如下所示:

const MyPlugin {
  // eslint-disable-next-line no-unused-vars
  install(Vue, options) {
    Vue.prototype.$myAddedProperty = 'Example Property'
    Vue.prototype.$myAddedMethod = function() {
      return this.$myAddedProperty
    }
  }
};
export default MyPlugin;

這些屬性現(xiàn)在將添加到所有組件和 Vue 實例中。

注意:在 Vue 社區(qū)中,通常希望修改 Vue 原型的插件在任何添加的屬性前加上美元符號 ( $)。

支持自動安裝

對于在模塊系統(tǒng)之外使用您的插件的人,通常期望如果您的插件包含在 Vue 腳本標(biāo)記之后,它將自動安裝而無需調(diào)用Vue.use(). 您可以通過將這些行附加到末尾來實現(xiàn)這一點my-vue-plugin.js:

if (typeof window !== 'undefined' && window.Vue) {
  window.Vue.use(MyPlugin)
}

Vue如果已添加到全局范圍,則自動安裝。如果大家想了解更多相關(guān)知識,不妨來關(guān)注一下動力節(jié)點Java視頻,里面的視頻課程從入門到精通,通俗易懂,很適合沒有基礎(chǔ)的小白學(xué)習(xí),希望對大家能夠有所幫助。

提交申請后,顧問老師會電話與您溝通安排學(xué)習(xí)

主站蜘蛛池模板: 国产成人a∨麻豆精品 | 免费一级毛片麻豆精品 | 久久综合九色综合97_ 久久久 | 成人午夜大片免费7777 | 欧美成人久久一级c片免费 欧美成人剧情中文字幕 | 天天干天天谢 | 一级特黄a免费大片 | 999成人精品视频在线 | 久久久久一| 亚洲欧美日韩综合在线 | 中文字幕欧美日韩在线不卡 | 免费激情小视频 | 免费羞羞网站 | 91手机在线 | 四小虎免费永久观看 | 99精品国产免费久久国语 | 91福利在线观看 | 91免费视频国产 | 久久久这里只有精品免费 | 欧美日本成人 | 91在线公开视频 | 五月婷婷伊人网 | 久久综合精品不卡一区二区 | 人做人爱视频欧美在线观看 | 日韩不卡免费视频 | 综合久久久久久中文字幕 | 久久久成人网 | 手机看片日韩日韩国产在线看 | 国内揄拍国内精品久久 | 久久亚洲国产最新网站 | 亚洲天天更新 | 亚洲欧洲日韩国产一区二区三区 | 亚洲男人的天堂久久无 | 色综合天天综合网国产成人网 | 亚洲欧美中日韩 | 一级特黄特黄毛片欧美的 | 欧美日韩一区二区高清免费视频 | 久久久精品久久久久久 | 天天做夜夜做久久做狠狠 | 亚洲精品免费日日日夜夜夜夜 | 九九精品免费视频 |