譯者按: 作者將自己常用的JavaScript模塊分享給大家。
米東ssl適用于網(wǎng)站、小程序/APP、API接口等需要進(jìn)行數(shù)據(jù)傳輸應(yīng)用場景,ssl證書未來市場廣闊!成為創(chuàng)新互聯(lián)公司的ssl證書銷售渠道,可以享受市場價(jià)格4-6折優(yōu)惠!如果有意向歡迎電話聯(lián)系或者加微信:13518219792(備注:SSL證書合作)期待與您的合作!本文介紹了我在日常工作中一直使用的JavaScript模塊,包括NodeJS和前端JavaScript。當(dāng)然,這篇文章會(huì)有強(qiáng)烈的個(gè)人主觀性。我推薦的模塊可能會(huì)有遺漏,并且不會(huì)包含任何特定用途的模塊。比如有一些推薦的模塊確實(shí)很酷,但是不一定實(shí)用。
我們先來介紹命令行工具。
如果你是一個(gè)npm包的作者,我強(qiáng)烈推薦你使用np,它使得版本控制、添加git release tag,和發(fā)布到npm一氣呵成。特別是如果你擁有多個(gè)npm模塊的時(shí)候。同時(shí)我也推薦Zeit發(fā)布的release也是一個(gè)很不錯(cuò)的選擇。
盡管np v5已經(jīng)比之前的版本快了許多,從速度和一致性的角度,我依然更加傾向于在本地開發(fā)中使用yarn來管理。不管哪種方式,底層都是在和同一個(gè)npm模塊的數(shù)據(jù)庫交互,所以我想他兩之間沒有一個(gè)絕對(duì)的勝者。你選擇最適合你自己的就好。
作為一個(gè)2018年的JS開發(fā)者,我建議你將兩者都熟悉。
Prettier通過分析你的代碼然后重新排版來保證代碼格式的一致性。我喜歡eslint并一直使用JavaScript的標(biāo)準(zhǔn)格式風(fēng)格,但是prettier和gofmt這種自動(dòng)化格式美化帶來的吸引力無法拒絕。
作為開發(fā)者,我們花了太多的時(shí)間和精力去維護(hù)代碼格式,實(shí)在是浪費(fèi)。使用prettier這類工具可以讓我們從這些瑣事中解脫,專注于代碼。
從簡潔性、穩(wěn)定性和擁有的特性上來說,Now絕對(duì)是現(xiàn)在最好的免費(fèi)的部署系統(tǒng)。不管是靜態(tài)還是動(dòng)態(tài)部署、甚至要擴(kuò)展到多個(gè)服務(wù)器,都可以很好的為你服務(wù)。而且,最重要的一點(diǎn),就算你擴(kuò)展到多服務(wù)器,還是免費(fèi)的!
Now對(duì)Node.js以及JS支撐的網(wǎng)頁應(yīng)用都支持很好。我強(qiáng)烈推薦你們也看看Zeit推出的其它服務(wù)。
你可以使用asciinema來錄制Terminal操作。
我發(fā)現(xiàn)pify是最好的模塊,用來將回調(diào)函數(shù)風(fēng)格的函數(shù)轉(zhuǎn)為Promise。它很輕巧,而且有連util.promisify都沒有的自動(dòng)方法綁定功能。
p-map用來設(shè)置并發(fā)地執(zhí)行promises??紤]到計(jì)算資源和帶寬,你肯定不想沒有限制地完全并發(fā)所有的promise,p-map可以設(shè)置并發(fā)數(shù)量。我想你完全可以用p-map來替代Promise.all(...)。
通常,我會(huì)使用p-retry將所有的HTTP請求和外部服務(wù)包裹起來,來進(jìn)一步增強(qiáng)代碼的健壯性。p-retry可以配置retry的次數(shù)。配合p-map,你可以并發(fā)執(zhí)行大量的請求而且不用擔(dān)心偶爾遇到網(wǎng)絡(luò)錯(cuò)誤、服務(wù)器超時(shí)和Socket中斷等等。
p-timeout也是一個(gè)必不可少的模塊。
通過LRU緩存來記住async函數(shù)的結(jié)果。
這些Promise工具函數(shù)庫讓我想起了關(guān)于構(gòu)建健壯微服務(wù)的文章,每一個(gè)外部依賴都可以包含一個(gè)統(tǒng)一的接口包括retry, timeout, caching,circuit breakers, 回滾等等。
如果你想處理原生的HTML,Cheerio是一個(gè)很棒的工具。它提供了像jQuery一樣的語法來訪問和處理HTML文檔。Cheerio配合request-promise-native來獲取網(wǎng)頁最佳。
和cheerio不同,puppeteer是一個(gè)用來自動(dòng)化運(yùn)行headless chrome instance的工具。它可以用來:1. 生成頁面的截圖或則PDF;2. 爬取單頁面應(yīng)用內(nèi)容并將其渲染(×××);3. 自動(dòng)化表單填寫、UI測試、輸入等等。它將逐漸取代像PhantomJS這樣的技術(shù)。
dotenv-safe是dotenv模塊的擴(kuò)展,從.env
加載本地環(huán)境變量,并確保它們都存在。通過配置.env.example
文件來制定哪些變量必須要配置。
執(zhí)行HTTP請求是一個(gè)很常見的操作,我選擇request-promise-native模塊。該模塊將request模塊拓展成Promise。95%的情況下,我使用await來處理HTTP請求,只有5%的時(shí)間我需要直接用request來處理返回?cái)?shù)據(jù)。
為了健壯性,我會(huì)配合p-retry,p-timeout和p-cache來使用。
另外我補(bǔ)充一下, got是一個(gè)新的候選項(xiàng),雖然我還沒怎么使用很多。
Consolidate用來處理后端模板化很有用(郵件、推特、原生HTML等等)。我通常使用handlebars來作為模板引擎,不過我會(huì)配合使用consolidate。因?yàn)樗懈雍啙嵑蚒I之的界面,不管你在底層使用何種引擎都可以配合使用。
當(dāng)你需要執(zhí)行shell腳本或則子進(jìn)程的時(shí)候很有用。
我?guī)缀醪皇褂胒s模塊了,fs-extra為fs模塊附加了不少方法并且支持Promise。
D3 (Data-Driven Documents) 是一個(gè)流行的前端數(shù)據(jù)可視化庫,它同時(shí)也包含了很多常見的數(shù)學(xué)操作的庫。我經(jīng)常用到那些庫,接下來推薦給你們。
d3-random 生成隨機(jī)數(shù)
當(dāng)你覺得Math.ramdom不夠用的時(shí)候,不妨試試d3-random。它支持用不同的分布來隨機(jī),比如均勻分布、正太分布和指數(shù)分布。
d3-ease
Easing 是一種通過扭曲時(shí)間來控制動(dòng)畫中的表現(xiàn)形式的方法。通常被用來 slow-in, slow-out。通過對(duì)時(shí)間的緩動(dòng),animated transitions 會(huì)更平滑且運(yùn)動(dòng)過程也更合理。
d3-interpolate
這個(gè)庫提供了多種做插值的方法來對(duì)數(shù)字、顏色、字符串、數(shù)組、對(duì)象等進(jìn)行插值。
ava
Ava是一個(gè)很棒的JS測試器,請不要驚訝我又使用了Sindre Sorhus創(chuàng)造的另一個(gè)工具。它包含了mocha, tape, chai以及其他工具的優(yōu)點(diǎn)。
nock
Nock 是前端常用來模擬http請求響應(yīng)的工具,它基于nodejs的原生http模塊。
sinon
Sinon.js是一個(gè)非常有用的測試輔助工具,在為Node程序?qū)憸y試時(shí)可能可以派上用場。我建議每一個(gè)Node開發(fā)者都應(yīng)該將它加入到自己的工具庫中。
Fundebug專注于JavaScript、微信小程序、微信小游戲、支付寶小程序、React Native、Node.js和Java實(shí)時(shí)BUG監(jiān)控。 自從2016年雙十一正式上線,F(xiàn)undebug累計(jì)處理了9億+錯(cuò)誤事件,得到了Google、360、金山軟件、百姓網(wǎng)等眾多知名用戶的認(rèn)可。歡迎免費(fèi)試用!
轉(zhuǎn)載時(shí)請注明作者Fundebug以及本文地址:
https://blog.fundebug.com/2018/12/18/javascript-modules-worth-using/
另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)scvps.cn,海內(nèi)外云服務(wù)器15元起步,三天無理由+7*72小時(shí)售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國服務(wù)器、虛擬主機(jī)、免備案服務(wù)器”等云主機(jī)租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡單易用、服務(wù)可用性高、性價(jià)比高”等特點(diǎn)與優(yōu)勢,專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場景需求。