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。我們可...