推薦好用的JavaScript模塊

2019獨角獸企業重金招聘Python工程師標準>>> hot3.png

譯者按: 作者將自己常用的JavaScript模塊分享給大家。

  • 原文:? JavaScript Modules Worth Using ?
  • 譯者: Fundebug

為了保證可讀性,本文采用意譯而非直譯。另外,本文版權歸原作者所有,翻譯僅用于學習。

本文介紹了我在日常工作中一直使用的JavaScript模塊,包括NodeJS和前端JavaScript。當然,這篇文章會有強烈的個人主觀性。我推薦的模塊可能會有遺漏,并且不會包含任何特定用途的模塊。比如有一些推薦的模塊確實很酷,但是不一定實用。

命令行工具

我們先來介紹命令行工具。

np 一個更好的發布npm模塊的工具

如果你是一個npm包的作者,我強烈推薦你使用np,它使得版本控制、添加git release tag,和發布到npm一氣呵成。特別是如果你擁有多個npm模塊的時候。同時我也推薦Zeit發布的release也是一個很不錯的選擇。

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. 爬取單頁面應用內容并將其渲染(SSR);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。它支持用不同的分布來隨機,比如均勻分布、正太分布和指數分布。

d3-ease

Easing 是一種通過扭曲時間來控制動畫中的表現形式的方法。通常被用來 slow-in, slow-out。通過對時間的緩動,animated transitions 會更平滑且運動過程也更合理。

d3-interpolate

這個庫提供了多種做插值的方法來對數字、顏色、字符串、數組、對象等進行插值。

Testing

ava

Ava是一個很棒的JS測試器,請不要驚訝我又使用了Sindre Sorhus創造的另一個工具。它包含了mocha, tape, chai以及其他工具的優點。

nock

Nock 是前端常用來模擬http請求響應的工具,它基于nodejs的原生http模塊。

sinon

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/

轉載于:https://my.oschina.net/u/3375885/blog/2989755

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/537299.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/537299.shtml
英文地址,請注明出處:http://en.pswp.cn/news/537299.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

python直接連接oracle_python連接oracle

一:弄清版本,最重要!!!首先安裝配置時,必須把握一個點,就是版本一致!包括:系統版本,python版本,oracle客戶端的版本,cx_Oracle的版本&…

項目計劃不要拖,要趕緊排

目錄 案例 復盤 應對 總結 案例 業主:這個項目很急,趕緊干活吧,明天就安排人來干活。 于是,項目經理問公司要來資源,第二天就投入到項目里。 公司只有一個項目,這樣搞,項目能順利實施,業主滿意,公司老板感覺這種方法不錯哦。 當公司項目越來越多了,員工也越來…

select函數_SQL高級功能:窗口函數

一、窗口函數有什么用?在日常生活中,經常會遇到需要在每組內排名,比如下面的業務需求:排名問題:每個部門按業績來排名topN問題:找出每個部門排名前N的員工進行獎勵面對這類需求,就需要使用sql的…

客戶端C++與前端js交互

客戶端與前端交互 qwebchannel.js文件引入建立通信// c發送消息給js new QWebChannel(qt.webChannelTransport, function(channel){var content channel.objects.jsContext;// 建立通信后,客戶端通過調用 sMsg 方法來執行后面的回調函數,從而實現c與j…

python動態映射_sqlalchemy動態映射

似乎您可以直接使用屬性,而不是使用columnsdict。考慮以下設置:from sqlalchemy import Table, Column, Integer, Unicode, MetaData, create_enginefrom sqlalchemy.orm import mapper, create_sessionclass Word(object):passwordColumns [english, k…

linux外接顯示屏,關掉本身的筆記本電腦

https://blog.csdn.net/a2020883119/article/details/79561035 先用xrandr命令查看: eDP-1 connected eDP-1是連接著的 關掉:sudo xrandr --output eDP-1 --off 打開:sudo xrandr --output eDP-1 --auto

發揮項目“臨時性”威力,讓項目順利實施

所謂臨時性,就是要有明確的“開始”和“結束”。雖然大家都知道項目一定會有開始和結束的,但要更多地關注“明確“。 問題1:問商務(售前)或業主,這個項目什么時候結束? 答:商務或業主他們有時候也不知道,因為國內的項目大多數是提前開始交付,是一邊交付,一邊把里程…

上拉加載更多后臺數據_6-7【微信小程序全棧開發課程】記錄頁面(七)--分頁加載記錄數據...

現在是一次性加載所有的記錄數據,數據多的時候,會加載比較慢,所以我們改成分頁加載,一次最多加載15條數據每次拉倒底部都會自動加載下一頁的數據,知道所有的數據加載完成1、添加data變量編輯record.vue文件&#xff0c…

spring cloud eureka服務注冊和調用

SPRING INITIALIZR構建工程 spring boot 可通過SPRING INITIALIZR構建項目訪問SPRING INITIALIZR官網,填寫項目相關信息后,生成項目。將下載的項目解壓,打開idea,file-->new-->project from existing sources。import proje…

去從事有門檻有積累的工作

現在社會的IT工作,一時風光無限,但是積累性不足。跟老外比較起來,國內的IT算是民工級別的。再加上,前些年的培訓機構,不斷的輸出水平很次但很能加班的「人才」進入這個行業,「劣幣驅逐良幣」的效果下&#…

打印工資條怎么做到每個人都有表頭明細_朋友說:能不能用python,幫我寫一個“制作工資條”的自動化程序?...

本文說明今天和一個朋友吃飯,她說我經常使用Excel制作工資條,但是每個月都要做一遍,你能不能用python寫一個代碼,能夠自動化完成這個工作。這當然可以啦,就是這么牛逼!我們先來看看原始數據是什么樣子的。那…

自定義按鈕 圖片標題位置隨意放置

自定義按鈕UIControl 寫在前面 #圖標和文字在一起是開發難免的問題,系統的按鈕默認是圖片居左的文字居右的, 且圖片和文字的距離不好調整,圖片的位置更是讓人頭疼, 故在閑暇之余封裝了一個控件。 復制代碼所用到知識的 # 1、蘋果系…

做優化的數據庫工程師請參考!CynosDB的計算層設計優化揭秘

本文由云社區發表本文作者:孫旭,騰訊數據庫開發工程師,9年數據庫內核開發經驗;熟悉數據庫查詢處理,并發控制,日志以及存儲系統;熟悉PostgreSQL(Greenplum,PGXC等&#xf…

netty發送數據_看完這篇還不清楚Netty的內存管理,那我就哭了

說明在學習Netty的時候,ByteBuf隨處可見,但是如何高效分配ByteBuf還是很復雜的,Netty的池化內存分配這塊還是比較難的,很多人學習過,看過但是還是云里霧里的,本篇文章就是主要來講解:Netty分配池…

數字化改革體系架構“152”兩次迭代升級為“1612”

數字化改革體系架構已經完成兩次迭代,152-1512-1612。 2021年,浙江在全國率先啟動一項關系全局、影響深遠、制勝未來的重大集成改革——數字化改革,并確定為全面深化改革的總抓手。 2021年2月18日,數字化改革大會“152”工作體系…

微軟希望每個人有自己的人工智能朋友

微軟正在和其他公司那樣投資和研發人工智能技術,同時微軟也希望人工智能技術能夠深入我們的日常生活。 為此微軟正在申請新的專利技術希望每個人在社交網絡上都有自己的人工智能朋友可以隨時隨地的溝通交流。 實際上該專利屬于已經實踐的內容再來申請專利技術的&…

python 40位的數減個位數_Python數據分析入門教程(五):數據運算

作者 | CDA數據分析師進行到這一步就可以算是開始正式的烹飪了,在這部分之前的數據操作部分我們列舉了一些不同維度的分析指標,這一章我們主要看看這些指標都是怎么計算出來的。一、算術運算算術運算就是基本的加減乘除,在Excel或者Python中數…

數字化改革“152”體系詳解

架構圖 “1” 即一體化智能化公共數據平臺(平臺大腦),按照“統一規劃、統一支撐、統一架構、統一平臺、統一標準、統一建設、統一管理、統一運維"的要求,建設省市縣三級公共數據平臺,疊加三級“大腦功能&#xf…

數字化改革“141”體系

縣級以上是“152”大框架,縣以下是“141”體系。 141體系是:縣級社會治理中心、鄉鎮(街道)基層治理“四個平臺”、村社網格。 “1” 第一個“1”指縣級社會治理中心。 “4” 第二個“4”指鄉鎮(街道)基…

spring boot——MockMvc的用法

1.pom配置 <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-test</artifactId> </dependency> 2.所需對象及Controller public class User {private String id;private String username;private…