推薦好用的JavaScript模組
譯者按: 作者將自己常用的JavaScript模組分享給大家。
- 原文: JavaScript Modules Worth Using
- 譯者: Fundebug
為了保證可讀性,本文采用意譯而非直譯。另外,本文版權歸原作者所有,翻譯僅用於學習。
本文介紹了我在日常工作中一直使用的JavaScript模組,包括NodeJS和前端JavaScript。當然,這篇文章會有強烈的個人主觀性。我推薦的模組可能會有遺漏,並且不會包含任何特定用途的模組。比如有一些推薦的模組確實很酷,但是不一定實用。
命令列工具
我們先來介紹命令列工具。
np 一個更好的釋出npm模組的工具
如果你是一個npm包的作者,我強烈推薦你使用np,它使得版本控制、新增git release tag,和釋出到npm一氣呵成。特別是如果你擁有多個npm模組的時候。同時我也推薦
yarn 一個比npm更好的包管理工具
儘管np v5已經比之前的版本快了許多,從速度和一致性的角度,我依然更加傾向於在本地開發中使用yarn來管理。不管哪種方式,底層都是在和同一個npm模組的資料庫互動,所以我想他兩之間沒有一個絕對的勝者。你選擇最適合你自己的就好。
作為一個2018年的JS開發者,我建議你將兩者都熟悉。
prettier 一個公認的程式碼美化工具
Prettier通過分析你的程式碼然後重新排版來保證程式碼格式的一致性。我喜歡eslint並一直使用JavaScript的標準格式風格,但是prettier和gofmt
作為開發者,我們花了太多的時間和精力去維護程式碼格式,實在是浪費。使用prettier這類工具可以讓我們從這些瑣事中解脫,專注於程式碼。
now 超級簡單的部署工具
從簡潔性、穩定性和擁有的特性上來說,Now絕對是現在最好的免費的部署系統。不管是靜態還是動態部署、甚至要擴充套件到多個伺服器,都可以很好的為你服務。而且,最重要的一點,就算你擴充套件到多伺服器,還是免費的!
Now對Node.js以及JS支撐的網頁應用都支援很好。我強烈推薦你們也看看Zeit推出的其它服務。
asciinema 免費錄製Terminal的工具
你可以使用asciinema來錄製Terminal操作。
Promise
pify
我發現pify是最好的模組,用來將回調函式風格的函式轉為Promise。它很輕巧,而且有連util.promisify都沒有的自動方法繫結功能。
p-map
p-map用來設定併發地執行promises。考慮到計算資源和頻寬,你肯定不想沒有限制地完全併發所有的promise,p-map可以設定併發數量。我想你完全可以用p-map來替代Promise.all(...)。
p-retry
通常,我會使用p-retry將所有的HTTP請求和外部服務包裹起來,來進一步增強程式碼的健壯性。p-retry可以配置retry的次數。配合p-map,你可以併發執行大量的請求而且不用擔心偶爾遇到網路錯誤、伺服器超時和Socket中斷等等。
p-timeout
p-timeout也是一個必不可少的模組。
p-cache/p-memoize
通過LRU快取來記住async函式的結果。
這些Promise工具函式庫讓我想起了關於構建健壯微服務的文章,每一個外部依賴都可以包含一個統一的介面包括retry, timeout, caching,circuit breakers, 回滾等等。
內容抓取
cheerio
如果你想處理原生的HTML,Cheerio是一個很棒的工具。它提供了像jQuery一樣的語法來訪問和處理HTML文件。Cheerio配合request-promise-native來獲取網頁最佳。
puppeteer
和cheerio不同,puppeteer是一個用來自動化執行headless chrome instance的工具。它可以用來:1. 生成頁面的截圖或則PDF;2. 爬取單頁面應用內容並將其渲染(×××);3. 自動化表單填寫、UI測試、輸入等等。它將逐漸取代像PhantomJS這樣的技術。
Node.js
dotenv-safe
dotenv-safe是dotenv模組的擴充套件,從.env
載入本地環境變數,並確保它們都存在。通過配置.env.example
檔案來制定哪些變數必須要配置。
request和request-promise-native
執行HTTP請求是一個很常見的操作,我選擇request-promise-native模組。該模組將request模組拓展成Promise。95%的情況下,我使用await來處理HTTP請求,只有5%的時間我需要直接用request來處理返回資料。
為了健壯性,我會配合p-retry,p-timeout和p-cache來使用。
另外我補充一下, got是一個新的候選項,雖然我還沒怎麼使用很多。
consolidate
Consolidate用來處理後端模板化很有用(郵件、推特、原生HTML等等)。我通常使用handlebars來作為模板引擎,不過我會配合使用consolidate。因為它有更加簡潔和UI之的介面,不管你在底層使用何種引擎都可以配合使用。
execa
當你需要執行shell指令碼或則子程序的時候很有用。
fs-extra
我幾乎不使用fs模組了,fs-extra為fs模組附加了不少方法並且支援Promise。
Math
D3 (Data-Driven Documents) 是一個流行的前端資料視覺化庫,它同時也包含了很多常見的數學操作的庫。我經常用到那些庫,接下來推薦給你們。
d3-random 生成隨機數
當你覺得Math.ramdom不夠用的時候,不妨試試d3-random。它支援用不同的分佈來隨機,比如均勻分佈、正太分佈和指數分佈。
Easing 是一種通過扭曲時間來控制動畫中的表現形式的方法。通常被用來 slow-in, slow-out。通過對時間的緩動,animated transitions 會更平滑且運動過程也更合理。
這個庫提供了多種做插值的方法來對數字、顏色、字串、陣列、物件等進行插值。
Testing
Ava是一個很棒的JS測試器,請不要驚訝我又使用了Sindre Sorhus創造的另一個工具。它包含了mocha, tape, chai以及其他工具的優點。
Nock 是前端常用來模擬http請求響應的工具,它基於nodejs的原生http模組。
Sinon.js是一個非常有用的測試輔助工具,在為Node程式寫測試時可能可以派上用場。我建議每一個Node開發者都應該將它加入到自己的工具庫中。
關於Fundebug
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/