精品欧美一区二区三区在线观看 _久久久久国色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技術棧公眾號

亚洲桃色在线一区| 国产精品观看| 欧美伦理视频网站| 可以在线看黄的网站| 亚洲国产精品视频在线| 亚洲资源av| 中文字幕日韩视频| 亚洲成人精品在线播放| 欧美大胆性生话| 亚洲日本护士毛茸茸| 精品国产免费一区二区三区| 中文字幕在线观看高清| 最新日韩欧美| 日韩网站在线观看| 黄色正能量网站| www一区二区三区| 欧美日韩裸体免费视频| 一区二区三区四区免费观看| 色婷婷av一区二区三区之e本道| 欧美在线亚洲综合一区| 亚洲四色影视在线观看| 色欲欲www成人网站| www成人在线视频| 亚洲综合色丁香婷婷六月图片| 欧美黄色直播| 免费国产黄色片| 久久99精品视频| 日韩av大片免费看| 国产成年人免费视频| 亚洲深深色噜噜狠狠爱网站| 国产亚洲精品久久久久久777| 95视频在线观看| 四虎在线精品| 欧洲精品在线观看| 免费日韩视频在线观看| 538视频在线| 亚洲欧美色一区| 亚洲精品无人区| 欧洲毛片在线| 91网站在线观看视频| 国产精品久久久久久久久久久久午夜片| 中文字幕免费高清网站| 蘑菇福利视频一区播放| 97视频国产在线| 久久午夜无码鲁丝片| 牛夜精品久久久久久久99黑人| 精品国产自在精品国产浪潮| 久久久精品成人| 成人三级视频| 在线成人中文字幕| 韩国三级hd中文字幕| 精品色999| 亚洲性av网站| 国产一区二区三区四区在线| 成人看的视频| 日韩中文在线中文网三级| 极品久久久久久久| 日韩中文首页| 久久韩剧网电视剧| 日本青青草视频| 欧美国产三级| 久久久久久久久综合| 久久精品视频9| 亚洲国内自拍| 欧美在线观看一区二区三区| 日韩av大片在线观看| 香蕉成人久久| 国产精品电影一区| 91免费视频播放| 国产一区二区三区久久悠悠色av| 91久久精品美女高潮| www.xxxx国产| av中文一区二区三区| 蜜桃视频在线观看成人| av在线电影网| 亚洲精品日韩专区silk| 成年人网站国产| 中老年在线免费视频| 在线视频一区二区三区| 欧美大尺度做爰床戏| 国产成人久久精品一区二区三区| 日韩一卡二卡三卡四卡| 免费黄色三级网站| 精品久久电影| 欧美成年人视频网站欧美| 国产做受高潮漫动| 欧美aⅴ一区二区三区视频| 国产在线视频91| 成人久久久精品国产乱码一区二区| 99久久99久久精品免费看蜜桃| 久久久久网址| 日本亚洲精品| 亚洲网友自拍偷拍| 黄色免费网址大全| 久久久久久久久成人| 亚洲男人天堂网站| 国产精品国产精品88| 在线亚洲自拍| 成人精品在线视频| 日韩大胆人体| 亚洲狼人国产精品| 日韩免费毛片视频| 97久久综合精品久久久综合| 亚洲色图第一页| 久久av高潮av无码av喷吹| 午夜一级久久| 国产v亚洲v天堂无码| av亚洲在线| 午夜不卡在线视频| www,av在线| 国产成人精品免费视| 欧美区二区三区| 中文区中文字幕免费看| 99视频一区二区三区| 熟妇熟女乱妇乱女网站| 日韩电影免费观看高清完整版| 91.麻豆视频| 妺妺窝人体色WWW精品| 在线欧美日韩| 95av在线视频| avav免费在线观看| 欧美视频二区36p| 91porn在线| 欧美独立站高清久久| 国产成人欧美在线观看| 天天干天天草天天射| 亚洲精品一二三| 午夜精品免费看| 青青草91久久久久久久久| 4438全国亚洲精品在线观看视频| 国产suv一区二区| 国产精品成人免费精品自在线观看| 国产午夜福利视频在线观看| 亚洲一级大片| 精品中文字幕视频| 99热这里只有精品66| 国产精品国产三级国产专播品爱网 | 国产成人免费观看视频 | 一本到12不卡视频在线dvd| 日韩av理论片| 国产午夜精品一区理论片| 精品国产精品自拍| 久久久老熟女一区二区三区91| 欧美视频网站| 高清视频一区二区三区| 欧美性爽视频| 精品国产一区二区精华| 国产精品6666| 97se亚洲国产综合自在线 | 日韩av不卡在线观看| 欧美精品一区三区在线观看| 正在播放日韩精品| 亚洲天堂网在线观看| 无码人妻aⅴ一区二区三区有奶水| 91免费在线看| 草草草在线视频| 精品日产免费二区日产免费二区| 国产精品视频导航| 91精彩在线视频| 91精品免费观看| 黄色一级视频免费观看| 成人av网站在线| 黄色免费观看视频网站| 久久99国产精一区二区三区| 国产精品狼人色视频一区| 香港伦理在线| 日韩免费成人网| 五月天婷婷丁香| 91免费在线视频观看| 中文字幕在线导航| 亚洲有吗中文字幕| 久久99国产精品99久久| 欧美123区| 久久精品视频在线观看| 丁香花免费高清完整在线播放 | 瑟瑟视频在线免费观看| 中文字幕欧美一| 野战少妇38p| 日韩电影免费一区| 女同性恋一区二区| 久久精品色播| 国产精品永久在线| 青青草原国产在线| 亚洲欧美一区二区精品久久久| 中文字幕日产av| 亚洲激情自拍偷拍| 加勒比一区二区| 九九在线精品视频| av免费观看国产| 精品久久久久中文字幕小说| 999精品视频一区二区三区| 国产在线88av| 久久精品国产清自在天天线| 神马久久久久久久久久| 欧美性大战久久久久久久蜜臀| 欧美偷拍第一页| 久久久午夜精品| 欧美性猛交乱大交| 日本美女一区二区三区视频| 亚洲 欧美 综合 另类 中字| 成人羞羞视频在线看网址| 国产成人成网站在线播放青青| 成人精品三级| 97免费中文视频在线观看| 毛片在线播放a| 国产视频久久网| 精品二区在线观看| 在线欧美日韩国产| 国产成人亚洲精品自产在线| 亚洲欧洲性图库| 性欧美成人播放77777| 国产呦萝稀缺另类资源| 牛夜精品久久久久久久| 一本色道久久综合| 成人在线观看毛片| 色男人天堂综合再现| 精品乱码一区二区三区| 日本精品视频| 国产欧美一区二区三区久久| 亚洲黄色免费av| 久久久欧美一区二区| 91黄色在线| xvideos成人免费中文版| 黄色片免费在线| 亚洲国产天堂网精品网站| 国产视频在线观看免费| 欧美性生活影院| 日本熟女毛茸茸| 亚洲综合激情另类小说区| 久久久久人妻一区精品色| 国产午夜精品一区二区| 极品白嫩丰满美女无套| 成人国产亚洲欧美成人综合网| 午夜激情影院在线观看| 另类专区欧美蜜桃臀第一页| 国产精品人人妻人人爽人人牛| 国产农村妇女精品一二区| av免费观看国产| 在线日本成人| 国产曰肥老太婆无遮挡| 欧美日本中文| 精品久久久无码人妻字幂| 一区二区免费不卡在线| 黄色网址在线免费看| 国产精品久久久久久影院8一贰佰 国产精品久久久久久麻豆一区软件 | caoporn视频在线| 久久久亚洲成人| heyzo中文字幕在线| 午夜精品久久久久久久白皮肤| 麻豆av在线播放| 午夜精品久久久久久99热| 超碰资源在线| 2025国产精品视频| 欧美日韩免费观看视频| 国产精品久久一区| 57pao成人永久免费| 91在线免费看网站| 91久久偷偷做嫩草影院电| 高清av免费一区中文字幕| 欧亚精品一区| 日韩电影天堂视频一区二区| 成人在线免费小视频| 伊人久久大香线蕉成人综合网| 99久久99热这里只有精品| 黄色一级视频播放| 亚洲黄色一区| 国产一级片黄色| 精品一区二区久久| 欧美午夜精品一区二区| 26uuu国产电影一区二区| www色com| 亚洲欧美视频在线观看| 日韩毛片在线播放| 欧美综合一区二区三区| 国产精品欧美综合亚洲| 精品第一国产综合精品aⅴ| 污视频软件在线观看| 在线观看国产精品淫| 老司机在线永久免费观看| 欧美激情一区二区三级高清视频 | 亚洲高清免费视频| 日本中文字幕第一页| 欧美日韩综合在线| 亚洲高清在线观看视频| 亚洲欧美日韩精品久久亚洲区 | 欧美一区二区三区成人片在线| 日韩精品在线观| 日本视频不卡| 性色av香蕉一区二区| 岛国一区二区| 国产经典一区二区三区 | 成人精品鲁一区一区二区| 国产成人无码精品久久二区三| 国产精品电影一区二区| 亚洲一区欧美在线| 欧美高清视频在线高清观看mv色露露十八 | 久久久久久久久久久久久9999| 欧美大黑bbbbbbbbb在线| 久久精品国产sm调教网站演员| 日本成人在线视频网站| 中国xxxx性xxxx产国| 国产精品久久久久久久久晋中 | 风间由美一区二区三区| 日韩成人精品一区| 国产精品久久久久7777| 久久精品免费观看| 亚洲国产欧美视频| 亚洲精品免费看| 亚洲性猛交富婆| 亚洲精品国产成人| 神马午夜伦理不卡 | 久久蜜桃av一区精品变态类天堂| 日韩激情综合网| 在线观看日韩电影| 天堂影院在线| 久久久久久久久国产精品| 日日夜夜一区| 日韩欧美亚洲v片| 亚洲乱码视频| 国产xxx在线观看| 最新高清无码专区| 欧美视频xxxx| 亚洲欧美综合另类中字| 精品丝袜在线| 国产伦精品一区二区三区视频孕妇| 久久久国产精品| 91看片在线免费观看| 久久久久久久国产精品影院| 日操夜操天天操| 精品国产乱码久久久久久1区2区| 日韩成人影视| 国产中文字幕91| 久久在线播放| 国产喷水theporn| 性猛交╳xxx乱大交| 亚洲精选一二三| 国产精品亚洲lv粉色| 日韩午夜在线视频| 欧美日韩破处视频| 亚洲一区二区在线看| 日本女优在线视频一区二区| 久久久久亚洲av无码a片| 欧洲一区在线观看| av基地在线| 成人春色激情网| 国产精品不卡| 亚洲日本黄色片| 亚洲精品你懂的| 一本色道久久综合亚洲| 日韩中文视频免费在线观看| 99视频有精品高清视频| 免费看av软件| 国产精品中文字幕日韩精品| 青青操视频在线播放| 欧美大片日本大片免费观看| 久草在线视频资源| 久草热久草热线频97精品| 久久亚洲不卡| xxxxx99| 欧美高清hd18日本| 色yeye免费人成网站在线观看| 国产精品视频免费一区| 国产精品色网| 国产综合精品久久久久成人av| 欧美久久一二区| 日本高清成人vr专区| 国产一区免费在线| 久久婷婷麻豆| 欧洲美女女同性互添| 欧美成人高清电影在线| 中文在线最新版地址| 午夜视频久久久| 国产一区二区三区av电影| 国产一级片播放| 亚洲欧美国产一区二区三区| 91亚洲精品| 免费极品av一视觉盛宴| 久久久综合激的五月天| 中文字幕一区二区三区免费看| 久久国产精品影视| 日本成人中文| 日本高清久久久| 亚洲香蕉伊在人在线观| 国产高清视频在线| 91情侣在线视频| 久久黄色影院| 国产十六处破外女视频| 亚洲免费视频网站| 综合欧美精品| 欧美精品99久久| 亚洲视频在线一区观看| 日韩三级电影网| 亚洲xxxx18| 丝袜亚洲精品中文字幕一区| 男女性高潮免费网站| 亚洲欧美日韩综合| 丁香五月缴情综合网| 精品日韩久久久| 亚州成人在线电影| 久操视频在线免费播放|