Vue思維導圖目錄
-
與MVC
的差別MVVM
-
基本代碼結構Vue
-
指令Vue
-
元件Vue
-
和class
動态綁定style
-
計算屬性computed
-
EventBus
-
過濾器方法filter
Vue
是一套建構使用者界面的架構,隻關注視圖層,它不僅易于上手,還便于與第三方庫或既有項目整合。(
Vue
有配套的第三方類庫,可以整合起來做大型項目的開發)
![](https://img.laitimes.com/img/__Qf2AjLwojIjJCLyojI0JCLicmbw5SYzM2MmRGM4QWN1IGZjRzYzUzNmRWO4EDZzQGN3QmZ08CX0JXZ252bj91Ztl2Lc52YucWbp5GZzNmLn9Gbi1yZtl2Lc9CX6MHc0RHaiojIsJye.png)
0.MVC 與MVVM的差別
-
是後端的分層開發概念;MVC
-
是前端視圖層的概念,主要關注于 視圖層分離 。MVVM
把前端的視圖層分為了三部分:MVVM
,Model
,View
VM ViewModel
1.Vue基本代碼結構
const vm = new Vue({
el:'#app',//所有的挂載元素會被 Vue 生成的 DOM 替換
data:{ // this->window },
methods:{ // this->vm},
//注意,不應該使用箭頭函數來定義 method 函數 ,this将不再指向vm執行個體
props:{} ,// 可以是數組或對象類型,用于接收來自父元件的資料
//對象允許配置進階選項,如類型檢測、自定義驗證和設定預設值
watch:{ // this->vm},
computed:{},
render(){},
// 聲明周期鈎子函數
})
當一個
Vue
執行個體被建立時,它将
data
對象中的所有的
property
加入到
Vue
的響應式系統中。當這些
property
的值發生改變時,視圖将會産生
響應,即比對更新為新的值。
例外:
-
執行個體外部新增的屬性改變時不會更新視圖。Vue
-
,會阻止修改現有的Object.freeze()
,響應系統無法追蹤其變化。property
執行個體屬性和方法
- 通路
屬性:el
,`document.getElemnetById(‘app’)``;vm.$el
- 通路
屬性:data
vm.$data
- 以
或_
開頭的$
不會被property
執行個體代理,因為它們可能和Vue
内置的Vue
、property
方法沖突。你可以使用例如API
的方式通路這些vm.$data._property
。property
- 通路
中定義的變量:data
,vm.a
vm.$data.a
- 通路
中的方法:methods
vm.方法名()
- 通路
方法:watch
vm.$watch()
不要在選項
property
或回調上使用箭頭函數,
this
将不會指向
Vue
執行個體 比如
created: () => console.log(this.a)
或
vm.$watch('a', newValue => this.myMethod())
。
因為箭頭函數并沒有
this
,
this
會作為變量一直向上級詞法作用域查找,直至找到為止,經常導緻
Uncaught TypeError: Cannot read property of undefined
或
Uncaught TypeError: this.myMethod is not a function
之類的錯誤。
2. Vue指令
插入資料:
- 插值表達式相當于占位符,不會清空元素中的其他内容。直接寫在标簽中。會将
标簽作為文本顯示。html
-
會覆寫元素中原本的内容。寫在開始标簽中,以屬性的形式存在。會将v-text
标簽作為文本顯示。html
-
會覆寫元素中原本的内容,會将資料解析成v-html(innerHTML)
标簽。html
3. Vue元件
元件配置對象和vue執行個體的差別
- 元件配置對象沒有
,元件模闆定義在el
中;template
- 元件配置對象中
是函數,該函數傳回的對象作為資料。data
建立元件模闆
- 方法一
var com = Vue.extend({
//通過template屬性 指定元件要展示的html結構
template:'<h3>這是使用Vue.extend搭建的全局元件</h3>'
})
- 方法二:使用對象建立模闆
{
template:'<h3>這是使用Vue.extend搭建的全局元件-com3</h3>'
}
- 方法三:使用
标簽(寫在受控區域外面)建立模闆,通過template
建立聯系id
<template id="tmpl"> 寫在受控區域外面
......
</template>
{ template:'#tmpl' }
元件中的data是一個函數的原因
- 多次使用該元件,如果修改其中一個中的資料,另一個也會改變。
- 寫成函數的形式,每次調用函數,傳回一個新的對象
ref屬性
- 擷取
元素/元件:标簽上添加dom
屬性,ref
屬性值擷取該this.$refs.ref
。dom元素/元件
-
屬性值this.$refs.ref
擷取元件中的資料.變量名
-
屬性值this.$refs.ref
擷取元件中的方法.方法名()
$parent
和 $children
擷取 父/子元件的資料和方法
$parent
$children
-
擷取父元件this.$parent
-
由于子元件的個數不确定 傳回的是一個數組 ,不是對象$children
-
擷取第一個子元件this.$children[0]
作用域插槽:父元件替換插槽的标簽,内容由子元件決定。
編譯的作用域:自身的資料在自身模闆 template
标簽中生效
- 插槽上添加 屬性綁定 :
data=’子元件中的資料’
- 父元件通過
标簽,添加template
slot-scope=’slot’
屬性接收子元件中的資料slot-scope
slot.data
-
标簽中的html結構替換template
插槽中的預設slot
結構。html
4.class和style動态綁定
綁定
5.computed 計算屬性
6.EventBus
7.filter過濾器方法
原作者姓名:1024 FED
原出處:騰訊雲
原文連結:面試必備 Vue 知識點 - 雲+社群 - 騰訊雲