精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

Vue.js 插件開發詳解

開發 開發工具
隨著 Vue.js 越來越火,Vue.js 的相關插件也在不斷的被貢獻出來,數不勝數。比如官方推薦的 vue-router、vuex 等,都是非常優秀的插件。但是我們更多的人還只停留在使用的階段,比較少自己開發。

 

[[195748]]

隨著 Vue.js 越來越火,Vue.js 的相關插件也在不斷的被貢獻出來,數不勝數。比如官方推薦的 vue-router、vuex 等,都是非常優秀的插件。但是我們更多的人還只停留在使用的階段,比較少自己開發。所以接下來會通過一個簡單的 vue-toast 插件,來了解掌握插件的開發和使用。

認識插件

想要開發插件,先要認識一個插件是什么樣子的。

Vue.js 的插件應當有一個公開方法 install 。這個方法的***個參數是 Vue 構造器 , 第二個參數是一個可選的選項對象:

  1. MyPlugin.install = function (Vue, options) { 
  2.   Vue.myGlobalMethod = function () {  // 1. 添加全局方法或屬性,如: vue-custom-element 
  3.     // 邏輯... 
  4.   } 
  5.   Vue.directive('my-directive', {  // 2. 添加全局資源:指令/過濾器/過渡等,如 vue-touch 
  6.     bind (el, binding, vnode, oldVnode) { 
  7.       // 邏輯... 
  8.     } 
  9.     ... 
  10.   }) 
  11.   Vue.mixin({ 
  12.     created: function () {  // 3. 通過全局 mixin方法添加一些組件選項,如: vuex 
  13.       // 邏輯... 
  14.     } 
  15.     ... 
  16.   }) 
  17.   Vue.prototype.$myMethod = function (options) {  // 4. 添加實例方法,通過把它們添加到 Vue.prototype 上實現 
  18.     // 邏輯... 
  19.   } 

接下來要講到的 vue-toast 插件則是通過添加實例方法實現的。我們先來看個小例子。先新建個js文件來編寫插件:toast.js

  1. // toast.js 
  2. var Toast = {}; 
  3. Toast.install = function (Vue, options) { 
  4.     Vue.prototype.$msg = 'Hello World'
  5. module.exports = Toast; 

在 main.js 中,需要導入 toast.js 并且通過全局方法 Vue.use() 來使用插件:

  1. // main.js 
  2. import Vue from 'vue'
  3. import Toast from './toast.js'
  4. Vue.use(Toast); 

然后,我們在組件中來獲取該插件定義的 $msg 屬性。

  1. // App.vue 
  2. export default { 
  3.     mounted(){ 
  4.         console.log(this.$msg);         // Hello World 
  5.     } 

可以看到,控制臺成功的打印出了 Hello World 。既然 $msg 能獲取到,那么我們就可以來實現我們的 vue-toast 插件了。

開發 vue-toast

需求:在組件中通過調用 this.$toast(‘網絡請求失敗’) 來彈出提示,默認在底部顯示。可以通過調用 this.$toast.top() 或 this.$toast.center() 等方法來實現在不同位置顯示。

整理一下思路,彈出提示的時候,我可以在 body 中添加一個 div 用來顯示提示信息,不同的位置我通過添加不同的類名來定位,那就可以開始寫了。

  1. // toast.js 
  2. var Toast = {}; 
  3. Toast.install = function (Vue, options) { 
  4.     Vue.prototype.$toast = (tips) => { 
  5.         let toastTpl = Vue.extend({     // 1、創建構造器,定義好提示信息的模板 
  6.             template: '<div class="vue-toast">' + tips + '</div>' 
  7.         }); 
  8.         let tpl = new toastTpl().$mount().$el;  // 2、創建實例,掛載到文檔以后的地方 
  9.         document.body.appendChild(tpl);     // 3、把創建的實例添加到body中 
  10.         setTimeout(function () {        // 4、延遲2.5秒后移除該提示 
  11.             document.body.removeChild(tpl); 
  12.         }, 2500) 
  13.     } 
  14. module.exports = Toast; 

好像很簡單,我們就實現了 this.$toast() ,接下來顯示不同位置。

  1. // toast.js 
  2. ['bottom''center''top'].forEach(type => { 
  3.     Vue.prototype.$toast[type] = (tips) => { 
  4.         return Vue.prototype.$toast(tips,type) 
  5.     } 
  6. }) 

這里把 type 傳給 $toast 在該方法里進行不同位置的處理,上面說了通過添加不同的類名(toast-bottom、toast-top、toast-center)來實現,那 $toast 方法需要小小修改一下。

  1. Vue.prototype.$toast = (tips,type) => {     // 添加 type 參數 
  2.     let toastTpl = Vue.extend({             // 模板添加位置類 
  3.         template: '<div class="vue-toast toast-'+ type +'">' + tips + '</div>' 
  4.     }); 
  5.     ... 

好像差不多了。但是如果我想默認在頂部顯示,我每次都要調用 this.$toast.top() 好像就有點多余了,我能不能 this.$toast() 就直接在我想要的地方呢?還有我不想要 2.5s 后才消失呢?這時候注意到 Toast.install(Vue,options) 里的 options 參數,我們可以在 Vue.use() 通過 options 傳進我們想要的參數。***修改插件如下:

  1. var Toast = {}; 
  2. Toast.install = function (Vue, options) { 
  3.     let opt = { 
  4.         defaultType:'bottom',   // 默認顯示位置 
  5.         duration:'2500'         // 持續時間 
  6.     } 
  7.     for(let property in options){ 
  8.         opt[property] = options[property];  // 使用 options 的配置 
  9.     } 
  10.     Vue.prototype.$toast = (tips,type) => { 
  11.         if(type){ 
  12.             opt.defaultType = type;         // 如果有傳type,位置則設為該type 
  13.         } 
  14.         if(document.getElementsByClassName('vue-toast').length){ 
  15.             // 如果toast還在,則不再執行 
  16.             return
  17.         } 
  18.         let toastTpl = Vue.extend({ 
  19.             template: '<div class="vue-toast toast-'+opt.defaultType+'">' + tips + '</div>' 
  20.         }); 
  21.         let tpl = new toastTpl().$mount().$el; 
  22.         document.body.appendChild(tpl); 
  23.         setTimeout(function () { 
  24.             document.body.removeChild(tpl); 
  25.         }, opt.duration) 
  26.     } 
  27.     ['bottom''center''top'].forEach(type => { 
  28.         Vue.prototype.$toast[type] = (tips) => { 
  29.             return Vue.prototype.$toast(tips,type) 
  30.         } 
  31.     }) 
  32. module.exports = Toast; 

這樣子一個簡單的 vue 插件就實現了,并且可以通過 npm 打包發布,下次就可以使用 npm install 來安裝了。

源碼地址:vue-toast

【本文為51CTO專欄作者“林鑫”的原創稿件,轉載請通過微信公眾號聯系作者獲取授權】

戳這里,看該作者更多好文

責任編輯:武曉燕 來源: 51CTO專欄
相關推薦

2024-05-13 08:04:26

Vue.jsWeb應用程序

2016-11-01 19:10:33

vue.js前端前端框架

2024-02-04 13:36:00

2018-04-04 10:32:13

前端JavascriptVue.js

2016-11-04 19:58:39

vue.js

2023-03-29 14:25:08

Vue.js前端框架

2017-09-14 13:48:20

Vue.js機制應用

2022-01-19 22:18:56

Vue.jsVue SPA開發

2017-07-20 11:18:22

Vue.jsMVVMMVC

2017-07-11 18:00:21

vue.js數據組件

2021-01-22 11:47:27

Vue.js響應式代碼

2020-09-07 14:40:20

Vue.js構建工具前端

2017-07-14 10:10:08

Vue.jsMixin

2016-09-21 13:32:13

JavascriptWeb前端

2020-09-16 06:12:30

Vue.js 3.0Suspense組件前端

2017-08-30 17:10:43

前端JavascriptVue.js

2024-01-18 11:50:28

2019-07-26 14:40:58

Vue.jsSocket.IO前端

2023-03-16 14:29:48

Vue.js測試

2017-09-12 09:50:08

JavaScriptEvent LoopVue.js
點贊
收藏

51CTO技術棧公眾號

欧美一区二区在线播放| 99r精品视频| 久久99久久99精品中文字幕| 日本一卡二卡在线| 日韩大尺度黄色| 综合久久一区二区三区| 精品国产一区二区三区四区vr| 日本免费在线观看视频| 亚洲激情中文| 亚洲欧美日韩中文在线| 国产在线观看中文字幕| 极品在线视频| 最新国产精品久久精品| 精品伦理一区二区三区| 91激情在线观看| 日韩亚洲在线| 久久久91精品国产| 9.1成人看片免费版| 日韩精品一区二区三区中文在线 | 中文字幕中文字幕在线中高清免费版| 大尺度一区二区| 国产精品人成电影| 欧美一区二区三区四| 一区二区三区四区日韩| 亚洲天堂影视av| 韩国黄色一级片| 91p九色成人| 黄色成人在线免费| 2021国产视频| 亚洲成人影院麻豆| 久久久综合九色合综国产精品| 成人免费淫片视频软件| 日韩黄色片网站| 亚洲一区激情| 欧美国产日韩xxxxx| jizz18女人高潮| 国产一区调教| 精品少妇一区二区三区视频免付费| 亚洲五月天综合| 蜜桃视频m3u8在线观看| 亚洲一区二区不卡免费| 免费观看黄色大片| 1区2区3区在线观看| 久久综合九色综合97_久久久| 99国精产品一二二线| 亚洲永久精品视频| 老司机免费视频一区二区| 热99精品里视频精品| 日韩少妇裸体做爰视频| 国产在线欧美| 欧美激情乱人伦| 免费在线视频一区二区| 伊人久久大香线蕉综合四虎小说| 日韩一区二区三区国产| 久久久免费看片| 成人久久电影| 一区二区欧美在线| 性欧美精品男男| 欧美午夜精品一区二区三区电影| 亚洲精品在线视频| 三级网站在线免费观看| 欧美日韩xxxx| 一区二区三区天堂av| 中文字幕91视频| 国产精品久久久久久久免费观看| 日韩在线国产精品| 亚洲精品久久久久久国| 一级毛片免费高清中文字幕久久网| 色久欧美在线视频观看| 91高清免费看| 国产精品a级| 久久久久久久一区二区三区| 日本在线视频中文字幕| 先锋a资源在线看亚洲| 国产成人高清激情视频在线观看| 久久久蜜桃一区二区| 日韩电影一区二区三区四区| 国产裸体写真av一区二区 | 国产精品国产三级国产传播| 亚洲精品va| 欧美精品videossex性护士| 男人的天堂一区二区| 久久精品卡一| 成人午夜激情免费视频| 可以免费看毛片的网站| 国产日韩欧美精品电影三级在线 | 黄色小视频在线观看| 欧美国产一区在线| 99亚洲国产精品| 午夜影院在线播放| 欧美理论电影在线| 国产乱了高清露脸对白| 欧美xxxxx视频| 欧美激情啊啊啊| 在线观看污污网站| 国产在线不卡视频| 久久久久久久久久久一区| 尤物网在线观看| 性欧美大战久久久久久久久| 在线观看的毛片| 色悠久久久久综合先锋影音下载| 亚洲精品久久久久久下一站 | 国产精品白丝在线| 91黄色在线看| 久久女人天堂| 亚洲精品99久久久久中文字幕| 成年人在线免费看片| 欧美午夜免费影院| 国产精品爽爽爽爽爽爽在线观看| 成人午夜视频一区二区播放| 国产日韩精品视频一区| 日韩精品一区二区免费| www.国产精品| 亚洲精品福利在线| 人妻久久一区二区| 日日夜夜精品视频天天综合网| 亚洲一区二区三区xxx视频| 男同在线观看| 午夜精品福利一区二区蜜股av| 91欧美视频在线| 中文字幕伦av一区二区邻居| 欧美日本国产在线| 国产露脸无套对白在线播放| 久久精品人人爽人人爽| 日韩小视频在线播放| 韩国三级成人在线| 中文字幕亚洲综合| 一级特黄免费视频| 99re6这里只有精品视频在线观看 99re8在线精品视频免费播放 | 在线观看污污网站| 99re这里只有精品6| 激情五月六月婷婷| 欧洲精品久久久久毛片完整版| 亚洲美女精品久久| 国产一级淫片免费| 国产福利一区在线| mm131午夜| 国产乱码精品一区二区三区亚洲人| 亚洲欧美日韩网| 欧美另类一区二区| 99久久精品99国产精品| 欧美在线一区视频| 国产精品x8x8一区二区| 国模精品视频一区二区| 老牛影视av牛牛影视av| 一区二区三区欧美激情| 三级黄色片免费看| 婷婷亚洲综合| 91在线播放国产| 亚洲区欧洲区| 日韩精品最新网址| 久久久久99精品成人片试看| 国产乱码精品一区二区三区忘忧草| 亚洲五月六月| 亚洲综合伊人| 美女扒开尿口让男人操亚洲视频网站| 国产精品久久无码一三区| 中文字幕一区二区三区四区| 浓精h攵女乱爱av| 欧美激情欧美| 99r国产精品视频| 黄污视频在线观看| 亚洲美女在线观看| 国产无遮挡又黄又爽又色视频| 国产欧美一区二区精品忘忧草| 国产精品igao| 国产精品7m凸凹视频分类| 91麻豆国产语对白在线观看| a免费在线观看| 亚洲成人av片在线观看| av图片在线观看| 国产蜜臀97一区二区三区| 一区二区三区四区毛片| 欧美不卡高清| 久久久久久99| 国产精品亚洲d| 久久不射电影网| 婷婷五月综合激情| 欧美日韩在线一区二区| 懂色av懂色av粉嫩av| www.一区二区| 精品久久久久久中文字幕2017| 999久久久精品国产| 俄罗斯精品一区二区三区| 日本不良网站在线观看| 色婷婷综合久久久久| 亚洲xxx在线| 色综合久久久久久久久久久| 日韩一区二区三区四区视频| 国产不卡视频在线播放| 日韩黄色片视频| 亚洲一区色图| 另类小说综合网| 精品国产18久久久久久二百| 2019中文字幕在线免费观看| 在线观看精品一区二区三区| 日韩美女视频一区二区在线观看| 亚洲欧美偷拍视频| 亚洲精品国产无天堂网2021 | 妺妺窝人体色www在线观看| 欧美成人milf| 精品欧美一区二区三区久久久| 成人交换视频| 91超碰caoporn97人人| 国产二区三区在线| 亚洲人成在线电影| 色欲av永久无码精品无码蜜桃 | 1000精品久久久久久久久| yy1111111| 国产乱人伦精品一区二区在线观看| av片中文字幕| 1000部精品久久久久久久久| 一区二区三区免费看| 九九热爱视频精品视频| 国产精品视频入口| 99久热在线精品视频观看| 国产成人啪精品视频免费网| 1234区中文字幕在线观看| 久久久国产精品免费| 国产粉嫩一区二区三区在线观看| 精品国产乱码久久久久久免费| 国产精品女同一区二区| 日本精品视频一区二区三区| 日韩 国产 在线| 亚洲最大的成人av| 九九热最新地址| 国产精品久久久久久久岛一牛影视| 鲁大师私人影院在线观看| 成人视屏免费看| 精品人妻人人做人人爽夜夜爽| 奇米色777欧美一区二区| 99久久久无码国产精品6| 亚洲国产精品第一区二区三区| 欧美性猛交内射兽交老熟妇| 亚洲成av人片一区二区密柚| 一道精品一区二区三区| 日韩欧美一区免费| 亚洲国产午夜伦理片大全在线观看网站 | 国产大学生校花援交在线播放 | 黄色网在线免费观看| 中文字幕av一区二区| 成人免费高清在线播放| 一区二区欧美久久| av网站大全在线观看| 一区二区亚洲欧洲国产日韩| 福利视频在线看| 尤物99国产成人精品视频| 成年在线电影| 中文字幕日韩欧美在线视频| 亚洲1卡2卡3卡4卡乱码精品| www.日韩.com| wwwav在线| 久久久久久成人精品| 极品av在线| 国产suv精品一区二区三区88区| www.成人影院| 国产精品91一区| 欧洲精品久久久久毛片完整版| 91日本在线观看| 91蜜桃臀久久一区二区| 国产伦精品一区二区三区四区免费| 国产+成+人+亚洲欧洲在线| 国产一区二区自拍| 亚洲宅男一区| 亚洲精品久久久久久一区二区| 国产精品久久久久一区二区三区厕所| 中文字幕剧情在线观看一区| 影音先锋日韩在线| 国产精品国产对白熟妇| 国产精品三上| 黄色手机在线视频| 国产成人精品亚洲午夜麻豆| 99久久人妻无码中文字幕系列| 久久久久久夜精品精品免费| 日本在线观看网址| 亚洲综合精品久久| 日韩在线视频不卡| 欧美日产国产精品| www视频在线| 亚洲欧美国产日韩天堂区| 色网站在线看| 97激碰免费视频| 一区在线影院| 国产不卡一区二区三区在线观看| 日韩一级电影| www亚洲国产| 国产午夜久久| 中文字幕亚洲影院| 97久久超碰精品国产| 纪美影视在线观看电视版使用方法| 亚洲色图欧洲色图婷婷| aaa人片在线| 日韩亚洲欧美成人一区| 青青草在线免费视频| 久久久精品久久久久| 欧美舌奴丨vk视频| 99超碰麻豆| 日韩电影免费网址| 黄色一级视频在线播放| 黄网站免费久久| 中文字幕人妻一区二区| 一区二区欧美视频| 中文在线免费观看| 日韩大陆毛片av| 91香蕉在线观看| 国产精品久久久久久久久久久新郎 | 麻豆精品一区二区三区| 国产二级一片内射视频播放| |精品福利一区二区三区| 最新中文字幕一区| 精品久久99ma| www免费在线观看| 国产精品看片资源| 五月国产精品| 日韩精品一区在线视频| 国产一区二区三区免费播放| 日本爱爱爱视频| 精品久久久久久中文字幕| 99热这里只有精品5| 一区二区三区黄色| xx欧美xxx| 国产一区免费在线| 欧美体内she精视频在线观看| www.超碰97.com| 国产精品午夜春色av| 久久久久久少妇| 精品视频久久久久久久| 黄频免费在线观看| 国产经典一区二区三区| 欧美成人久久| 天堂网成人在线| 亚洲免费观看高清完整| 在线观看中文字幕码| 亚洲色图欧美制服丝袜另类第一页 | 亚洲国产电影在线观看| 少妇太紧太爽又黄又硬又爽| 亚洲第一av网| 超碰资源在线| 国产呦系列欧美呦日韩呦| 精品91在线| 亚洲国产精品狼友在线观看| 一区二区三区日韩| 亚洲精品国产一区二| 欧美国产日本高清在线| 白白在线精品| 国产视频一视频二| 久久综合99re88久久爱| 国产精品久久久久久久久久精爆| 国产偷亚洲偷欧美偷精品| 电影网一区二区| 日本午夜精品电影| 麻豆免费看一区二区三区| 日本二区三区视频| 欧美一区午夜视频在线观看| 午夜在线激情影院| 国产一区二区三区高清| 国产欧美一区二区色老头 | 自拍偷在线精品自拍偷无码专区| 在线观看色网站| 九九久久精品一区| 国内自拍欧美| 欧美视频第三页| 国产精品免费久久| www日本在线| 2019精品视频| 成人在线免费观看网站| 日本精品一区在线| 亚洲一区二区三区精品在线| 天堂在线资源8| 国产精品劲爆视频| 一本精品一区二区三区| 久久人人爽人人人人片| 在线看日本不卡| 国产素人视频在线观看| 国产伦精品一区二区三区四区免费| 免费久久99精品国产自在现线| 欧美a在线播放| 日韩欧美黄色影院| 中文在线а√在线8| 亚洲一区二区精品在线观看| 国产酒店精品激情| 亚洲精品1区2区3区| 中文字幕欧美亚洲| 日韩精品一级| 能在线观看的av网站| 亚洲精品免费视频| 九色视频在线观看免费播放| 成人乱人伦精品视频在线观看| 精品动漫av| 婷婷综合在线视频| 亚洲第一精品久久忘忧草社区| 在线看欧美视频| 六月婷婷激情综合| 欧美国产欧美综合| 亚洲国产欧美另类| 国产精品久久不能| 中文日韩欧美| 欧美精品成人久久| 在线看日韩欧美| 理论片一区二区在线|