3個(gè)很棒的小眾JavaScript庫(kù),你值得擁有
JavaScript有很多庫(kù),每個(gè)人都已經(jīng)對(duì)最重要和最受歡迎的庫(kù)做過(guò)總結(jié),但很快再次迷失。
在本文中,小芯將分享3個(gè)鮮為人知但非常強(qiáng)大,且很小的JavaScript庫(kù),這些庫(kù)將使你的生活變得簡(jiǎn)單,也不會(huì)給你的web應(yīng)用程序增加不必要的負(fù)擔(dān)。
1. JS-cookie
OfficialGitHub
在瀏覽器中使用cookies可能會(huì)非常費(fèi)力。JS cookies讓這件事變得簡(jiǎn)單多了,現(xiàn)在我們將學(xué)習(xí)基本知識(shí)。
通過(guò)CDN實(shí)施:
- <script src="https://cdn.jsdelivr.net/npm/js-cookie@beta/dist/js.cookie.min.js"></script>
設(shè)置一個(gè)名為“name”的cookie鍵,其值為“Max”
- Cookies.set(‘name’, ‘Max’)
獲取密鑰為“name”的cookie值
- Cookies.get(‘name’) // 'Max'
創(chuàng)建cookie,讓它在7天后過(guò)期
- Cookies.set('name', 'Max', { expires:7 })
刪除cookie
- Cookies.remove(‘name’)
得出所有cookie
- Cookies.get() // { name: 'Max' }
來(lái)源:Pexels
2. Basket.js
OfficialDocumentation
Basket.js是一個(gè)極簡(jiǎn)的腳本加載程序庫(kù),壓縮后只有0.7kB。
(它使用的另一個(gè)庫(kù)壓縮后大約為5kB,如https://github.com/addyosmani/basket.js/issues/61中所述,但仍然很小)
但是basket.js不僅可以加載外部JavaScript,還可以將其緩存在瀏覽器的本地存儲(chǔ)中,這樣在下一頁(yè)請(qǐng)求時(shí),就不必再次通過(guò)網(wǎng)絡(luò)請(qǐng)求外部JavaScript,而只需從本地存儲(chǔ)中加載即可。
但為什么是本地存儲(chǔ)而不是瀏覽器緩存呢?
首先,我個(gè)人認(rèn)為通過(guò)JS庫(kù)在web頁(yè)面代碼中緩存JavaScript文件要容易得多,通常是從服務(wù)器端緩存的。使用Basket.js,很容易在代碼中使用JavaScript動(dòng)態(tài)控制腳本緩存。
我們?cè)囋嚳矗?/p>
實(shí)際的API并沒(méi)有那么復(fù)雜。我認(rèn)為你可以自己探索一下文檔,在下面的簡(jiǎn)單示例中,我們只使用basket.require,因?yàn)樗钦麄€(gè)庫(kù)的核心。
- basket.require()
- basket.get()
- basket.remove()
- basket.clear()
使用basket.require,我們可以通過(guò)basket加載JS文件。然后這個(gè)文件被緩存在本地存儲(chǔ)中,正如前文所述,下一次basket.require請(qǐng)求這個(gè)文件,例如,當(dāng)重新加載頁(yè)面時(shí),basket將首先在緩存中查找?;蛘呷绻募呀?jīng)緩存在那里,它將通過(guò)本地存儲(chǔ)加載文件,而不是通過(guò)網(wǎng)絡(luò)再次發(fā)出請(qǐng)求。
index.html:
在這里你可以找到庫(kù):
- https://addyosmani.com/basket.js/dist/basket.min.js
- https://cdn.jsdelivr.net/npm/rsvp@4/dist/rsvp.min.js
- https://cdnjs.cloudflare.com/ajax/libs/jquery/3.4.1/jquery.min.js
- <!DOCTYPE html>
- <html lang=”en”>
- <head>
- <meta charset=”UTF-8" />
- <scriptsrcscriptsrc=”rsvp.min.js”></script>
- <scriptsrcscriptsrc=”basket.min.js”></script>
- <title>Document</title>
- </head>
- <body>
- <script>
- basket.require({ url:'/scripts/jquery.js' })
- </script>
- </body>
- </html>
如你所見(jiàn),首先導(dǎo)入Basket.js需要的RSVP庫(kù)。然后回到Basket本身,在body中可以執(zhí)行require函數(shù),從某個(gè)地方加載jQuery。
第一次打開(kāi)頁(yè)面時(shí),應(yīng)該看到:
jQuery是通過(guò)網(wǎng)絡(luò)正常請(qǐng)求的。
但隨著頁(yè)面的重新加載:
jQuery不再列在Network選項(xiàng)卡中,它是從本地存儲(chǔ)加載。
以上就是整個(gè)“魔法”過(guò)程。
3. Pill
Official Github
“Pill將動(dòng)態(tài)內(nèi)容加載添加到靜態(tài)站點(diǎn),并使內(nèi)容加載更為順暢。”壓縮后大約為1KB。
Pill的開(kāi)發(fā)始于這篇推文:https://twitter.com/sitnikcode/status/1109626507331338240
精髓:大多數(shù)人使用單頁(yè)應(yīng)用程序來(lái)運(yùn)行web應(yīng)用程序,點(diǎn)擊時(shí),不會(huì)加載整個(gè)新頁(yè)面。在大多數(shù)SPA框架中,這是因?yàn)樗袃?nèi)容都基于一個(gè)index.html。
但如果有多個(gè)靜態(tài)頁(yè)面呢?Pill能夠幫你解決。
根據(jù)需要,它將獲取服務(wù)器上其他HTML文件的內(nèi)容,并將當(dāng)前內(nèi)容替換為新的已獲取內(nèi)容。
這是巨大的性能改進(jìn),因?yàn)槲覀兊膽?yīng)用程序不再要求一個(gè)完整的新頁(yè)面。
重要的內(nèi)容剛剛被替換。
使用Pill,能攔截導(dǎo)航嘗試,自動(dòng)完成上述步驟。
Pill最好的一點(diǎn)是,它會(huì)通過(guò)一個(gè)個(gè)示例來(lái)記載,確保檢查所有的東西:你可以在GitHub上找到代碼
(https://GitHub.com/rumkin/pill/tree/master/example)
祝你和Pill合作愉快!