vue 基礎知識 總結


vue於jquery的區別

jquery主要時操作dom

vue 主要是操作數據 是一個漸進式前端框架,vue中渲染dom用到了diff算法,渲染dom要比原生js快

vue參數

Vue是一個構造函數,需要傳入options

el

掛載根元素

template

模板字符串,有template直接渲染這里的內容,如果沒有就找el元素中的內容進行渲染和掛載

data

為了各個實例直接互不影響,data需要是一個函數,返回一個對象

computed

監聽多個數據,默認只有getter

 

 

watch

監聽單個數據,watch監聽單個屬性,基本數據類型 簡單監視 
復雜數據類型 深度監聽deep:true

props  components  methods

生命周期鈎子

beforeCreate

組件創建之前,可以添加頁面加載loading

created

組件創建之后,使用該組件,就會調用created方法,可以操作后端的數據,數據響應視圖
應用 發送ajax請求

beforeMount

掛載數據到DOM之前會調用

mounted

掛載數據到DOM之后會調用,Vue作用之后的DOM

beforeUpdated

在更新dom之前 調用此鈎子函數 應用 獲取原始dom

updated

在更新dom之后調用, 應用 可以獲取最新的dom

beforeDestory

例如 v-if 每次切換時false就會調用beforeDestory和destroyed
當為true時,組件會被重新渲染一次

destroyed

應用 清除定時器

為了防止上述情況,可以使用keep-alive實現組件的緩存;
keep-alive:vue的內置組件,能在組件的切換過程中將組件的狀態保留在內存中,防止重復渲染dom

activated

組件被激活時調用 引用 路由

deactivated

組件被停用了
把v-if的dom放在keep-alive中就可以實現組件的緩存,在切換的過程中,就不會觸發
beforeDestory destoryed鈎子,指揮觸發activated deactivated鈎子


filters
ditrctivies

插值語法{{表達式}}
字符串 布爾值 三元表達式 對象 {{ {name:'zhangsan'} }}

MVVM model view view model

vue中內置指令

vue中的指令都是v-開頭的,對於頁面+數據的更為方便的輸出

v-text   innerText

v-html    innerHTML

v-if 判斷是否插入這個元素,相當於對元素進行創建和銷毀
是懶惰的,true才會渲染 有更高的切換開銷

v-else v-else-if

v-show 不管初始條件是啥都會渲染 有更高的初始渲染

v-for 優先級是最高的

data中的數據渲染在dom中,v-bind可以通過事件修改data,達到頁面數據更新的目的,單項數據流,數據改變,視圖跟着一起改變
雙向數據流 v-model v-bind:value="msg" @input='msg=e.target.value'實現雙向數據綁定
單向數據流 v-bind
v-model只適用用表單元素
可以自定義v-model組件

v-slot
v-model
v-on @
v-bind :
v-pre
v-once
v-cloak

內置組件

component
keep-alive
slot
transition
transition-group

內置屬性

is
key

ref
不能重名,如果重名只會獲取最后一個dom元素,前面的dom會被覆蓋
在原生dom上獲取原生dom元素,如果在組件上獲取的時組件對象,
盡量少用,vue中虛擬dom,使用diff算法渲染dom,速度比較快,如果使用ref操作dom就與原生js沒什么區別了

$nextTick(function(){})當DOM更新循環結束之后執行延遲回調,在修改數據之后使用,可以在回調函數中獲取到
更新后的DOM
slot

組件

聲明 掛載 使用
在組件上直接綁定事件,是不能直接觸發的,因為組件上默認為自定義事件,例如
<child @click="handleClick"></child>不會被系統識別為我們理解中的點擊事件
必須通過$emit方法綁定它才行。

<body>
<div id="root">
<child @click="handleClick"></child>
</div>
<script>
Vue.component('child',{
template:'<div @click="handleChildClick">Child</div>',
methods:{
handleChildClick:function(){
alert('child click')
this.$emit('click')
}
}
})

var vm = new Vue({
el: '#root',
methods: {
handleClick:function(){
alert('click')
}
}
})
</script>
</body>


如果想直接在組件上使用原生事件,需要在事件加上后綴.native就可以了
<child @click.native="handleClick"></child>

過濾器filters

使用過濾器:
數據屬性 | 過濾器名稱


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM