題目來源: 牛客
MVVM怎么實現
MVVM分別指View、Model、ViewModel,View通過View-Model的DOM監聽器將事件綁定到Model上,而Model則通過Data Bindings來管理View中的數據,View-Model從中起到一個連接的作用
- 響應式: vue如何監聽data的屬性變化
- 模板解析: vue的模板是如何被解析
- 渲染: vue的模板是如何被渲染成HTML
發布訂閱模式
發布訂閱模式是一種對象間一對多的依賴關系,當一個對象的狀態發送改變時,所有依賴于它的對象都將得到狀態改變的通知。訂閱者把自己想訂閱的事件注冊到調度中心,當發布者發布該事件到調度中心,由調度中心統一調度訂閱者注冊到調度中心的回調函數
- 創建一個對象
- 在該對象上創建一個緩存列表
- on 方法用來把函數fn都加到緩存列表中
- emit 方法用來取到arguments里第一個當作event,根據event值去執行對應緩存列表中的函數
- off 方法可以根據event值取消訂閱
- once 方法只監聽一次,調用完畢后刪除緩存函數
觀察者模式和發布訂閱模式的區別
- 觀察者模式是軟件設計模式中的一種,但發布訂閱模式是軟件架構模式的一種消息范式
- 觀察者模式需要觀察者和被觀察者,發布訂閱模式需要發布者、訂閱者和發布訂閱中心
- 觀察者模式一般是一對多的關系,通過被觀察者主動建立,需要至少三個方法:添加觀察者|移除觀察者|通知觀察者;發布訂閱者是基于一個中心來建立整個體系,其中發布者和訂閱者不直接進行通信,而是發布者把要發布的消息交給中心管理,訂閱者也是根據自己的情況按需訂閱消息
Vue單向數據流
所有的prop都使得其父子prop之間形成了一個單向下行綁定:父級prop的更新會向下流動到子組件中,但是反過來則不行。這樣能防止子組件意外改變父組件的狀態,從而導致應用的數據流向難以理解
原生JS監聽鼠標
- click: 單擊鼠標左鍵
- dblclick: 單機鼠標右鍵
- mousedown: 單機任意一個鼠標按鈕
- mouseout: 鼠標指針位于某個元素啊上且將要移除元素的邊界
- mouseover: 鼠標指針移出某個元素到另一個元素上
- mouseup: 松開任意一個鼠標按鈕時發生
- mousemove: 鼠標在某個元素上持續發生
cookie|localstorage|sessionstorage
三者都是開發中用到的臨時存儲客戶端會話信息或者數據的方法
- 有效期不同: cookie有效期可以設置,默認時瀏覽器關閉后失效;sessionStorage默認是當前頁面關閉后失效;localStorage默認是永久有效,需要手動刪除
- 存儲大小不同: cookie在4kb左右;localStorage和sessionStorage的容量在5Mb
- 服務端通信: cookie會參與到服務端通信中,一般會攜帶在http請求的頭部中;localStorage和sessionStorage不參與服務端通信
- 讀寫操作: cookie操作起來較為繁瑣,部分數據不可讀取操作;sessionStorage和localStorage操作起來較為簡便
- 支持程度: cookie出現時間更早,瀏覽器支持程度更高
盒子模型
盒子分為margin、border、padding、content,其中width=content
怪異盒模型
盒子分為margin、border、padding、content,其中width=content + padding * 2 + border * 2
ref|reactive|toRef|toRefs
- ref: 用于為數據添加響應式狀態,獲取數據值需要.value
- reactive: 用于為對象添加響應式狀態,不需要.value
- toRef: 用于為源響應式對象上的屬性新建一個ref,從而保持對其源對象的響應式連接,返回一個ref數據
- toRefs: 用于將響應式對象轉化成結果對象,其中結果對象的每個屬性都是指向原始對象相應屬性的ref,可以在對象解構時賦予響應式
JS數據類型
- Number
- Boolean
- Null
- Undefined
- Object
- String
- Symbol
- BigInt
v-model
v-model負責監聽用戶的輸入事件以更新數據,背后由兩個操作:v-bind綁定value屬性的值;v-on綁定input事件監聽函數
MVVM框架理解及其原理實現
JavaScript 發布-訂閱模式
理解【觀察者模式】和【發布訂閱】的區別
理解vue的單向數據流
JS鼠標事件(非常詳細)
cookie、localStorage和sessionStorage三者的區別
CSS詳解——盒子模型
全網最詳細的v-model講解
ref、reactive、toRef、toRefs的區別
新手發文,禮貌求關??