Vue | 兩對(duì)cp

今天來看兩對(duì) cp扒最,之所以把他們當(dāng) cp赏殃,是因?yàn)槊看螌懫渲兄粫r(shí),總是要拿另一個(gè)做比較场仲,這種關(guān)系在前端很常見和悦。

基本上是看起來好像實(shí)現(xiàn)的功能點(diǎn)是一樣的,但實(shí)際上每個(gè)都有其特殊的應(yīng)用場(chǎng)景燎窘。彼此互為補(bǔ)充摹闽,缺了誰,都有點(diǎn)不大對(duì)勁褐健。

今天來介紹的兩對(duì)是:

  • methods && computed
  • v-if && v-show

先來看第一對(duì)付鹿,methods && computed 是創(chuàng)建 Vue 實(shí)例時(shí)可以選擇的字段,和 el蚜迅, data 是同一類的舵匾。

兩者的關(guān)系有一種既生瑜何生亮的感覺。

在比較之前先看一個(gè) computed 的個(gè)人問題谁不。

為何計(jì)算屬性寫的時(shí)候是函數(shù)坐梯,用的時(shí)候當(dāng)成屬性【不加小括號(hào)】來操作?

假設(shè)接下來用到的 data 為:

data: {
    firstName: 'cem',
    lastName: 'coe'
}

現(xiàn)在要在頁面中展示完整的名字刹帕,可以使用的方式:

  • 雙大括號(hào)語法 {{firstName + lastName}} 語法過于繁瑣
  • methods
  • computed

使用計(jì)算屬性:

computed: {
    fullName() {
        return this.firstName + this.lastName
    }
}

在 html 中使用時(shí)可能是這樣的:

<h1>{{fullName}}</h1>

為什么不加小括號(hào)呢吵血?它不是函數(shù)嗎?

這里其實(shí)是計(jì)算屬性的簡寫偷溺,完整的寫法:

computed: {
    fullName: {
        set: function() {
        },
        get: function() {
            return this.firstName + this.lastName
        }
    }
}

計(jì)算屬性本質(zhì)上就是一個(gè)屬性蹋辅,并非函數(shù),只是開發(fā)時(shí)一般不實(shí)現(xiàn) set 方法挫掏。只是簡寫以后給人一種函數(shù)的感覺侦另。

這也就解釋了為何計(jì)算屬性寫的時(shí)候是函數(shù),用的時(shí)候當(dāng)成屬性來操作。

那么接下進(jìn)入正題褒傅,來看一下這對(duì) cp 的異同弃锐。


這里做一個(gè)對(duì)比實(shí)驗(yàn),methods && computed 在頁面中均搞 3 次殿托。

<div id="app">
    {{fullName}}
    {{fullName}}
    {{fullName}}
    ---
    {{getFullName()}}
    {{getFullName()}}
    {{getFullName()}}
</div>

為了看到結(jié)果在它們身上埋點(diǎn) console

methods: {
    getFullName() {
        console.log("methods")
        return this.firstName + this.lastName
    }
},
computed: {
    fullName() {
        console.log("computed")
        return this.firstName + this.lastName
    }
}
methods && computed

從結(jié)果來看霹菊,同樣請(qǐng)求三次數(shù)據(jù)的情況下, methods 執(zhí)行3次碌尔,而 computed 僅僅執(zhí)行1次浇辜。

在 firstName 和 lastName 不改改變時(shí),computed 會(huì)使用緩存的結(jié)果唾戚,效率更高柳洋,更加節(jié)省資源。

其實(shí)兩者之中還有一個(gè)第三者叹坦,喚為 watch熊镣,他們之間錯(cuò)綜復(fù)雜的關(guān)系找時(shí)間再寫。


來看第二對(duì) v-if && v-show,募书,兩者用于條件渲染绪囱。

通過一個(gè)對(duì)比實(shí)驗(yàn)來看一看 v-if && v-show 的區(qū)別,為了看清結(jié)果莹捡,給他們埋下 id:

<h1 v-if="isShow" id="if">cemcoe</h1>
<h1 v-show="isShow" id="show">cemcoe</h1>
v-if && v-show

當(dāng) isShow 的值被改成 false 時(shí)鬼吵,兩個(gè)都消失。但他們不一樣篮赢,通過觀察埋下的 id 可以發(fā)現(xiàn):v-if 直接從 DOM 中刪掉齿椅,v-show 增加了行內(nèi)樣式 display:none,僅僅是視覺不可見启泣。

v-show 更像是一件隱身斗篷涣脚。元素仍然存在,只是不可見寥茫。

在 CSS 中有類似的問題:display:none 和 visibility:hidden 的異同遣蚀。又給自己挖了一個(gè)坑,有空填纱耻。

開發(fā)中 v-if 使用較多芭梯,向服務(wù)器請(qǐng)求數(shù)據(jù)僅僅加載有權(quán)限的內(nèi)容,如果沒有權(quán)限就不能將數(shù)據(jù)添加到 DOM 中弄喘。

這里是連載 化學(xué)小子的前端實(shí)驗(yàn)冊(cè) 的第 18 篇粥帚,歡迎關(guān)注。

pixiv|えすない|78926374

圖源

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末限次,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌卖漫,老刑警劉巖费尽,帶你破解...
    沈念sama閱讀 206,126評(píng)論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異羊始,居然都是意外死亡旱幼,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,254評(píng)論 2 382
  • 文/潘曉璐 我一進(jìn)店門突委,熙熙樓的掌柜王于貴愁眉苦臉地迎上來柏卤,“玉大人,你說我怎么就攤上這事匀油≡蹈浚” “怎么了?”我有些...
    開封第一講書人閱讀 152,445評(píng)論 0 341
  • 文/不壞的土叔 我叫張陵敌蚜,是天一觀的道長桥滨。 經(jīng)常有香客問我,道長弛车,這世上最難降的妖魔是什么齐媒? 我笑而不...
    開封第一講書人閱讀 55,185評(píng)論 1 278
  • 正文 為了忘掉前任,我火速辦了婚禮纷跛,結(jié)果婚禮上喻括,老公的妹妹穿的比我還像新娘。我一直安慰自己贫奠,他們只是感情好唬血,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,178評(píng)論 5 371
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著叮阅,像睡著了一般刁品。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上浩姥,一...
    開封第一講書人閱讀 48,970評(píng)論 1 284
  • 那天挑随,我揣著相機(jī)與錄音,去河邊找鬼勒叠。 笑死兜挨,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的眯分。 我是一名探鬼主播拌汇,決...
    沈念sama閱讀 38,276評(píng)論 3 399
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼弊决!你這毒婦竟也來了噪舀?” 一聲冷哼從身側(cè)響起魁淳,我...
    開封第一講書人閱讀 36,927評(píng)論 0 259
  • 序言:老撾萬榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎与倡,沒想到半個(gè)月后界逛,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 43,400評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡纺座,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 35,883評(píng)論 2 323
  • 正文 我和宋清朗相戀三年息拜,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片净响。...
    茶點(diǎn)故事閱讀 37,997評(píng)論 1 333
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡少欺,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出馋贤,到底是詐尸還是另有隱情赞别,我是刑警寧澤,帶...
    沈念sama閱讀 33,646評(píng)論 4 322
  • 正文 年R本政府宣布掸掸,位于F島的核電站氯庆,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏扰付。R本人自食惡果不足惜堤撵,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,213評(píng)論 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望羽莺。 院中可真熱鬧实昨,春花似錦、人聲如沸盐固。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,204評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽刁卜。三九已至志电,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間蛔趴,已是汗流浹背挑辆。 一陣腳步聲響...
    開封第一講書人閱讀 31,423評(píng)論 1 260
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留孝情,地道東北人鱼蝉。 一個(gè)月前我還...
    沈念sama閱讀 45,423評(píng)論 2 352
  • 正文 我出身青樓,卻偏偏與公主長得像箫荡,于是被迫代替她去往敵國和親魁亦。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,722評(píng)論 2 345

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