国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 語言 > JavaScript > 正文

Vue.js 插件開發(fā)詳解

2024-05-06 15:19:15
字體:
供稿:網(wǎng)友

前言

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

認識插件

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

Vue.js 的插件應(yīng)當有一個公開方法 install 。這個方法的第一個參數(shù)是 Vue 構(gòu)造器 , 第二個參數(shù)是一個可選的選項對象:

MyPlugin.install = function (Vue, options) { Vue.myGlobalMethod = function () { // 1. 添加全局方法或?qū)傩裕? vue-custom-element // 邏輯... } Vue.directive('my-directive', { // 2. 添加全局資源:指令/過濾器/過渡等,如 vue-touch bind (el, binding, vnode, oldVnode) { // 邏輯... } ... }) Vue.mixin({ created: function () { // 3. 通過全局 mixin方法添加一些組件選項,如: vuex // 邏輯... } ... }) Vue.prototype.$myMethod = function (options) { // 4. 添加實例方法,通過把它們添加到 Vue.prototype 上實現(xiàn) // 邏輯... }}

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

// toast.jsvar Toast = {};Toast.install = function (Vue, options) { Vue.prototype.$msg = 'Hello World';}module.exports = Toast;

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

// main.jsimport Vue from 'vue';import Toast from './toast.js';Vue.use(Toast);

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

// App.vueexport default { mounted(){ console.log(this.$msg);  // Hello World }}

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

開發(fā) vue-toast

需求:在組件中通過調(diào)用 this.$toast('網(wǎng)絡(luò)請求失敗') 來彈出提示,默認在底部顯示。可以通過調(diào)用 this.$toast.top() 或 this.$toast.center() 等方法來實現(xiàn)在不同位置顯示。

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

// toast.jsvar Toast = {};Toast.install = function (Vue, options) { Vue.prototype.$toast = (tips) => {  let toastTpl = Vue.extend({  // 1、創(chuàng)建構(gòu)造器,定義好提示信息的模板   template: '<div class="vue-toast">' + tips + '</div>'  });  let tpl = new toastTpl().$mount().$el; // 2、創(chuàng)建實例,掛載到文檔以后的地方  document.body.appendChild(tpl);  // 3、把創(chuàng)建的實例添加到body中  setTimeout(function () {  // 4、延遲2.5秒后移除該提示   document.body.removeChild(tpl);  }, 2500) }}module.exports = Toast;            
發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表

圖片精選

主站蜘蛛池模板: 澜沧| 孝感市| 新营市| 张北县| 武宣县| 剑川县| 中西区| 开阳县| 漠河县| 清新县| 安徽省| 楚雄市| 桐庐县| 扎赉特旗| 喀什市| 沂源县| 丹棱县| 陆河县| 长阳| 津市市| 沙雅县| 商洛市| 同仁县| 西安市| 北海市| 太仆寺旗| 桃园市| 洱源县| 鄂伦春自治旗| 上虞市| 襄樊市| 宽城| 芜湖市| 临沭县| 四川省| 姜堰市| 博兴县| 德化县| 阿拉善左旗| 福泉市| 垦利县|