2018年你需要知道的13個(gè)JavaScript工具庫(kù)

v2-307971e2f3800cf8ee6fde8a2e9ea1cc_1200x500.jpg

譯者按: 你可能已經(jīng)用到Underscore或者Lodash。本文列舉了13個(gè)常用的JavaScript工具庫(kù)來(lái)提高開(kāi)發(fā)效率爪飘。

為了保證可讀性敌厘,本文采用意譯而非直譯髓削。另外豆村,本文版權(quán)歸原作者所有剖踊,翻譯僅用于學(xué)習(xí)驼鞭。

JavaScript依然是2018年最受歡迎秦驯、最流行的編程語(yǔ)言,所以它的生態(tài)系統(tǒng)也十分完善挣棕。

image

JavaScript小小的標(biāo)準(zhǔn)庫(kù)已經(jīng)不足以應(yīng)付各種開(kāi)發(fā)需求汇竭。在Github上,有許多流行的JavaScript工具庫(kù)穴张。在這里细燎,我整理了一個(gè)列表推薦給大家:

1. Underscore & Lodash

也許大多數(shù)童鞋都已經(jīng)知道它們。Underscore提供了日常使用的基礎(chǔ)函數(shù)皂甘。Lodash, 作為NPM最多下載量和被依賴(lài)最多的包玻驻,旨在為數(shù)組,字符串偿枕,對(duì)象和參數(shù)對(duì)象提供更一致的跨環(huán)境迭代支持璧瞬。它已經(jīng)是Underscore的超集。Underscore和Lodash由同一組核心開(kāi)發(fā)者維護(hù)渐夸。你日常開(kāi)發(fā)中絕對(duì)少不了要用到它嗤锉。

2. Ramda

擁有超過(guò)12K的stars,Ramda庫(kù)可以用來(lái)在JavaScript中函數(shù)式編程墓塌,專(zhuān)門(mén)為函數(shù)式編程風(fēng)格而設(shè)計(jì)瘟忱,更容易創(chuàng)建函數(shù)式pipeline奥额、且從不改變用戶(hù)已有數(shù)據(jù)。

摘自官方:

Ramda 主要特性如下:

  • Ramda 強(qiáng)調(diào)更加純粹的函數(shù)式風(fēng)格访诱。數(shù)據(jù)不變性和函數(shù)無(wú)副作用是其核心設(shè)計(jì)理念垫挨。這可以幫助你使用簡(jiǎn)潔、優(yōu)雅的代碼來(lái)完成工作触菜。
  • Ramda 函數(shù)本身都是自動(dòng)柯里化的九榔。這可以讓你在只提供部分參數(shù)的情況下,輕松地在已有函數(shù)的基礎(chǔ)上創(chuàng)建新函數(shù)涡相。
  • Ramda 函數(shù)參數(shù)的排列順序更便于柯里化哲泊。通常最后提供要操作的數(shù)據(jù)。

最后兩點(diǎn)一起催蝗,使得將多個(gè)函數(shù)組合為簡(jiǎn)單的函數(shù)序列變得非常容易攻旦,每個(gè)函數(shù)對(duì)數(shù)據(jù)進(jìn)行變換,并將結(jié)果傳遞給下一個(gè)函數(shù)生逸。Ramda的設(shè)計(jì)能很好地支持這種風(fēng)格的編程牢屋。

你也可以看看:immutable.js

3. MathJS

擁有超過(guò)6K的stars,Math.js是一個(gè)Node.js和JavaScript上的math擴(kuò)展庫(kù)槽袄,并且和內(nèi)置的Math庫(kù)兼容烙无。該庫(kù)中包含一個(gè)靈活的表達(dá)式分析器,并且有非常多的內(nèi)置函數(shù)可以使用遍尺。你甚至可以自行做擴(kuò)展截酷。

4. Moment & date-fns

擁有超過(guò)40K的stars,moment.js是一個(gè)JavaScript的時(shí)間處理庫(kù)乾戏,可以用來(lái)分析迂苛、驗(yàn)證、處理和格式化時(shí)間鼓择。Moment被設(shè)計(jì)可以用于瀏覽器和Node.js環(huán)境下三幻。對(duì)于V2.10.0,代碼完全用ECMAScript 6實(shí)現(xiàn)呐能。

Date-fns也是一個(gè)非常流行(超過(guò)11K的stars)的時(shí)間處理庫(kù)念搬,提供超過(guò)130多個(gè)函數(shù),很多人把它當(dāng)做moment.js(查看對(duì)比)的替代品摆出。Date-fns完全用純函數(shù)實(shí)現(xiàn)朗徊,保證不可修改性。它可以很好的和webpack偎漫,Browserify爷恳、或Rollup配合使用,并支持tree-shaking象踊。

5. Sugar

擁有超過(guò)3.5K個(gè)stars温亲,Sugar是一個(gè)可以用來(lái)處理原生對(duì)象的庫(kù)棚壁。擁有自定義的構(gòu)建和模塊化的npm包,使得你可以只需要加載你需要的包铸豁。用戶(hù)也可以自定義方法或則使用插件處理特殊情況。

image

6. Lazy

擁有5K個(gè)stars菊碟,lazy.js是一個(gè)函數(shù)式的JavaScript庫(kù)节芥。該庫(kù)的底層的實(shí)現(xiàn)都是懶執(zhí)行的,也就是說(shuō)盡量不做運(yùn)算逆害,除非真的需要头镊。這個(gè)庫(kù)不依賴(lài)第三方庫(kù),這里有一個(gè)demo魄幕,這里是API文檔相艇。

比如,我們要生成300個(gè)1到1000之間完全不同的隨機(jī)數(shù)纯陨,可以這樣寫(xiě):

Lazy.generate(Math.random)
  .map(function(e) { return Math.floor(e * 1000) + 1; })
  .uniq()
  .take(300)
  .each(function(e) { console.log(e); });

如果用JavaScript直接去寫(xiě)坛芽,代碼就會(huì)復(fù)雜很多了。

7. CollectJS

擁有超過(guò)3.5K個(gè)stars翼抠,collect.js是一個(gè)非常有前景并且不依賴(lài)于任何第三方庫(kù)咙轩。它提供了針對(duì)數(shù)組和對(duì)象的包裝,使用非常方便阴颖。

const collection = collect([{
  name: 'JavaScript: The Good Parts', pages: 176
}, {
  name: 'JavaScript: The Definitive Guide', pages: 1096
}]);

collection.avg('pages');

//=> 636

8. ChanceJS

Chance是一個(gè)用來(lái)隨機(jī)生成字符串活喊、數(shù)字等的函數(shù),他可以減少一些偽隨機(jī)性量愧,在你需要寫(xiě)自動(dòng)化測(cè)試或則其它你需要生成隨機(jī)數(shù)據(jù)的地方很有用钾菊。雖然只有3K個(gè)stars,但是這個(gè)庫(kù)真的非常方便偎肃。

image

9. ChartJS

擁有超過(guò)40K個(gè)stars煞烫,chart.js是一個(gè)少即是多的的經(jīng)典例子。它只提供了8中可視化的類(lèi)型累颂,每一種都有動(dòng)畫(huà)并且可以自定義红竭。Chart.js讓你可以使用<canvas>標(biāo)簽來(lái)作圖,并且在不同的瀏覽器上高效渲染喘落。

image

10. Polished

擁有超過(guò)3.5K個(gè)stars茵宪,由styled-components團(tuán)隊(duì)開(kāi)發(fā),Polished是一個(gè)用于寫(xiě)css樣式的工具集瘦棋,提供sass風(fēng)格的幫助函數(shù)和mixins稀火。該庫(kù)和styled-components,Aphrodite赌朋,Radium兼容凰狞。

11. Mout

Mout.js是一個(gè)JavaScript的模塊化工具集合篇裁,能夠以AMD模塊的形式在瀏覽器或者Node.js中使用。Mout.js讓你可以只加載你需要的模塊或者函數(shù)赡若,如下所示:

// you can load individual methods (recommended)
var map = require('mout/array/map');
map([1, 2], function(v){ return val * val; }); // [1, 4]

// a single package
var stringUtils = require('mout/string');
stringUtils.camelCase('Foo Bar'); // "fooBar"

// or the whole lib
var mout = require('mout');
console.log( mout.math.clamp(17, 0, 10) ); // 10

12. Voca

一個(gè)用于處理字符串的JavaScript庫(kù)达布,包含了很多的幫助函數(shù),比如:change case, trim, pad, slugify, latinise, sprintf‘y, truncate, escape等等逾冬。

13. Licia

雖然只有500來(lái)個(gè)stars黍聂,但是Licia提供了非常多的工具函數(shù),對(duì)于日常使用非常有幫助身腻。
官方介紹:

Licia是一套在開(kāi)發(fā)中實(shí)踐積累起來(lái)的實(shí)用JavaScript工具庫(kù)产还。該庫(kù)目前擁有超過(guò)180個(gè)模塊,包括Dom操作嘀趟,cookie設(shè)置脐区,類(lèi)創(chuàng)建,模板函數(shù)她按,日期格式化等實(shí)用模塊牛隅,同時(shí)配套有打包工具Eustia進(jìn)行定制化,使JS腳本加載量縮減在10KB以下酌泰,極大優(yōu)化移動(dòng)端頁(yè)面的加載速度倔叼。

image

Licia由RedHood開(kāi)發(fā),詳細(xì)了解可以查看他本人在知乎上寫(xiě)的對(duì)Licia的介紹: 超實(shí)用JavaScript工具庫(kù)宫莱。

關(guān)于Fundebug

Fundebug專(zhuān)注于前端網(wǎng)頁(yè)H5丈攒、微信小程序、微信小游戲授霸、支付寶小程序巡验、React Native、Node.js和Java實(shí)時(shí)BUG監(jiān)控碘耳。

自從2016年雙十一正式上線(xiàn)显设,F(xiàn)undebug累計(jì)處理了6億+錯(cuò)誤事件,目前付費(fèi)用戶(hù)有Google中國(guó)辛辨、360捕捂、金山軟件、荔枝FM斗搞、艾瑞咨詢(xún)指攒、百姓網(wǎng)等眾多明星企業(yè)。歡迎免費(fèi)試用僻焚!

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末允悦,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子虑啤,更是在濱河造成了極大的恐慌隙弛,老刑警劉巖架馋,帶你破解...
    沈念sama閱讀 218,941評(píng)論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異全闷,居然都是意外死亡叉寂,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,397評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門(mén)总珠,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)屏鳍,“玉大人,你說(shuō)我怎么就攤上這事姚淆≡胁酰” “怎么了屡律?”我有些...
    開(kāi)封第一講書(shū)人閱讀 165,345評(píng)論 0 356
  • 文/不壞的土叔 我叫張陵腌逢,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我超埋,道長(zhǎng)搏讶,這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,851評(píng)論 1 295
  • 正文 為了忘掉前任霍殴,我火速辦了婚禮媒惕,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘来庭。我一直安慰自己妒蔚,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,868評(píng)論 6 392
  • 文/花漫 我一把揭開(kāi)白布月弛。 她就那樣靜靜地躺著肴盏,像睡著了一般。 火紅的嫁衣襯著肌膚如雪帽衙。 梳的紋絲不亂的頭發(fā)上菜皂,一...
    開(kāi)封第一講書(shū)人閱讀 51,688評(píng)論 1 305
  • 那天,我揣著相機(jī)與錄音厉萝,去河邊找鬼恍飘。 笑死,一個(gè)胖子當(dāng)著我的面吹牛谴垫,可吹牛的內(nèi)容都是我干的章母。 我是一名探鬼主播,決...
    沈念sama閱讀 40,414評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼翩剪,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼胳施!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起肢专,我...
    開(kāi)封第一講書(shū)人閱讀 39,319評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤舞肆,失蹤者是張志新(化名)和其女友劉穎焦辅,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體椿胯,經(jīng)...
    沈念sama閱讀 45,775評(píng)論 1 315
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡筷登,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,945評(píng)論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了哩盲。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片前方。...
    茶點(diǎn)故事閱讀 40,096評(píng)論 1 350
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖廉油,靈堂內(nèi)的尸體忽然破棺而出惠险,到底是詐尸還是另有隱情,我是刑警寧澤抒线,帶...
    沈念sama閱讀 35,789評(píng)論 5 346
  • 正文 年R本政府宣布班巩,位于F島的核電站,受9級(jí)特大地震影響嘶炭,放射性物質(zhì)發(fā)生泄漏抱慌。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,437評(píng)論 3 331
  • 文/蒙蒙 一眨猎、第九天 我趴在偏房一處隱蔽的房頂上張望抑进。 院中可真熱鬧,春花似錦睡陪、人聲如沸寺渗。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 31,993評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)信殊。三九已至,卻和暖如春逮矛,著一層夾襖步出監(jiān)牢的瞬間鸡号,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 33,107評(píng)論 1 271
  • 我被黑心中介騙來(lái)泰國(guó)打工须鼎, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留鲸伴,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,308評(píng)論 3 372
  • 正文 我出身青樓晋控,卻偏偏與公主長(zhǎng)得像汞窗,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子赡译,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,037評(píng)論 2 355

推薦閱讀更多精彩內(nèi)容