譯者按: 你可能已經(jīng)用到Underscore或者Lodash。本文列舉了13個(gè)常用的JavaScript工具庫(kù)來(lái)提高開(kāi)發(fā)效率爪飘。
為了保證可讀性敌厘,本文采用意譯而非直譯髓削。另外豆村,本文版權(quán)歸原作者所有剖踊,翻譯僅用于學(xué)習(xí)驼鞭。
JavaScript依然是2018年最受歡迎秦驯、最流行的編程語(yǔ)言,所以它的生態(tài)系統(tǒng)也十分完善挣棕。
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ù)也可以自定義方法或則使用插件處理特殊情況。
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ù)真的非常方便偎肃。
9. ChartJS
擁有超過(guò)40K個(gè)stars煞烫,chart.js是一個(gè)少即是多的的經(jīng)典例子。它只提供了8中可視化的類(lèi)型累颂,每一種都有動(dòng)畫(huà)并且可以自定義红竭。Chart.js讓你可以使用<canvas>
標(biāo)簽來(lái)作圖,并且在不同的瀏覽器上高效渲染喘落。
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è)面的加載速度倔叼。
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)試用僻焚!