Vue基礎(chǔ)備忘

常用

v-if,v-show,v-for,v-bind,v-on,v-text,v-html,v-cloak,v-once
練習(xí)用網(wǎng)站

v-once

只渲染一次,以后重新渲染直接作為靜態(tài)內(nèi)容

v-model

雙向綁定數(shù)據(jù)
v-model與單選框
單選
v-model與復(fù)選框
復(fù)選框

v-model的修飾符
  • lazy: v-model默認(rèn)在input輸入時(shí)同步數(shù)據(jù),lazy變?yōu)閏hange事件觸發(fā)時(shí)同步,即失去焦點(diǎn)、回車同步。
  • number: 把輸入的數(shù)字轉(zhuǎn)化為number類型
  • trim: 把輸入的文字過(guò)濾首尾空格
簡(jiǎn)單的實(shí)現(xiàn)雙向綁定
<input type="“text”" :value="message" @input="message=$event.target.value"
/>
<p>{{ message }}</p>
<button @click="addP">+p</button>

data: {
  message: 'hi'
},
method:{
  addP:function(){
    this.m
  }
}

思路:添加一個(gè)函數(shù)在input的時(shí)候改變message

v-cloak

解決初始化慢頁(yè)面閃動(dòng)

不需要表達(dá)式

用法:

這個(gè)指令保持在元素上直到關(guān)聯(lián)實(shí)例結(jié)束編譯。和 CSS 規(guī)則如 [v-cloak] { display: none } 一起用時(shí),這個(gè)指令可以隱藏未編譯的 Mustache 標(biāo)簽直到實(shí)例準(zhǔn)備完畢。

示例:

[v-cloak] {
  display: none;
}

<div v-cloak>
  {{ message }}
</div>

不會(huì)顯示,直到編譯結(jié)束。

v-once

  • 只渲染一次

v-if

v-if、v-else渲染時(shí)候會(huì)復(fù)用,加上key可以解決

v-if v.s v-show

v-if 如果為 false 是不渲染到 dom 上的
而 v-show 為 false 是渲染到 dom 上,display:none;
所以

  • v-show 有更高的初始化消耗,適用于切換頻繁的場(chǎng)景,如 Tab 等
  • v-if 有更高的切換消耗,適用于權(quán)限控制等 一次渲染的場(chǎng)景

v-text v.s {{}}v

v-text 和{{}}效果基本一樣,但是 v-text 在網(wǎng)速慢數(shù)據(jù)未加載的時(shí)候顯示為空,{{}}會(huì)顯示在 html 中,但書寫方便,推薦使用 v-text

scoped

代碼

<style scoped>
.example {
  color: red;
}
</style>

<template>
  <div class="example">hi</div>
</template>

渲染為:

<style>
.example[data-v-f3f3eg9] {
  color: red;
}
</style>

<template>
  <div class="example" data-v-f3f3eg9>hi</div>
</template>

值得注意的是:scoped 是用來(lái)保護(hù)本身樣式不影響全局,為組件私有樣式,不能保證全局變量不會(huì)影響到組件,所以命名還是要復(fù)雜點(diǎn),比如加個(gè)前綴。

過(guò)濾器 filters

語(yǔ)法{{message|myFilter}}
|線后面加過(guò)濾器
過(guò)濾器串聯(lián)
{{message|myFilter1|myFilter2}}
過(guò)濾器參數(shù)
{{message|myFilter(11,12)}} => myFilter:function(value,a,b)

computed

methods v.s computed
計(jì)算屬性,只有當(dāng)依賴改變時(shí)候才會(huì)重新取值
計(jì)算屬性具有緩存,依賴不改變,值不會(huì)變,而 methods 無(wú)緩存,每次頁(yè)面重新渲染,方法就會(huì)重新執(zhí)行

getter 和 setter

計(jì)算屬性有 getter 和 setter,分別在讀取和設(shè)置時(shí)候用

fullName:{
  get:function(){...}
  set:function(){...}  // app.fullName = 'setter text' 時(shí)候調(diào)用
  }
}

watch

監(jiān)聽某一個(gè)數(shù)據(jù)變化,需要在數(shù)據(jù)變化時(shí)執(zhí)行異步或開銷較大的操作時(shí)候,這個(gè)方法最有用
example

v-bind

對(duì)象語(yǔ)法
<div v-bind:class="{ active: isActive }"></div>

以上代碼表示 isActive 存在,class 中有 active
對(duì)象的鍵為類名,值為布耳值

把對(duì)像放在 computed 里面

<div v-bind:class="classObject"></div>

computed: {
  classObject: function () {
    return {
      active: this.isActive && !this.error,
      'text-danger': this.error && this.error.type === 'fatal'
    }
  }

數(shù)組語(yǔ)法

<div v-bind:class="[activeClass, errorClass]"></div>
<div v-bind:class="[isActive ? activeClass : '', errorClass]"></div>

<div v-bind:class="[{ active: isActive }, errorClass]"></div> //數(shù)組語(yǔ)法+對(duì)象語(yǔ)法

數(shù)組

改變數(shù)組的指定項(xiàng)

 Vue.set(app.arr,1,”car”)

改變數(shù)組長(zhǎng)度
app.arr.splice(1)

v-on

官網(wǎng)
修飾
stop:阻止單擊事件向上冒泡prevent:
prevent:提交事件并且不重載頁(yè)面
self:只是作用在元素本身而非子元素的時(shí)候調(diào)用
once: 只執(zhí)行一次的方法
使用方法:

<button @click.once="myMethod"></button>

監(jiān)聽鍵盤事件
官網(wǎng)

概念

MVVM

MVVM是Model-View-ViewModel的縮寫。MVVM是一種設(shè)計(jì)思想。Model 層代表數(shù)據(jù)模型,也可以在Model中定義數(shù)據(jù)修改和操作的業(yè)務(wù)邏輯;View 代表UI 組件,它負(fù)責(zé)將數(shù)據(jù)模型轉(zhuǎn)化成UI 展現(xiàn)出來(lái),ViewModel 是一個(gè)同步View 和 Model的對(duì)象。

在MVVM架構(gòu)下,View 和 Model 之間并沒有直接的聯(lián)系,而是通過(guò)ViewModel進(jìn)行交互,Model 和 ViewModel 之間的交互是雙向的, 因此View 數(shù)據(jù)的變化會(huì)同步到Model中,而Model 數(shù)據(jù)的變化也會(huì)立即反應(yīng)到View 上。

ViewModel 通過(guò)v雙向數(shù)據(jù)綁定把 View 層和 Model 層連接了起來(lái),而View 和 Model 之間的同步工作完全是自動(dòng)的,無(wú)需人為干涉,因此開發(fā)者只需關(guān)注業(yè)務(wù)邏輯,不需要手動(dòng)操作DOM, 不需要關(guān)注數(shù)據(jù)狀態(tài)的同步問(wèn)題,復(fù)雜的數(shù)據(jù)狀態(tài)維護(hù)完全由 MVVM 來(lái)統(tǒng)一管理。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容