算是一篇入門總結,藉助一個loading的例子,來梳理一下vue的外掛
相關API
Vue.use(plugin)安裝一個vue外掛
Vue.extend(options)建立一個子類構造器
不熟悉這兩個外掛的可以在官網瞭解一下,看看一些主要的引數,然後在例子中知道我們要幹嘛
step1.思路、知道要做啥
不管是loading外掛,還是toast,或者別的根據業務來開發的外掛,基本上跑不掉UI,我們首先要知道需要做出什麼樣的效果,然後確定一個思路入手。
1.寫一個最終效果,建立對應的資料夾開發和管理外掛
2.整理所需要的API
3.確定需要的引數方法,例如loading時候的標題、控制消失的方法
4.豐富引數來定製化、比如loading的背景色、icon、字型顏色等
簡單的確定思路之後,就可以著手開發了
step2. 建立外掛模組,全域性引入
一般都是plugins資料夾下面會有index.js
檔案來管理自己開發的外掛,然後在main.js引入
import '../plugins'
注意官方文件的一句話該方法【Vue.use()】需要在呼叫 new Vue() 之前被呼叫,我們在安裝外掛的時候,會呼叫Vue.use方法,所以全域性引入我們的外掛模組,在建立例項之前會自動查詢需要註冊的自定義外掛。
外掛模組的index.js
建立loading模組資料夾
在loading/index.js裡面寫我們的外掛 一個install,一個原型掛載方法【就是我們呼叫的】 可以看到一個檔案結構,這樣可以在loading外掛模組裡面列印一下,看看全域性引入是否成功,然後index.vue就是我們的樣式模版,後面你會知道其實是一個“子類”這一步主要是三個事情:
1.建立loading模組
2.外掛模組通過Vue.use安裝自定義外掛
3.全域性引入外掛
step3.寫靜態loading效果、通過Vue.extend掛載子類
當你發現你的loading外掛可以列印出東西之後,我們就確定了關係是確定了,只需要進一步深入發展了,我們先來寫一個靜態的loading效果,無非就是一個蒙版遮罩層、一個提示文案,長得好看一些的前端會寫一個icon轉圈圈 我們的index.vue檔案可以簡單的寫一個蒙版
但是發現,那邊js檔案列印的還有,但是蒙版呢 !!!!emmmmm???再重新整理頁面的話就可以看到一個蒙版了,證明我們的子類新增成功了。【當然,你必須在頁面呼叫安裝子類 qio黑板!! 我們要把index.vue,引入我們的js檔案,來使用vue基礎構造器,並且掛載到我們的例項上才可以,那我們繼續往下走, 看看怎麼構造和掛載
this.$loadingself()
才可以】
step3.擴充套件
一個外掛是不可能這麼死板的,我們用別人的都是icon可以自定義、標題可以自定義、還有隱藏的控制方法,所以我們也不能太low,就可以根據自己的需要擴充套件了。
其實,回想起來就是在呼叫的時候讓使用者傳入引數來控制,我們根據傳參作出相應的判斷即可。 先假裝傳入一些引數
// .vue檔案裡面呼叫的時候
this.$loadingself('小r正在載入了~', {
icon: 'el-close',
success: (res) => {
...
}
})
// 定時器模擬非同步
setTimeout(() => {
this.$loadingself.hide() // 掛載一個hide用來消失
}, 2000)
複製程式碼
這段程式碼估計寫習慣的人可以是信手拈來了,但是我們傳遞進去之後,該怎麼處理? 我們需要在vue檔案中定義好需要的方法和data,然後直接改變或者是通過呼叫方法傳入也是可以的
isShow: false //來控制loading的顯示和隱藏
然後在js檔案中直接改變即可
這裡大家可以列印以下我們通過Vue.extend構造出來的這個子類,會發現我們在vue中定義的方法和data是可以直接訪問到的,引數直接就是包含元件選項的物件最後可以試試點選啊,預設載入各種情況下的loading有沒有異常bug,自己有興趣的話還可以把success的回撥,或者給loading加一個漸變動畫、或者是加入promise也可以的 本文只算是vue的外掛的新手入門demo,可以當作一個小知識點