faker.js 登 GitHub 趨勢(shì)榜標(biāo)星 27.1k,可大批量生成假數(shù)據(jù)!
近日,GitHub上一個(gè)生成假數(shù)據(jù)的項(xiàng)目faker.js火了,攀升Trendinging榜單第二,標(biāo)星目前已超過27.1k。只需要簡(jiǎn)單幾步操作,就可以在瀏覽器和node.js中生成大量假數(shù)據(jù)。
? ? ? ?
據(jù)了解,這已經(jīng)不是一個(gè)新項(xiàng)目了,2017年就已經(jīng)由一名叫Marak Squires的開源愛好者創(chuàng)建,他自1999年以來就在寫JavaScript產(chǎn)品代碼,2009年開始寫Node.js。除了faker.js之外,他還參與了100多個(gè)NPM開源項(xiàng)目,包括在GitHub上同樣受歡迎的獨(dú)立的功能服務(wù)器項(xiàng)目microcule、微服務(wù)平臺(tái)hook.io等。
?
由于在mock數(shù)據(jù)方面非常好用,faker.js一經(jīng)推出就受到了很多應(yīng)用開發(fā)者的歡迎。如今faker.js再次出現(xiàn)在我們的眼前,那就來回顧一下這個(gè)好用的工具吧,也許在創(chuàng)建數(shù)據(jù)庫用例數(shù)據(jù)時(shí),它能幫上忙。
?
1. 姓名、家庭住址、車輛信息一鍵生成
?
按照慣例,先放上項(xiàng)目的GitHub地址:https://github.com/marak/faker.js/
?
faker.js是個(gè)很棒的nede模塊,用來mock數(shù)據(jù)。包含一個(gè)超級(jí)有用的生成器方法Faker.fake,用于胡須字符串格式與faker API組合。
?
比如:
console.log(faker.fake("{{name.lastName}{{name.firstName{{name.suffix}}"));// outputs: "Marks, Dean Sr."
這個(gè)操作可以將name.lastName(),name.firstName()和name.suffix()的值插入格式字符串。
?
先看一下demo,可以看到,只要點(diǎn)擊“生成新的”,就可以生成關(guān)于“這個(gè)人”的大量信息,包括姓名、出生日期、家庭住址、國際、電話、郵箱和密碼、財(cái)務(wù)信息,甚至照片,等等。但這個(gè)人實(shí)際上是并不存在的!
?
??
? ? ?
? ? ? ?
? ? ?
? ? ? ?
? ? ?
? ? ? ?
? ? ?
有了fake圖像、fake人臉、fake視頻,至此faker.js好像又給了Fake游戲一個(gè)新思路,原來信息數(shù)據(jù)也能夠大量生成!
?
看起來很神奇,你是不是也蠢蠢欲動(dòng)想玩一下?實(shí)際上,創(chuàng)建一個(gè)faker.js操作并不復(fù)雜,感興趣的朋友不妨參考GitHub開源代碼動(dòng)手試一試。
?
2. 創(chuàng)建faker.js的方法
?
瀏覽器
?
Faker.js的好處之一,是不僅可以使用在服務(wù)器端的JavaScript,還可以應(yīng)用在瀏覽器端的JavaScript,代碼如下:
<script?src?=?"faker.js"?type?=?"text/javascript">script><script>var?randomName?=?faker.name.findName();?//?Caitlyn?Kerlukevar?randomEmail?=?faker.internet.email();?//[email protected]var?randomCard?=?faker.helpers.createCard();?//?random?contact?card?containing?many?propertiesscript>
Node.js
var?faker?=?require('faker');var?randomName?=?faker.name.findName();?//?Rowan?Nikolausvar?randomEmail?=?faker.internet.email();?//[email protected]var?randomCard?=?faker.helpers.createCard();?//?random?contact?card?containing?many?properties
API
Faker.js有自己的API,并且功能非常豐富。
JSDoc API Browser
http://marak.github.io/faker.js/
聲明接口
地址
郵政編碼
州郵政編碼
市
城市前綴
城市后綴
街道名稱
街道地址
街道后綴
街道前綴
其他地址
郡
國家
國家代碼
州
州的縮寫
緯度
經(jīng)度
方向
基數(shù)方向
順序方向
附近的GPS坐標(biāo)
時(shí)區(qū)
商業(yè)
顏色
部門
產(chǎn)品名稱
價(jià)錢
產(chǎn)品形容詞
產(chǎn)品材質(zhì)
產(chǎn)品
產(chǎn)品描述
?
以及公司、數(shù)據(jù)庫、日期、財(cái)務(wù)狀況、git、hacker、helper、圖像、網(wǎng)絡(luò)、音樂、姓名等API接口,每個(gè)項(xiàng)目下還有子項(xiàng)目:
? ? ? ?
? ? ?
? ? ? ?
? ? ? ?
? ? ? ?
? ? ?
? ? ? ?
? ? ?
? ? ? ?
? ? ?
? ? ? ?
? ? ?
用Faker.js可以很方便地mock數(shù)據(jù),只需要添加nmp依賴就可以了。
?
另外,faker.js是支持多種語言的,默認(rèn)設(shè)置語言是英語,但可以自己設(shè)置,方法也很簡(jiǎn)單:
//?sets?locale?to?defaker.locale?=?"de";
az
ar
cz
de
de_AT
de_CH
en
en_AU
en_AU_ocker
en_BORK
en_CA
en_GB
en_IE
en_IND
en_US
en_ZA
es
es_MX
fa
...
本地化包
faker.js支持語言環(huán)境的增量加載。
?
默認(rèn)情況下,要求faker包括所有語言環(huán)境數(shù)據(jù)。
?
在生產(chǎn)環(huán)境中,你可能只想用一組特定語言環(huán)境的數(shù)據(jù):
?
//?loads?only?de?localevar?faker?=?require('faker/locale/de');
設(shè)置隨機(jī)種子
?
如果想要一致的結(jié)果,你可以自己設(shè)置種子:
faker.seed(123);var?firstRandom?=?faker.random.number();//?Setting?the?seed?again?resets?the?sequence.faker.seed(123);var secondRandom = faker.random.number();console.log(firstRandom === secondRando
你可以使用gulp進(jìn)行自動(dòng)化創(chuàng)建過程。每個(gè)構(gòu)建操作都是一個(gè)單獨(dú)的任務(wù),可以獨(dú)立運(yùn)行。
?
瀏覽器綁定
npm run browser創(chuàng)建JSDocs
JSDOC?v3 HTML API documentation
npm run jsdoc創(chuàng)建ReadMe
faker.js的ReadMe.md文件是自動(dòng)生成的,不能直接修改。如果要修改,在./build/src/docs.md中進(jìn)行對(duì)ReadMe.md的所有更新,再運(yùn)行腳本。
npm run readme項(xiàng)目發(fā)起人表示,這個(gè)項(xiàng)目一般來說每月會(huì)進(jìn)行一次或大或小的版本更新,并按緊要程度盡快修復(fù)bug,對(duì)項(xiàng)目感興趣的人,可以持續(xù)關(guān)注下代碼更新:https://github.com/marak/faker.js/
?
最后,用這種方法可以生成大量的假數(shù)據(jù),雖然項(xiàng)目發(fā)起人稱,Node.js主要是一些組織和個(gè)人用于生產(chǎn)環(huán)境設(shè)置,但為了安全起見,還是要在此提醒一句并聲明,本文僅用于技術(shù)交流,朋友們且看且珍惜~
有道無術(shù),術(shù)可成;有術(shù)無道,止于術(shù)
歡迎大家關(guān)注Java之道公眾號(hào)
好文章,我在看??
