Vue.extend的理解

在使用element-ui的過程中捏境,我相信你在使用到類似this.$message功能的時候妓盲,會覺得這個功能真的非常方便谷遂,不用import入組件超歌,全局都可以調(diào)用砍艾。它就是通過Vue.extend + $mount實現(xiàn)。

擴展實例構(gòu)造器

Vue.extend返回的是一個“擴展實例構(gòu)造器”巍举,也就是一個預(yù)設(shè)了部分選項的 Vue 實例構(gòu)造器脆荷。剛學(xué)的時候?qū)Α皵U展實例構(gòu)造器”這一名詞感覺很疑惑,其實它就像構(gòu)造函數(shù),構(gòu)造函數(shù)中會事先定義好一些屬性蜓谋,new出來的對象也就默認有構(gòu)造函數(shù)中的屬性梦皮,同理Vue.extend也是如此,看下例:

//DOM
<div id="point"></div>

// 構(gòu)建一個擴展實例構(gòu)造器
var todoItem = Vue.extend({
    template: ` <p v-on:click="wordClick"> {{ text }} </p> `,
    data() {
        return {
            text: 'default word'
        }
    },
    methods:{
        wordClick(){
            console.log('click me')
        }
    }
})
//實例化一個新的對象并綁定到對應(yīng)的DOM元素上
new todoItem({
    data() {
        return {
            text: 'hello world'
        }
    }
}).$mount('#point');

todoItem是一個“擴展實例構(gòu)造器”孤澎,預(yù)設(shè)了template届氢,datamethods覆旭,當(dāng)new出一個新的對象的時候退子,新對象也默認擁有這些模塊,同時也可以替換新的屬性型将,非常靈活寂祥。

封裝toast插件

一般在項目開發(fā)過程中,會新建一個plugins文件夾放編寫的插件七兜,一個插件對應(yīng)一個文件夾丸凭,文件夾里包含兩個文件,一個js文件和vue文件腕铸。

屏幕快照 2019-06-23 下午12.27.36.png

toast.vue
<template>
    <transition name="message">
        <div class="toastWrap" v-if="toastShow" v-html="toastVal"></div>
    </transition>
</template>

<script>
export default {
    name: 'Toast'
}
</script>

<style scoped lang="scss">
    ...
</style>

在該文件中可以事先寫好toast的DOM結(jié)構(gòu)和對應(yīng)的樣式

toast.js
import Vue from 'vue'
import toastComponent from './toast.vue'

const ToastConstructor = Vue.extend(toastComponent);

function showToast(toastVal='default',time=1000){
    let ToastDOM = new ToastConstructor({
        el:document.createElement('div'),
        data(){
            return {
                toastVal:toastVal,
                toastShow:false
            }
        }
    });
    document.body.appendChild(ToastDOM.$el);
    ToastDOM.toastShow = true;
    let timer = setTimeout(res=>{
        clearTimeout(timer);
        ToastDOM.toastShow = false;
    },time);
}

Vue.prototype.$toast = showToast;

在全局調(diào)用$toast方法就是觸發(fā)了綁定在Vue原型上的showToast方法惜犀,可以將Toast動態(tài)插入到body中,而不用像Component組件一樣狠裹,都要預(yù)先import引入虽界,相比較起來會方便很多。

App.vue
...
mounted() {
    this.$toast('這是一個tast彈窗',2000)
},
...
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末涛菠,一起剝皮案震驚了整個濱河市莉御,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌俗冻,老刑警劉巖礁叔,帶你破解...
    沈念sama閱讀 206,968評論 6 482
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異迄薄,居然都是意外死亡琅关,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,601評論 2 382
  • 文/潘曉璐 我一進店門噪奄,熙熙樓的掌柜王于貴愁眉苦臉地迎上來死姚,“玉大人,你說我怎么就攤上這事勤篮。” “怎么了色罚?”我有些...
    開封第一講書人閱讀 153,220評論 0 344
  • 文/不壞的土叔 我叫張陵碰缔,是天一觀的道長。 經(jīng)常有香客問我戳护,道長金抡,這世上最難降的妖魔是什么瀑焦? 我笑而不...
    開封第一講書人閱讀 55,416評論 1 279
  • 正文 為了忘掉前任,我火速辦了婚禮梗肝,結(jié)果婚禮上榛瓮,老公的妹妹穿的比我還像新娘。我一直安慰自己巫击,他們只是感情好禀晓,可當(dāng)我...
    茶點故事閱讀 64,425評論 5 374
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著坝锰,像睡著了一般粹懒。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上顷级,一...
    開封第一講書人閱讀 49,144評論 1 285
  • 那天凫乖,我揣著相機與錄音,去河邊找鬼弓颈。 笑死帽芽,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的翔冀。 我是一名探鬼主播导街,決...
    沈念sama閱讀 38,432評論 3 401
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼橘蜜!你這毒婦竟也來了菊匿?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,088評論 0 261
  • 序言:老撾萬榮一對情侶失蹤计福,失蹤者是張志新(化名)和其女友劉穎跌捆,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體象颖,經(jīng)...
    沈念sama閱讀 43,586評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡佩厚,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,028評論 2 325
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了说订。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片抄瓦。...
    茶點故事閱讀 38,137評論 1 334
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖陶冷,靈堂內(nèi)的尸體忽然破棺而出钙姊,到底是詐尸還是另有隱情,我是刑警寧澤埂伦,帶...
    沈念sama閱讀 33,783評論 4 324
  • 正文 年R本政府宣布煞额,位于F島的核電站,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏膊毁。R本人自食惡果不足惜胀莹,卻給世界環(huán)境...
    茶點故事閱讀 39,343評論 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望婚温。 院中可真熱鬧描焰,春花似錦、人聲如沸栅螟。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,333評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽嵌巷。三九已至萄凤,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間搪哪,已是汗流浹背靡努。 一陣腳步聲響...
    開封第一講書人閱讀 31,559評論 1 262
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留晓折,地道東北人惑朦。 一個月前我還...
    沈念sama閱讀 45,595評論 2 355
  • 正文 我出身青樓,卻偏偏與公主長得像漓概,于是被迫代替她去往敵國和親漾月。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 42,901評論 2 345

推薦閱讀更多精彩內(nèi)容

  • 這是16年5月份編輯的一份比較雜亂適合自己觀看的學(xué)習(xí)記錄文檔胃珍,今天18年5月份再次想寫文章梁肿,發(fā)現(xiàn)簡書還為我保存起的...
    Jenaral閱讀 2,732評論 2 9
  • ## 框架和庫的區(qū)別?> 框架(framework):一套完整的軟件設(shè)計架構(gòu)和**解決方案**。> > 庫(lib...
    Rui_bdad閱讀 2,890評論 1 4
  • 前端開發(fā)面試題 面試題目: 根據(jù)你的等級和職位的變化觅彰,入門級到專家級吩蔑,廣度和深度都會有所增加。 題目類型: 理論知...
    怡寶丶閱讀 2,570評論 0 7
  • Vue是現(xiàn)在最流行的前端框架之一填抬,而且相對于其他兩個框架React和Angular來說也更加易學(xué)烛芬,而且它的作者是國...
    dinel閱讀 4,945評論 0 9
  • Vue 實例 屬性和方法 每個 Vue 實例都會代理其 data 對象里所有的屬性:var data = { a:...
    云之外閱讀 2,202評論 0 6