8個(gè)可以提高開(kāi)發(fā)效率的JavaScript 庫(kù)

1、Lodash
const _ = require("lodash");const objIntro = {title: "devpoint",city: "Shenzhen",};const arrMonths = ["一月", "二月"];_.forEach(objIntro, (value, key) => {console.log(`${key}:${value}`);});// title:devpoint// city:Shenzhen_.forEach(arrMonths, (value, index) => {console.log(`${index}:${value}`);});// 0:一月// 1:二月
2、Luxon
主頁(yè): https://moment.github.io/luxon/
Luxon 是一個(gè)非常流行的 日期/時(shí)間 操作庫(kù),是新項(xiàng)目的最佳選擇,因?yàn)樗褂酶F(xiàn)代的 Intl 對(duì)象,具有解析、操作和創(chuàng)建與時(shí)間相關(guān)的所有功能。
當(dāng)然還有一個(gè)類(lèi)似的 JavaScript 庫(kù)是 Moment 。
Intl 對(duì)象是 ECMAScript 國(guó)際化 API 的一個(gè)命名空間,它提供了精確的字符串對(duì)比、數(shù)字格式化,和日期時(shí)間格式化 【 詳細(xì)介紹 】。
const luxon = require("luxon");const convertTime = (timestamp, format = "yyyy-MM-dd hh:mm") => {return luxon.DateTime.fromMillis(timestamp).toFormat(format);};const now = luxon.DateTime.now();const nowUtc = now.toString(); // 2021-06-12T12:07:51.897+08:00const nowTimestamp = now.toMillis(); // 1623470871897const formatTime = convertTime(nowTimestamp); // 2021-06-12 12:07console.log(nowUtc); // 2021-06-12T12:07:51.897+08:00console.log(nowTimestamp); // 1623470871897console.log(formatTime); // 2021-06-12 12:07
3、NanoID
主頁(yè): https://github.com/ai/nanoid/
創(chuàng)建記錄唯一的 key ,一般采用自遞增的 ID 或者采用 UUID,這里推薦一個(gè)創(chuàng)建唯一 ID 的 JavaScript 庫(kù) NanoID。
NanoID 創(chuàng)建一個(gè)由字母數(shù)字組成的 ID,通常比 UUID 要小,它是用于創(chuàng)建安全并且唯一 ID 的最小庫(kù)之一,本身可以縮小并壓縮到僅只有 108 字節(jié)。
const { nanoid } = require("nanoid");const key = nanoid();console.log(key); // U6XRwZsfcDuexQ7m55qdy
4、Passport
主頁(yè): http://www.passportjs.org/
在現(xiàn)代 Web 應(yīng)用程序中,身份驗(yàn)證可以采用多種形式。傳統(tǒng)上,用戶通過(guò)提供用戶名和密碼進(jìn)行登錄。
隨著社交網(wǎng)絡(luò)的興起,使用 OAuth 提供商(如 Facebook 或 谷歌)的單點(diǎn)登錄已成為一種流行的身份驗(yàn)證方法,公開(kāi) API 的服務(wù)通常需要基于令牌的憑據(jù)來(lái)保護(hù)訪問(wèn)。
如果自己需要去實(shí)現(xiàn)整個(gè)邏輯還是挺繁瑣的,如果你有這方便的需求,可以考慮 Passport 。
app.post("/login", passport.authenticate("local"), function (req, res) {res.redirect("/users/" + req.user.username);});
5、Faker
主頁(yè): https://github.com/marak/Faker.js/
Faker 是一種將虛假數(shù)據(jù)快速添加到應(yīng)用程序中以進(jìn)行測(cè)試的腳本庫(kù),通過(guò)它可以生成姓名、圖片、產(chǎn)品信息、銀行信息等虛擬信息。
const faker = require("faker");const randomName = faker.name.findName();const randomEmail = faker.internet.email();const randomProductName = faker.commerce.productName();console.log(randomName); // Dr. Debbie Roweconsole.log(randomEmail); // [email protected]console.log(randomProductName); // Intelligent Frozen Keyboard
6、Axios
主頁(yè): https://github.com/axios/axios
Axios 是一個(gè)非常熟悉的基于 promise 的 HTTP 庫(kù),易于使用,常用于 vue 項(xiàng)目中。
axios.get("/auth?id=89").then(function (response) {console.log(response);}).catch(function (error) {console.log(error);});
7、axios-mock-adapter
主頁(yè): https://www.npmjs.com/package/axios-mock-adapter
axios-mock-adapter 是一款基于 axios 的請(qǐng)求模擬器,用來(lái)模擬 HTTP 請(qǐng)求,對(duì)于前端項(xiàng)目開(kāi)發(fā)非常實(shí)用,可以在后臺(tái)服務(wù)未完成之前按照 API 協(xié)議模擬相應(yīng)的請(qǐng)求及響應(yīng)。
在以 vue 做后臺(tái)管理項(xiàng)目中,可以使用它來(lái)實(shí)現(xiàn)請(qǐng)求攔截并模擬后臺(tái)回復(fù)。
8、Nodemon
主頁(yè): https://www.npmjs.com/package/nodemon
在開(kāi)發(fā) Web 應(yīng)用程序時(shí),特別是基于 node.js 的后臺(tái)服務(wù),Nodemon 是個(gè)不容錯(cuò)過(guò)工具。
在《 使用 Docker 開(kāi)發(fā)Node應(yīng)用程序 》中簡(jiǎn)單介紹過(guò)其使用,用來(lái)監(jiān)聽(tīng) node.js 項(xiàng)目中文件的更改并自動(dòng)重啟服務(wù)的工具。可以使開(kāi)發(fā)變得更容易,節(jié)省了每次更改時(shí)自己重新啟動(dòng)服務(wù)器的時(shí)間。
總結(jié)
合理利用開(kāi)源 JavaScript 庫(kù),避免重復(fù)制造輪子,以助于提升效率是個(gè)不錯(cuò)的選擇,同樣對(duì)于提升 JavaScript 編碼水平,這些開(kāi)源庫(kù)是個(gè)不錯(cuò)的教材。
學(xué)習(xí)更多技能
請(qǐng)點(diǎn)擊下方公眾號(hào)
![]()

