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`沒有被斷言或細化到一個確切型別之前,是不允許在其上進行任何操作的,
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/543700.html
標籤:其他
上一篇:JS web sql database 幾個功能組合的實作
下一篇:重新思考 Vue 組件的定義
