vue應用 1 面試必問

2021-09-29 01:47:36 字數 2873 閱讀 9497

1. mvc - 使用者在檢視(view)觸發按鈕或者事件(controller),控制器修改了(model),model在把修改同步到view中

m - model 資料

v - view 檢視、介面

c - controller 控制器、邏輯處理

2. model - 模型、資料

view - 檢視、模板(檢視和模板是分離的)

viewmodel - 連線model和view

3. mvvm核心就是資料發生變化的時候自動重新整理dom,這使得我們能從繁瑣的 dom 操作中解放出來,從而專心地去處理業務邏輯(

4. mvvm的設計模式是觀察者模式

4-1:任何乙個 vue component 都有乙個與之對應的 watcher 例項。

4-2:vue初始化會給每個 component 中新增dep例項,並且會在 data和props 上的屬性會被新增 getter 和 setter 屬性,

4-3:當執行到render函式的時候,會觸發getter函式,呼叫depend方法收集此元件依賴的所有data,並發布訂閱,建立聯絡

4-4:data 被改動時,setter 方法會被呼叫,呼叫notify方法通知所有依賴於此 data 的元件去呼叫他們的 render 函式進行更新。

第一步從開發環境打包的時候它已經是render函式,會把data的屬性全部變成js變數,v-if等指令變成js邏輯,最終返回虛擬dom,不同是使用了with方法,with方法就是簡化物件的使用,例如:**1**1.width演示

第二步監聽的時候使用object.defineproperty的get,set方法監聽

1. 解析模板成render函式

2. 響應式開始監聽

3. 首次渲染,顯示頁面,且繫結依賴,類似vdom的path

4. data屬性變化,觸發rerender(就是render的再次執行), 類似vdom的patch的對比渲染

5. **1.with演示:

var obj =

// with用法,簡化不用寫obj.title

with(obj), title)

}

beforcreate/cerated(可以在created中首次拿到data中定義的資料)

beformount/mounted(此時dom樹渲染結束,可訪問dom結構)

beforupdate/updated

befordestroy/destroyed

簡單介紹:

在 vue 中,computed 的屬性可以被視為是 data 一樣,可以讀取和設值,因此在 computed 中可以分成 getter(讀取) 和 setter(設值),一般情況下是沒有 setter 的,computed 預設只有 getter ,也就是只能讀取,不能改變設值。

vue.js計算屬性預設只有 getter,因為是預設值所以我們也常常省略不寫,如下**:

"demo"

>

}var vm = new vue(

}, computed: }}

)其實computed裡的**完整的寫法應該是:

computed: }}

讀取和設定computed值:

aplus: ,

set: function

(v)}

讀取:this.aplus 得到的值2

設定:this.aplus = 3 會走set方法,v就是3

1. watch預設一開始是不監聽的

2. 如果將 immediate 設定為 true 則在監聽函式後立即執行

3. deep 為 true 則可以深層監聽

4. 利用deep深層監聽會有效能損耗,則可以用字串監聽例如:'obj.a'

:5. 詳解可參考

詳解:
舉乙個場景:created的時候dom是沒有渲染的,如果希望在created中獲取到dom,則需要在$nexttick中獲取,$nexttick是非同步的

created())

}, mounted(

)

export default }},

mounted(),

methods:

}}

遞迴元件的必要條件

這個函式必須有函式名稱

這個遞迴函式必須有結束條件,不然就會報maximum call stack size exceeded,記憶體溢位

父元件:

"treedata"

>

import cview from "../components/c.vue"

export default ,

data(),

]},,

]}]}

}, mounted()}

子元件

"(item, i) in tresdata" :key=

"i">

}"item.children && item.children.length" :tresdata=

"item.children"

>

export default

面試必問之 static

static常見用法三個,第乙個是和多檔案系統結合使用,決定是否可以被訪問。第二個是和變數初始化結合,乙個元素的初始化只能初始化一次,陣列初始化預設為0。1。多檔案結構中,static 對 variance fun的隱藏功能。static int i static void fun void fun...

面試必問之 const

主要用法如下 目錄 1.常量 常指標 常引用 2.修飾函式引數 2.修飾函式引數 3.修飾成員函式 const 常量不能改變 const int x 5 x 12 常指標不能通過指標改變變數的值,但是可以改變變數的指向。const 常指標 int x,y const int p x p 2 erro...

MYSQL面試必問 INSERT BUFFER

insert buffer即合併插入快取,從mysql 5.1.x版本 innodb 1.0.x 開始引入changebuffer,是insert buffer公升級版,不僅包括insert buffer,還包括update buffer delete buffer purge buffer。我們可...