상세 컨텐츠

본문 제목

faker-js 이용 가짜(Dummy) 데이터 마궁 맹글깅(쪼메 바뀜)

자바스크립트

by e7e 2024. 10. 24. 22:28

본문

faker-js 한국어가 갑자기 안되서 문서를 뒤적이니, 말도 없이 locale 세팅이 조금 바뀌었당.

내용을 들여다 보니, 왜 바꾸었는지 나름 이해가 되고, 칭찬할만 하당.~~

이전 방식을 모르는 사람은 그냥 새 방식에 적용하면 그만이당. ~~ (^-^)

 

https://fakerjs.dev/

 

위 faker-js를 활용하여 아래 그림과 같이 필요한 갯수의 랜덤한 데이터를 맹글려 한다치면

 

아래와 같은 소스가 필요할 것이다.(주석을 잘 참고하길....)

faker-js 사용법은 너무나 쉬워서 괘니 공부가 되도록 table 만드는 소스를

조금 있어 보이게 header 들어가는 부분에 json의 key값을 이용하고,

그것을 한글화 하는 부분도  일부러 넣어 보았당. 

 

도움이 되었으면 하는 바램이당.

faker.helpers.fromRegExp   는  문서 API 에서 꼬옥 찾아보장! 구세주당

 

그냥 복사/붙여넣기로 하고, 랜덤 데이터 생성 부분만 추가/수정해서 사용해도 좋을거시당.

<!DOCTYPE html>
<meta charset="UTF-8" />
<style>
#wrapper {
text-align: center;
}
.e7e-100 {
width: 50px;
height: 50px;
}
</style>
<div id="wrapper">
<div>
몇갱?<input type="text" id="txtCnt" value="10" /><br />
<button id="btnMake">E7E 가짜 데이터 맹글깅</button>
</div>
<hr />
<div id="divDisp"></div>
</div>
<script>
// module 아님 전역임에 눈길
const divDisp = document.querySelector("#divDisp");
const txtCnt = document.querySelector("#txtCnt");
const btnMake = document.querySelector("#btnMake");
// tr 마우스 오버 & 아웃
// type=module 안에 있으면 왜 안 읽힐까용?
function fTrOver(curTr) {
curTr.style.backgroundColor = "black";
curTr.style.color = "yellow";
}
function fTrOut(curTr) {
curTr.style.backgroundColor = "white";
curTr.style.color = "black";
}
</script>
<script type="module">
// 전역 아니공, type="module" 임에 눈길!
//import { faker } from 'https://esm.sh/@faker-js/faker';
//console.log(faker);
import { Faker , ko, en } from "https://esm.sh/@faker-js/faker";
// Locale 세팅 이전과 바뀜 ㅠㅠ
const fakerKO = new Faker({
locale: [ko],
});
const fakerEN = new Faker({
locale: [en],
});
// 길게 쓰기 싫으니, 짧겡
const person = fakerKO.person;
const personE = fakerEN.person;
const location = fakerKO.location;
const internet = fakerKO.internet;
const animal = fakerKO.animal;
const lorem = fakerKO.lorem;
const image = fakerKO.image;
// 버튼 누르면 생성!
btnMake.addEventListener("click", () => {
const sarams = [];
for (let i = 1; i <= txtCnt.value; i++) {
// 랜덤 데이터 생성, 제공되는 랜덤 이메일은 보기 흉-> 수정
let name = `${person.lastName()} ${person.firstName()}`;
let email = personE.firstName().replaceAll(" ", "");
email += `@${internet.email().split("@")[1]}`;
let address = `${location.state()} `;
address += `${location.city()} `;
address += `${location.street()}`;
let avatar = image.avatar();
// 데이터 모아서 덩어리롱(객체)
let saram = {
name,
email,
age: Math.round(Math.random() * 80) + 20,
address,
avatar,
};
sarams.push(saram);
// 화면에 뿌리깅!
displayTable(sarams);
}
});
// 헤더 컬럼명을 한글로 바꾸기 위한 세팅
const HeaderNm = {
name: "이름",
email: "이메일",
age: "나이",
address: "주소",
avatar: "아바타",
// 필요하면 요아래 계속 추가
};
Object.freeze(HeaderNm); // 딴데서 못고치게 얼리깅
//만든 데이터로 테이블 뿌리깅!
function displayTable(dataArr) {
//테이블 시작
let tblStr = `<table border=1 style="width:100%">`;
// thead 맹글기
let thead = `<thead><tr>`;
let headerNames = [];
for (let column in dataArr[0]) {
thead += `<th>${HeaderNm[column]}</th>`;
headerNames.push(column);
}
thead += `</thead>`;
tblStr += thead;
// tbody 맹글기
let tbody = `<tbody>`;
dataArr.forEach((data, index) => {
// 이벤트 동적 바인딩은 아예 inline 이벤트로 박으면 좋아용
tbody += `<tr onmouseover='fTrOver(this)' onmouseout='fTrOut(this)'>`;
headerNames.forEach((colName) => {
if (colName == "avatar") {
let imgUL = data[colName];
tbody += `<td><img class="e7e-100" src=${imgUL}></td>`;
} else {
tbody += `<td>${data[colName]}</td>`;
}
});
tbody += `</tr>`;
});
tblStr += `${tbody}</tbody></table>`;
divDisp.innerHTML = tblStr;
}
</script>

 

아래 faker의 helpers.fromRegExp는 너무도 유용해서 직접 다양하게 해보길

너무도 너무도 권장에 권장을 하는 바이당.

let phoneNum = faker.helpers.fromRegExp("010-[0-9]{4}-[0-9{4}")
console.log(phoneNum);

 

자바로 하고 싶다면  아래를 참공

2024.03.24 - [스프링] - Faker 이용 가짜 데이터 맹글기

 


공간이 성장, 변형되어가는 과정이 시간이당.

나 자신도 결국 공간 속 공간이라 치면

나를 바꿀 수 없는 건 더 큰 공간에 대한 의존성으로

내가 바뀌면 전체 공간도 바뀌어야 하기 때문일 것이다.

 

현재라는 공간은 하나의 입체 프레임일거시다.

현재 라는 입체 프레임을 분리할 수 있어 그것을 

과거에 끼어 넣는다 해도 결국 맥락이 맞지  않을 뿐더러

나머지 입체 프레임이 반복 될 거시당. 운명이당!

 

요 입체 프레임을 만드는 알고리즘을 찾거나,

알고리즘을  만든 존재를 찾아야 한당.

 

그 존재는 이름이 무 일깡? 유 일깡?

이런 무한대로 발산되는 문제의 해결 실마리는

과연 가능한가? 라는 본질적 질문 일 것이다.

 

무한대 너 참 고약하게 어렵구낭!!!! 

 

 

https://www.youtube.com/watch?v=ZqU4oTDy3XE

 

관련글 더보기