天天看點

一些筆記20200714

一些筆記20200714

this.$once('hook:beforeDestroy', function () { picker.destroy() }):

Vue3.0确實是新增了hook,有點靠近了react,但是這個是很早之前就出的,很奇怪,為什麼沒多少有介紹到。最簡單的使用場景就是監聽滾動或者計時器在元件銷毀的時候清除,這段代碼相當于在元件銷毀的時候執行picker.destroy(),在vue官網/教程/深入了解元件/處理邊界情況/程式化的事件監聽器可以看看API。

@hook:

說實在的,這個文法我中文文檔和英文文檔都查了很久,沒發現API有這個文法,但是确實是能實作,就是監聽外部元件的生命周期

<Test @hook:mounted="childrenMounted"></Test>

當子元件執行mounted的時候,父元件就會執行childrenMounted方法,這在一定場景應該是有用的。

.sync修飾符:

之前就說過v-model是一個雙向綁定的文法糖,vue還提供了.sync這個修飾符對一個props進行雙向綁定,其實就是v-bind和v-on的文法糖,某些場景比使用props傳遞更理想。

Component動态元件:

前幾天才覺得react可以把元件當作參數傳遞非常神奇,想想之前在做頁面内tab切換的時候,一堆的v-if去判斷,其實直接使用内置的動态元件更省事,以前知道這個,但是居然沒有在項目中使用:

<component :is="component" v-if="componentShow" />

Object.freeze():

Vue會遞歸監聽data裡面所有的對象,這是性能痛點之一,而這個方法,可以當機一個對象,如果在vue裡面聲明的資料隻是第一次渲染使用,可以直接當機,不進行監聽,如果你想重新進行監聽可以直接指派也是可以的,這方法也可以作為一個長清單性能優化使用:

data裡面定義:

obj1: Object.freeze({a:1}),

obj2: {b: 2}

mounted(){

console.log(this.obj1)

console.log(this.obj2)

}

輸出:

一些筆記20200714

HTTP協定通信最耗費時間的是建立TCP連接配接的過程,那我們就可以使用HTTP Keep-Alive。但是,keep-alive長時間的TCP連接配接容易導緻系統資源無效占用。配置不當的keep-alive,有時比重複利用連接配接帶來的損失還更大。是以正确地設定keep-alive timeout時間非常重要。浏覽器對于TCP的keep-alive有連接配接限制4-6個。

減少HTTP請求次數将多個檔案壓縮打包成一個,當然也不能都放在一個檔案中,因為這樣傳輸起來可能會很慢,權衡取一個中間值。配置使用懶加載,對于一些使用者不立刻使用到的檔案到特定的事件觸發再請求,伺服器資源的部署盡量使用同源政策。服務端最好開啟gzip。

JSX 文法:

HTML 語言直接寫在 JavaScript 語言之中,不加任何引号,這就是 JSX 的文法,允許 HTML 與 JavaScript 的混寫HTML 标簽(以 < 開頭),就用 HTML 規則解析;遇到代碼塊(以 { 開頭),就用 JavaScript 規則解析。原諒我之前并不能解釋jsx文法。