簡單寫一個(gè)vue插件

在vue中使用插件的源碼如下:

如果我們使用插件可以在插件內(nèi)部定義install方法或者export的就是個(gè)函數(shù)币他,看了vuex和vue-route的源碼都是使用install方法蹭沛,所以我在這里就用通常的install方法去實(shí)現(xiàn)

 function initUse (Vue) {
      Vue.use = function (plugin) {
        var installedPlugins = (this._installedPlugins || (this._installedPlugins = []));
        if (installedPlugins.indexOf(plugin) > -1) {
          return this
        } 
        // additional parameters
        var args = toArray(arguments, 1);
        args.unshift(this);
        if (typeof plugin.install === 'function') {
          plugin.install.apply(plugin, args);
        } else if (typeof plugin === 'function') {
          plugin.apply(null, args);
        }
        installedPlugins.push(plugin);
        return this
      };
    }
第一步 使用 vue init webpack vue-plugin 搭建vue腳手架項(xiàng)目
第二步赂韵,創(chuàng)建完項(xiàng)目排截,在src目錄創(chuàng)建plugin.js,代碼如下嫌蚤,在install方法里定義了一個(gè)全局方法辐益,一個(gè)實(shí)例方法:
var myPlugin = Object.create(null);
myPlugin.install = function (Vue, options) {
    // 1. 添加全局方法或?qū)傩?    Vue.myGlobalMethod = function () {
       console.log('我是全局方法')
    }

    // 2. 添加實(shí)例方法
    Vue.prototype.$myMethod = function (methodOptions) {
      console.log('我是實(shí)例方法')
    }
  }

export default myPlugin

第三步 在main.js引入,調(diào)用myGlobalMethod全局方法

import Vue from 'vue'
import App from './App'
import router from './router'
import myPlugin from './plugin'
Vue.config.productionTip = false
Vue.use(myPlugin)
Vue.myGlobalMethod()
/* eslint-disable no-new */
new Vue({
  el: '#app',
  router,
  components: { App },
  template: '<App/>'
})
第四步 在HelloWorld.vue文件created里調(diào)用$myMethod()實(shí)例方法
export default {
  name: 'HelloWorld',
  data () {
    return {
      msg: 'Welcome to Your Vue.js App'
    }
  },
  created(){
    this.$myMethod();
  }
}
第五步 運(yùn)行項(xiàng)目脱吱,查看結(jié)果智政,兩個(gè)方法都運(yùn)行成功,簡單的插件已經(jīng)完成了
image.png
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末箱蝠,一起剝皮案震驚了整個(gè)濱河市续捂,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌抡锈,老刑警劉巖疾忍,帶你破解...
    沈念sama閱讀 221,695評論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異床三,居然都是意外死亡一罩,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,569評論 3 399
  • 文/潘曉璐 我一進(jìn)店門撇簿,熙熙樓的掌柜王于貴愁眉苦臉地迎上來聂渊,“玉大人,你說我怎么就攤上這事四瘫『核裕” “怎么了?”我有些...
    開封第一講書人閱讀 168,130評論 0 360
  • 文/不壞的土叔 我叫張陵找蜜,是天一觀的道長饼暑。 經(jīng)常有香客問我,道長洗做,這世上最難降的妖魔是什么弓叛? 我笑而不...
    開封第一講書人閱讀 59,648評論 1 297
  • 正文 為了忘掉前任,我火速辦了婚禮诚纸,結(jié)果婚禮上撰筷,老公的妹妹穿的比我還像新娘。我一直安慰自己畦徘,他們只是感情好毕籽,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,655評論 6 397
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著井辆,像睡著了一般关筒。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上杯缺,一...
    開封第一講書人閱讀 52,268評論 1 309
  • 那天平委,我揣著相機(jī)與錄音,去河邊找鬼夺谁。 笑死廉赔,一個(gè)胖子當(dāng)著我的面吹牛肉微,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播蜡塌,決...
    沈念sama閱讀 40,835評論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼碉纳,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了馏艾?” 一聲冷哼從身側(cè)響起劳曹,我...
    開封第一講書人閱讀 39,740評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎琅摩,沒想到半個(gè)月后铁孵,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 46,286評論 1 318
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡房资,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,375評論 3 340
  • 正文 我和宋清朗相戀三年蜕劝,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片轰异。...
    茶點(diǎn)故事閱讀 40,505評論 1 352
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡岖沛,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出搭独,到底是詐尸還是另有隱情婴削,我是刑警寧澤,帶...
    沈念sama閱讀 36,185評論 5 350
  • 正文 年R本政府宣布牙肝,位于F島的核電站唉俗,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏配椭。R本人自食惡果不足惜虫溜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,873評論 3 333
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望颂郎。 院中可真熱鬧吼渡,春花似錦容为、人聲如沸乓序。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,357評論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽替劈。三九已至,卻和暖如春得滤,著一層夾襖步出監(jiān)牢的瞬間陨献,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,466評論 1 272
  • 我被黑心中介騙來泰國打工懂更, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留眨业,地道東北人急膀。 一個(gè)月前我還...
    沈念sama閱讀 48,921評論 3 376
  • 正文 我出身青樓,卻偏偏與公主長得像龄捡,于是被迫代替她去往敵國和親卓嫂。 傳聞我的和親對象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,515評論 2 359

推薦閱讀更多精彩內(nèi)容