Vue造Toast輪子引發(fā)的思考??

譯者:王二狗
博客:掘金趋翻、思否芹壕、知乎簡書锯玛、CSDN
點贊再看咐柜,養(yǎng)成習慣,你們的支持是我持續(xù)分享的最大動力??
原文鏈接:https://www.sitepoint.com/shorthand-javascript-techniques/

最近一直在不停的造Vue輪子攘残,目前已經完成了Button拙友、網格布局默認布局歼郭、Input等輪子遗契。

今天在編寫Toast輪子的時候遇到了一個問題,說一說我的思考過程病曾,拿出來和大家分享一下牍蜂,希望對大家有所幫助漾根。??

需求分析

在決定去造一個輪子之前,首先要做的就是需求分析鲫竞,其中最重要的一步就是你的輪子造出來之后辐怕,其他人怎樣使用你的輪子。

我希望用到我輪子的用戶可以全局去調用我的輪子贡茅,就像下面這樣:

this.$toast()

遇到問題

那么我如何才能做到讓用戶使用上述方式去調用我的輪子呢秘蛇?

我首先想到的方法是直接將我的輪子掛載到Vueprototype

import Vue from 'vue'
Vue.prototype.$toast = function () {
    console.log('this is my toast');
}

這樣做可以是可以,但是存在兩個潛在的工程問題顶考。

工程問題:在我們的工程項目中會實際發(fā)生的問題,其特點就是具有不可預測性妖泄,這種不可預測性驹沿,往往不是你可以通過目前代碼的分析而得出的。

問題一:$toast可能以前就已經有了

如果以前就存在了一個$toast蹈胡,那么按照你上述的處理方式渊季,你就會覆蓋掉原有的$toast

針對這個問題罚渐,我最初想到的處理方式是提前對$toast進行一個檢測

import Vue from 'vue'

if (Vue.prototype.$toast == undefined) {
    Vue.prototype.$toast = function () {
        console.log('i an toast');
    }
}

這種處理方式的問題就在于却汉,如果在這之前$toast真的已經存在了,那你的$toast怎么辦荷并?這種處理方式的問題在于侵入性太強了合砂。

問題二:很有可能使用你輪子的用戶和你的Vue版本不一致

如果使用你輪子的用戶所用的Vue版本和你的不一致怎么辦?

import Vue from 'vue1'
import Vue from 'vue2'
......

墨菲定律

所謂墨菲定律源织,說的就是小概率事件必將發(fā)生翩伪,如果你不相信,那么你就存在僥幸心理谈息,你就在自己騙自己缘屹。

所以,我們必須要想出合理的方式解決上面遇到的兩個工程問題侠仇。

解決方案(Vue插件)

最后通過翻閱 Vue 文檔轻姿,我發(fā)現(xiàn)Vue里面的插件可能很好的解決我所遇到的問題。

創(chuàng)建插件:

export default {
    install(){
        Vue.prototype.$toast = function () {
            console.log('i am toast');
        }
    }
}

引入插件:

import Plugin from './toast/plugin'
Vue.use(Plugin)

使用輪子:

this.$toast()

告誡自己逻炊,即使再累也不要忘記學習互亮,成功沒有捷徑可走,只有一步接著一步走下去嗅骄。 共勉胳挎!

?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市溺森,隨后出現(xiàn)的幾起案子慕爬,更是在濱河造成了極大的恐慌窑眯,老刑警劉巖,帶你破解...
    沈念sama閱讀 217,734評論 6 505
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件医窿,死亡現(xiàn)場離奇詭異磅甩,居然都是意外死亡,警方通過查閱死者的電腦和手機姥卢,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,931評論 3 394
  • 文/潘曉璐 我一進店門卷要,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人独榴,你說我怎么就攤上這事僧叉。” “怎么了棺榔?”我有些...
    開封第一講書人閱讀 164,133評論 0 354
  • 文/不壞的土叔 我叫張陵瓶堕,是天一觀的道長。 經常有香客問我症歇,道長郎笆,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,532評論 1 293
  • 正文 為了忘掉前任忘晤,我火速辦了婚禮宛蚓,結果婚禮上,老公的妹妹穿的比我還像新娘设塔。我一直安慰自己凄吏,他們只是感情好,可當我...
    茶點故事閱讀 67,585評論 6 392
  • 文/花漫 我一把揭開白布壹置。 她就那樣靜靜地躺著竞思,像睡著了一般。 火紅的嫁衣襯著肌膚如雪钞护。 梳的紋絲不亂的頭發(fā)上盖喷,一...
    開封第一講書人閱讀 51,462評論 1 302
  • 那天,我揣著相機與錄音难咕,去河邊找鬼课梳。 笑死,一個胖子當著我的面吹牛余佃,可吹牛的內容都是我干的暮刃。 我是一名探鬼主播,決...
    沈念sama閱讀 40,262評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼爆土,長吁一口氣:“原來是場噩夢啊……” “哼椭懊!你這毒婦竟也來了?” 一聲冷哼從身側響起步势,我...
    開封第一講書人閱讀 39,153評論 0 276
  • 序言:老撾萬榮一對情侶失蹤氧猬,失蹤者是張志新(化名)和其女友劉穎背犯,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體盅抚,經...
    沈念sama閱讀 45,587評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡漠魏,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 37,792評論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了妄均。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片柱锹。...
    茶點故事閱讀 39,919評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖丰包,靈堂內的尸體忽然破棺而出禁熏,到底是詐尸還是另有隱情,我是刑警寧澤邑彪,帶...
    沈念sama閱讀 35,635評論 5 345
  • 正文 年R本政府宣布匹层,位于F島的核電站,受9級特大地震影響锌蓄,放射性物質發(fā)生泄漏。R本人自食惡果不足惜撑柔,卻給世界環(huán)境...
    茶點故事閱讀 41,237評論 3 329
  • 文/蒙蒙 一瘸爽、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧铅忿,春花似錦剪决、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,855評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至峻凫,卻和暖如春渗鬼,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背荧琼。 一陣腳步聲響...
    開封第一講書人閱讀 32,983評論 1 269
  • 我被黑心中介騙來泰國打工譬胎, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人命锄。 一個月前我還...
    沈念sama閱讀 48,048評論 3 370
  • 正文 我出身青樓堰乔,卻偏偏與公主長得像,于是被迫代替她去往敵國和親脐恩。 傳聞我的和親對象是個殘疾皇子镐侯,可洞房花燭夜當晚...
    茶點故事閱讀 44,864評論 2 354

推薦閱讀更多精彩內容