天天看點

Vue插件寫、用詳解(附demo)

簡單來說,插件就是指對vue的功能的增強或補充。

比如說,讓你在每個單頁面的元件裡,都可以調用某個方法,或者共享使用某個變量,或者在某個方法之前執行一段代碼等

總體流程應該是:

【聲明插件】——【寫插件】——【注冊插件】——【使用插件】

寫插件和聲明插件是同步的,然後注冊到vue對象中(不用擔心重複注冊),最後在寫vue元件的時候使用寫的插件

先寫一個js檔案,這個js檔案就是插件檔案,裡面的基本内容如下:

其中install的第一個參數vue表示的是vue的執行個體,第二個參數表示的是一些設定選項。

vue執行個體好了解,就是vue對象。

而options設定選項就是指,在調用這個插件時,可以傳一個對象。

例如這個對象有一個屬性float,然後在寫插件的一個方法/變量時,我需要輸出一個數字,然後寫一個if判斷語句,

假如options.float為true時,輸出浮點數;

假如為false或undefined(即沒傳參)時,輸出為整數。

具體怎麼添加,之後再說。

如果使用過vue-router,就很好了解,通過import引入後,然後通過 <code>vue.use(插件名)</code> 注冊插件;

例如,我們通常在main.js裡引入各種東西,并且元件的根執行個體也在這裡

如代碼中注釋所說,關鍵是通過import導入service檔案,然後在建立根元件之前,讓vue對象通過use方法來注冊插件service。

通過這樣簡單的兩步,就可以使用插件了。

按照官方文檔,寫插件有四種方法,先給出官方的代碼:

先給出最常用的:【4. 添加執行個體方法】的寫法和使用方法

1、核心思想:

2、寫:

3、用:

假設有這樣一個元件:

我們便可以通過點選button按鈕,讓num的值,在每次點選都翻倍了。

4、假如添加的是屬性:

例如:

會發生什麼事情呢?

也就是說,當插件提供一個屬性時,元件裡沒這個屬性,就用插件的屬性;元件有,就用元件自己的。

就是給vue對象添加一個屬性。

初次接觸很容易和上面3.1弄混,實際上,3.1是給元件裡使用的,而3.2是給vue對象使用的。

例如,假如添加一個方法test(),那麼:

使用時會執行對應的方法,比如這裡就是alert彈窗

4、其他:

别問我如果和vue本身屬性同名會發生什麼事情,我沒試過=.=

就像寫vue元件時,那樣寫,方法名保持一緻,其會在執行元件對應的方法名之前執行。

然後這裡的代碼會在每個元件(包括根元件)的created執行之前執行。

可以自行在每個元件的created方法裡寫一段console.log來檢視測試

可以和【執行個體屬性】配合使用,用于調試或者控制某些功能

【注入給非vue執行個體本身就有的方法】:

假如是寫給例如methods屬性的某個方法,例如以下注入:

那麼,元件裡若本身有test方法,并 不會 先執行插件的test方法,再執行元件的test方法。

而是隻執行其中一個,并且優先執行元件本身的同名方法。這點需要注意

不需要手動調用,在執行對應的方法時會被自動調用的(并且先調用插件裡的,再調用元件本身的)

添加方法和正常添加方法類似,甚至幾乎一樣。

可以添加【自定義指令】、【過濾器】、【過渡等】,這裡以【過濾器】為例

和正常使用一樣用就行了,so easy。例如:

可以用這個找各種有意思的功能,作為插件寫好,然後需要的地方導入就行,超級友善!

附一個有簡單功能的示例demo,提供參考使用

繼續閱讀