譯者按: 做者將本身經常使用的JavaScript模塊分享給你們。javascript
爲了保證可讀性,本文采用意譯而非直譯。另外,本文版權歸原做者全部,翻譯僅用於學習。html
本文介紹了我在平常工做中一直使用的JavaScript模塊,包括NodeJS和前端JavaScript。固然,這篇文章會有強烈的我的主觀性。我推薦的模塊可能會有遺漏,而且不會包含任何特定用途的模塊。好比有一些推薦的模塊確實很酷,可是不必定實用。前端
咱們先來介紹命令行工具。java
若是你是一個npm包的做者,我強烈推薦你使用np,它使得版本控制、添加git release tag,和發佈到npm一鼓作氣。特別是若是你擁有多個npm模塊的時候。同時我也推薦Zeit發佈的release也是一個很不錯的選擇。node
儘管np v5已經比以前的版本快了許多,從速度和一致性的角度,我依然更加傾向於在本地開發中使用yarn來管理。無論哪一種方式,底層都是在和同一個npm模塊的數據庫交互,因此我想他兩之間沒有一個絕對的勝者。你選擇最適合你本身的就好。git
做爲一個2018年的JS開發者,我建議你將二者都熟悉。github
Prettier經過分析你的代碼而後從新排版來保證代碼格式的一致性。我喜歡eslint並一直使用JavaScript的標準格式風格,可是prettier和gofmt這種自動化格式美化帶來的吸引力沒法拒絕。golang
做爲開發者,咱們花了太多的時間和精力去維護代碼格式,實在是浪費。使用prettier這類工具可讓咱們從這些雜事中解脫,專一於代碼。chrome
從簡潔性、穩定性和擁有的特性上來講,Now絕對是如今最好的免費的部署系統。不論是靜態仍是動態部署、甚至要擴展到多個服務器,均可以很好的爲你服務。並且,最重要的一點,就算你擴展到多服務器,仍是免費的!shell
Now對Node.js以及JS支撐的網頁應用都支持很好。我強烈推薦大家也看看Zeit推出的其它服務。
你可使用asciinema來錄製Terminal操做。
我發現pify是最好的模塊,用來將回調函數風格的函數轉爲Promise。它很輕巧,並且有連util.promisify都沒有的自動方法綁定功能。
p-map用來設置併發地執行promises。考慮到計算資源和帶寬,你確定不想沒有限制地徹底併發全部的promise,p-map能夠設置併發數量。我想你徹底能夠用p-map來替代Promise.all(...)。
一般,我會使用p-retry將全部的HTTP請求和外部服務包裹起來,來進一步加強代碼的健壯性。p-retry能夠配置retry的次數。配合p-map,你能夠併發執行大量的請求並且不用擔憂偶爾遇到網絡錯誤、服務器超時和Socket中斷等等。
p-timeout也是一個必不可少的模塊。
經過LRU緩存來記住async函數的結果。
這些Promise工具函數庫讓我想起了關於構建健壯微服務的文章,每個外部依賴均可以包含一個統一的接口包括retry, timeout, caching,circuit breakers, 回滾等等。
若是你想處理原生的HTML,Cheerio是一個很棒的工具。它提供了像jQuery同樣的語法來訪問和處理HTML文檔。Cheerio配合request-promise-native來獲取網頁最佳。
和cheerio不一樣,puppeteer是一個用來自動化運行headless chrome instance的工具。它能夠用來:1. 生成頁面的截圖或則PDF;2. 爬取單頁面應用內容並將其渲染(SSR);3. 自動化表單填寫、UI測試、輸入等等。它將逐漸取代像PhantomJS這樣的技術。
dotenv-safe是dotenv模塊的擴展,從.env
加載本地環境變量,並確保它們都存在。經過配置.env.example
文件來制定哪些變量必需要配置。
執行HTTP請求是一個很常見的操做,我選擇request-promise-native模塊。該模塊將request模塊拓展成Promise。95%的狀況下,我使用await來處理HTTP請求,只有5%的時間我須要直接用request來處理返回數據。
爲了健壯性,我會配合p-retry,p-timeout和p-cache來使用。
另外我補充一下, got是一個新的候選項,雖然我還沒怎麼使用不少。
Consolidate用來處理後端模板化頗有用(郵件、推特、原生HTML等等)。我一般使用handlebars來做爲模板引擎,不過我會配合使用consolidate。由於它有更加簡潔和UI之的界面,無論你在底層使用何種引擎均可以配合使用。
當你須要執行shell腳本或則子進程的時候頗有用。
我幾乎不使用fs模塊了,fs-extra爲fs模塊附加了很多方法而且支持Promise。
D3 (Data-Driven Documents) 是一個流行的前端數據可視化庫,它同時也包含了不少常見的數學操做的庫。我常常用到那些庫,接下來推薦給大家。
d3-random 生成隨機數
當你以爲Math.ramdom不夠用的時候,不妨試試d3-random。它支持用不一樣的分佈來隨機,好比均勻分佈、正太分佈和指數分佈。
Easing 是一種經過扭曲時間來控制動畫中的表現形式的方法。一般被用來 slow-in, slow-out。經過對時間的緩動,animated transitions 會更平滑且運動過程也更合理。
這個庫提供了多種作插值的方法來對數字、顏色、字符串、數組、對象等進行插值。
Ava是一個很棒的JS測試器,請不要驚訝我又使用了Sindre Sorhus創造的另外一個工具。它包含了mocha, tape, chai以及其餘工具的優勢。
Nock 是前端經常使用來模擬http請求響應的工具,它基於nodejs的原生http模塊。
Sinon.js是一個很是有用的測試輔助工具,在爲Node程序寫測試時可能能夠派上用場。我建議每個Node開發者都應該將它加入到本身的工具庫中。
Fundebug專一於JavaScript、微信小程序、微信小遊戲、支付寶小程序、React Native、Node.js和Java實時BUG監控。 自從2016年雙十一正式上線,Fundebug累計處理了9億+錯誤事件,獲得了Google、360、金山軟件、百姓網等衆多知名用戶的承認。歡迎免費試用!
轉載時請註明做者Fundebug以及本文地址: https://blog.fundebug.com/2018/12/18/javascript-modules-worth-using/