vuex的原理是什麼? 它採用 集中式存儲管理 應用的所有組件的狀態,並以相應的規則保證狀態以一種可預測的方式發生變化。 每一個 Vuex 應用的核心就是 store,裡面又包括: (1)state(數據):用來存放數據源,就是公共狀態; (2)getters(數據加工):有的時候需要對數據源進行加 ...
vuex的原理是什麼?
它採用 集中式存儲管理 應用的所有組件的狀態,並以相應的規則保證狀態以一種可預測的方式發生變化。
每一個 Vuex 應用的核心就是 store,裡面又包括:
(1)state(數據):用來存放數據源,就是公共狀態;
(2)getters(數據加工):有的時候需要對數據源進行加工,返回需要的數據;
(3)actions(事件):要執行的操作,可以進行同步或者非同步事件
(4)mutations(執行):操作結束之後,actions通過commit更新state數據源(同步操作)
(5)modules:使用單一狀態樹,致使應用的全部狀態集中到一個很大的對象,所以把每個模塊的局部狀態分裝使每一個模塊擁有本身的 state、mutation、action、getters、甚至是嵌套子模塊;
vue組件通信方式
props 父子組件通信
通過emite觸發自定義事件
兄弟組件通信
EventBus
$ref通過獲取節點通信
依賴插入provide/reject
多層嵌套:
$attrs, $listener
Vuex狀態管理器
localStorage/SessionStorage持久化存儲
localstorage和sessionstorage的區別
- 存儲時間:localStorage的生命周期是永久的,sessionStorage的生命周期是在僅在當前會話下有效。關閉就沒有了,只在當前標簽可用,當前標簽的iframe中且同源可以共用
- 存儲大小:5MB
- 存儲位置:都保存在客戶端
- 存儲類型:字元串類型
- 獲取方式:localStorage:window.localStorage;;sessionStorage:window.sessionStorage
- 應用場景:localStoragese:常用於長期登錄(+判斷用戶是否已登錄),適合長期保存在本地的數據。sessionStorage:敏感賬號一次性登錄
wather和compents的區別
-
共同點:都是用於監聽數據變化的屬性
-
不同點:
- computed 如果函數所依賴的屬性沒有發生變化,從緩存中讀取, 必須有return返回
- watch中的函數是不需要調用的,只會監聽數據的值是否發生改變,而不會去監聽數據的地址是否發生改變,要深度監聽需要配合deep:true屬性使用, immediate:true 頁面首次載入的時候做一次監聽
-
應用場景:computed 應用於數據計算,watch用於數據監聽
錯誤的code碼
- 200 成功處理請求
- 300 重定向,完成請求,需要進一步操作
- 400 請求錯誤,語法錯誤或者許可權錯誤
- 500 伺服器錯誤
vue的生命周期函數
Vue2
`beforeCreate`階段data、methods、computed以及watch上的數據和方法都不能被訪問。
`created`在實例創建完成後發生,當前階段已經完成了數據觀測,也就是可以使用數據,更改數據,在這裡更改數據不會觸發updated函數。可以做一些初始數據的獲取,在當前階段無法與Dom進行交互,如果非要想,可以通過vm.$nextTick來訪問Dom。
`beforeMount`發生在掛載之前,在這之前template模板已導入渲染函數編譯。而當前階段虛擬Dom已經創建完成,即將開始渲染。在此時也可以對數據進行更改,不會觸發updated。
`mounted`在掛載完成後發生,在當前階段,真實的Dom掛載完畢,數據完成雙向綁定,可以訪問到Dom節點,使用$refs屬性對Dom進行操作。
`beforeUpdate`發生在更新之前,也就是響應式數據發生更新,虛擬dom重新渲染之前被觸發,你可以在當前階段進行更改數據,不會造成重渲染。
`updated`發生在更新完成之後,當前階段組件Dom已完成更新。要註意的是避免在此期間更改數據,因為這可能會導致無限迴圈的更新。
`beforeDestroy`發生在實例銷毀之前,在當前階段實例完全可以被使用,我們可以在這時進行善後收尾工作,比如清除計時器。
`destroyed`發生在實例銷毀之後,這個時候只剩下了dom空殼。組件已被拆解,數據綁定被卸除,監聽被移出,子實例也統統被銷毀。
vu3
`beforeCreate`和`create`被`setup`取代
`beforeDestroy`和`destroyed`被`beforeUnmount`和`unmounted`取代
`errorCaptured`: 在捕獲了後代組件傳遞的錯誤時調用。
`renderTracked`:(僅開發時用)在一個響應式依賴被組件的渲染作用追蹤後調用。
`renderTriggered`: (僅開發時用) 在一個響應式依賴被組件觸發了重新渲染之後調用。
`activated`: 若組件實例是`<KeepAlive>` 緩存樹的一部分,當組件被插入到 DOM 中時調用。
`deactivated`: 若組件實例是`<KeepAlive>` 緩存樹的一部分,當組件從 DOM 中被移除時調用。
`serverPrefetch`: 當組件實例在伺服器上被渲染之前要完成的非同步函數。
常用到的有哪些組件封裝
1- 正常的封裝組件,導入組件
2- 通過slot 封裝組件,
3- 全局註冊組件Vue.component()
混入模式
flex佈局
# nowrap不換行 wrap換行 wrap-reverse:倒敘換行
flex-wrap: nowrap
ts
unknow和any的區別
any意味著ts不會對它進行任何類型校驗
在`unknown`沒有被斷言或細化到一個確切類型之前,是不允許在其上進行任何操作的。