成人AV在线无码|婷婷五月激情色,|伊人加勒比二三四区|国产一区激情都市|亚洲AV无码电影|日av韩av无码|天堂在线亚洲Av|无码一区二区影院|成人无码毛片AV|超碰在线看中文字幕

es6 map 的實(shí)現(xiàn)原理 如何更優(yōu)雅的寫好JavaScript?

今天翻了翻一年多前寫的代碼,感覺年輕的自己寫的代碼真的是一個(gè)模式(不過現(xiàn)在好不了多少)。最近看了很多關(guān)于函數(shù)式編程和設(shè)計(jì)模式的書籍和文章,想分享一些讓JS代碼更優(yōu)雅的小技巧。1.善用函數(shù)式編程2.lo

今天翻了翻一年多前寫的代碼,感覺年輕的自己寫的代碼真的是一個(gè)模式(不過現(xiàn)在好不了多少)。最近看了很多關(guān)于函數(shù)式編程和設(shè)計(jì)模式的書籍和文章,想分享一些讓JS代碼更優(yōu)雅的小技巧。

1.善用函數(shù)式編程

2.lodash中一些有用的東西(LODASH是著名的JS工具庫,里面包含了很多函數(shù)方法和接口。在項(xiàng)目中引入邏輯可以簡化很多冗余的邏輯。)

babel介紹babel是一個(gè)js編譯器。我們通常使用react、vue等框架編譯成瀏覽器可以執(zhí)行的代碼。個(gè)人感覺巴別塔是前端建筑中最低最核心的部分。沒有它,前端肯定會回到刀耕火種的時(shí)代。

既然是編譯器,當(dāng)然會操作很多文件。在babel/core中,它讀取包括babelrc、pkgjson、插件、預(yù)置等在內(nèi)的大部分文件。,所以緩存操作文件的結(jié)果是必不可少的!

巴別塔 的緩存機(jī)制假設(shè)我們正在處理一個(gè)文件。對象和數(shù)組通常被用作js中的緩存容器。babel使用了es6提供的map,但它實(shí)際上是一個(gè)對象,只是它的鍵是任意的(不限于字符串)。

好了,現(xiàn)在我們有了一個(gè)緩存容器(map),那么關(guān)鍵是什么呢?用來標(biāo)記一個(gè)文件,一般可以選擇使用文件的路徑和文件名的md5值,babel使用的是前者。

處理文件的過程可以定義一個(gè)handle方法,文件路徑是handle的一個(gè)參數(shù)。有時(shí)候只有一個(gè)文件路徑不能滿足業(yè)務(wù)邏輯,還需要傳入其他參數(shù),所以handle還有第二個(gè)參數(shù)。

這里babel封裝了第二個(gè)參數(shù),使之成為具有狀態(tài)管理能力的對象,所以handle的第二個(gè)參數(shù)就是這個(gè)對象。

句柄處理后,你會得到這次一個(gè)文件的處理結(jié)果值。是否要現(xiàn)在保存地圖中的值?對不起,它 不是的!

CacheConfigurator是一個(gè)具有狀態(tài)管理能力的對象,可以在句柄處理過程中進(jìn)行修改。得到value的值后,需要識別CacheConfigurator的狀態(tài)。

CacheConfigurator有三種狀態(tài):

紅色字體的有效項(xiàng)是check函數(shù)never,不需要緩存。

永遠(yuǎn),你需要緩存,但是下次處理這個(gè)文件的時(shí)候,跳過驗(yàn)證部分,直接返回值。

有效,下次當(dāng)處理這個(gè)文件時(shí),你需要通過驗(yàn)證邏輯有效。

那么這個(gè)檢查邏輯是怎么來的呢?

那個(gè) 沒錯,它是在處理CacheConfigurator時(shí)由handle傳入的。

下次處理這個(gè)文件的時(shí)候,優(yōu)先考慮緩存的邏輯,只有通過驗(yàn)證后,才直接返回值!

整體思路是這樣的,蒙大拿的思路還是很微妙的。這個(gè)思路在其他業(yè)務(wù)中也可以參考!

喜歡我的回答就關(guān)注我。有問題可以評論。讓 讓我們一起學(xué)習(xí),一起成長!