๐คทโ๏ธ ๋ณธ๋ก ์ ์์ ์ค์ํ ๊ฐ์ฒด ์ง์ ๊ณต๋ถํ๊ธฐ
๊ฐ์ฅ ์ค์ํ ๊ฐ์ฒด์ ๊ฐ๋
๊ณผ ๋ค๋ฃจ๋ ๋ฐฉ๋ฒ
https://cometruedream.tistory.com/261
[์๋ฐ์คํฌ๋ฆฝํธ] ๊ฐ์ฅ ์ค์ํ ์๋ฐ์คํฌ๋ฆฝํธ ๊ฐ์ฒด ์์ฑ๊ณผ ์กฐ์, JSON, ๋ฉ์๋ ๊ฐ๋ ๊ณผ ์ฌ์ฉ๋ฒ
๐คทโ๏ธ ๋ณธ๋ก ์ ์์ ์ค์ํ ๋ฐฐ์ด ์ฌ์ ์ง์ ๊ณต๋ถํ๊ธฐ "> HTML ์ฝ์ ๋ฏธ๋ฆฌ๋ณด๊ธฐํ ์ ์๋ ์์ค ๋ฐฐ์ด reduce() ํจ์ ์ฌ์ฉ๋ฒ์ ๋ํด ์์๋ณด๊ธฐhttps://cometruedream.tistory.com/259 HTML ์ฝ์ ๋ฏธ๋ฆฌ๋ณด๊ธฐํ ์ ์๋
cometruedream.tistory.com
๊ฐ์ฅ ์ค์ํ ๊ฐ์ฒด Object.values(), Object.keys() ๋ฉ์๋ ๊ฐ๋
https://cometruedream.tistory.com/264
[์๋ฐ์คํฌ๋ฆฝํธ] ๊ฐ์ฅ ์ค์ํ ๊ฐ์ฒด ๋ค๋ฃจ๊ธฐ Object.values() ํจ์ ๊ฐ๋ ๊ณผ ์ฌ์ฉ๋ฒ
๐คทโ๏ธ ๋ณธ๋ก ์ ์์ ์ค์ํ ๊ฐ์ฒด ์ง์ ๊ณต๋ถํ๊ธฐ์๋ฐ์คํฌ๋ฆฝํธ์์ ๊ฐ์ฒด์ ๋ฐฐ์ด์ ๊ฐ์ฅ ์ค์ํ ๋ฐ์ดํฐ ์๋ฃ๊ตฌ์กฐ ์ ๋๋ค.javascript ๊ฐ์ฒด(object)๋ key์ value ํํ๋ก ์ด๋ฃจ์ด์ ธ ์์ผ๋ฉฐ ๊ฐ์ฒด์๋ ๋ง์
cometruedream.tistory.com
๐คทโ๏ธ Object.assign()๋?
์๋ฐ์คํฌ๋ฆฝํธ์์ ๊ฐ์ฒด๋ ์ค์ํ ๋ฐ์ดํฐ ์๋ฃ๊ตฌ์กฐ์ ๋๋ค.
๊ฐ์ฒด๋ฅผ ์ ์ฉํ๊ฒ ๋ค๋ฃฐ์ ์๋๋ก ๋๋ ๋ค์ํ ๋ฉ์๋๋ค์ด ์กด์ฌํ์ง๋ง ๊ทธ์ค์์ ๊ฐ์ฒด๋ฅผ ๋ณํฉํ๊ณ ๊ฐ์ฒด๋ฅผ ์ ๋ฐ์ดํธํ๊ณ ์๋ก์ด ๊ฐ์ฒด๋ฅผ ์์ฑํ ๋ ์ ์ฉํ ๊ฐ์ฒด ๋ฉ์๋๋ก Object.assign() ๋ฉ์๋๊ฐ ์์ต๋๋ค.
์๋ฐ์คํฌ๋ฆฝํธ ๊ฐ์ฒด๋?
ํด๋น ๊ธ์์ ์๋ฐ์คํฌ๋ฆฝํธ ๊ฐ์ฒด์ ๊ฐ๋ ์ ๋ณด์๋๊ฒ์ ์ถ์ฒ๋๋ฆฝ๋๋ค.
https://cometruedream.tistory.com/261
[์๋ฐ์คํฌ๋ฆฝํธ] ๊ฐ์ฅ ์ค์ํ ์๋ฐ์คํฌ๋ฆฝํธ ๊ฐ์ฒด ์์ฑ๊ณผ ์กฐ์, JSON, ๋ฉ์๋ ๊ฐ๋ ๊ณผ ์ฌ์ฉ๋ฒ
๐คทโ๏ธ ๋ณธ๋ก ์ ์์ ์ค์ํ ๋ฐฐ์ด ์ฌ์ ์ง์ ๊ณต๋ถํ๊ธฐ "> HTML ์ฝ์ ๋ฏธ๋ฆฌ๋ณด๊ธฐํ ์ ์๋ ์์ค ๋ฐฐ์ด reduce() ํจ์ ์ฌ์ฉ๋ฒ์ ๋ํด ์์๋ณด๊ธฐhttps://cometruedream.tistory.com/259 HTML ์ฝ์ ๋ฏธ๋ฆฌ๋ณด๊ธฐํ ์ ์๋
cometruedream.tistory.com
๐คทโ๏ธ Object.assign() ์ฌ์ฉ๋ฒ?
Object.assign() ๋ฉ์๋๋ ์๋ฐ์คํฌ๋ฆฝํธ์์ ๊ฐ์ฒด๋ฅผ ๋ณต์ฌ, ๋ณํฉ, ์ ๋ฐ์ดํธ์ ์ฌ์ฉ๋๋ ๊ฐ์ฒด ๋ฉ์๋ ์ ๋๋ค.
์ฝ๊ฒ ์ดํดํ ์ ์๋ ๊ฐ๋ 2๊ฐ์ง
- ๊ฐ์ฒด๋ณต์ฌ: ํ๋์ ๊ฐ์ฒด๋ฅผ ๋ค๋ฅธ ๊ฐ์ฒด์ ๊ทธ๋๋ก ๋ณต์ฌ
- ๊ฐ์ฒด๋ณํฉ: ์ฌ๋ฌ ๊ฐ์ ๊ฐ์ฒด๋ฅผ ํ๋์ ๊ฐ์ฒด๋ก ๋ณํฉ
1. ๊ฐ์ฒด ๋ณต์ฌ
์์
let originalPhoneBook = {
"Alice": "123-456-7890"
};
let copiedPhoneBook = Object.assign({}, originalPhoneBook);
console.log(copiedPhoneBook);
// ์ถ๋ ฅ: { "Alice": "123-456-7890" }
์์ ์์ ์์ originalPhoneBook ๊ธฐ์กด์ ๊ฐ์ฒด ๊ฐ์ ๊ฐ์ง๊ณ ์์ต๋๋ค.
copiedPhoneBook ๋ณ์๋ Object.assign() ๋ฉ์๋๋ฅผ ํ์ฉํด์ originalPhoneBook ์๋ก์ด ๊ฐ์ฒด์ ๊ฐ์ ๋ณต์ฌํฉ๋๋ค.
๊ทธ๋์ originalPhoneBook๊ณผ copiedPhoneBook ๊ฐ์ ๊ฐ์ ๊ฐ์ฒด๋ฅผ ๋ด๊ณ ์์ต๋๋ค.
2. ๊ฐ์ฒด ๋ณํฉ
์์
let phoneBook1 = {
"Alice": "123-456-7890"
};
let phoneBook2 = {
"Bob": "987-654-3210"
};
let mergedPhoneBook = Object.assign({}, phoneBook1, phoneBook2);
console.log(mergedPhoneBook);
// ์ถ๋ ฅ: { "Alice": "123-456-7890", "Bob": "987-654-3210" }
์์ ์์ ์์ phoneBook1์ phoneBook2 ๋๊ฐ์ ๊ฐ์ฒด๋ฅผ Object.assign() ๋ฉ์๋๋ฅผ ํ์ฉํด์ ๋ณํฉํฉ๋๋ค.
์์๋๋ฉด ์ข์ ๊ฟํ
์๋ฐ์คํฌ๋ฆฝํธ์์ ๋ณ์์ ์์์ ์ ์ฅ ๊ฐ๊ณผ ๋ค๋ฅด๊ฒ ๊ฐ์ฒด๋ ๋ค๋ฅธ ๋ฉ๋ชจ๋ฆฌ ์ฃผ์์ ๊ฐ์ฒด ๊ฐ์ ๋ด๊ณ ์์ต๋๋ค.
3. Object.assign({}, originalObject)์ Object.assign(originalObject) ์ฐจ์ด์
Object.assign() ๋ฉ์๋๋ฅผ ์ฌ์ฉํ์๋ฉด์ ๋์ฐ๋ฏธ๊ฐ ์ข์ผ์ ๋ถ์ 2๊ฐ์ ๋ฐฉ์์ ๋ณด์ค์ ์์ต๋๋ค.
๋๊ฐ์ ๋ฐฉ์์ ์ฐจ์ด์ ์ ๋ํด์ ๊ฐ๋ ์ ์์๋ณด๊ฒ ์ต๋๋ค.
object.assign({}, originalObject) ์์
let originalPhoneBook = {
"Alice": "123-456-7890"
};
let copiedPhoneBook = Object.assign({}, originalPhoneBook);
console.log(copiedPhoneBook);
์ด ๋ฐฉ์์ ์๋ก์ด ๊ฐ์ฒด {}๋ฅผ ๋ง๋ค์ด์ ์๋ก์ด ๊ฐ์ฒด์์ originalPhoneBook ๋ณต์ฌํ๋ ๋ฐฉ์์ ๋๋ค.
์ค์ํ ์ ์ copiedPhoneBook ์๋ก์ด ๊ฐ์ฒด ๊ฐ์ ๋ด๊ณ ์์ผ๋ฉฐ originalPhoneBook ๋ณ์๋ ๋ณํ์ง ์์ต๋๋ค.
object.assign(originalObject)
let originalPhoneBook = {
"Alice": "123-456-7890"
};
let phoneBook2 = {
"Bob": "987-654-3210"
};
let copiedPhoneBook = Object.assign(originalPhoneBook, phoneBook2);
console.log(copiedPhoneBook);
console.log(originalPhoneBook);
//{Alice: '123-456-7890', Bob: '987-654-3210'}
์ด๋ฐฉ์์ originalPhoneBook ๊ฐ์ฒด์ phoneBook2 ๋ณํฉํ๋ ๋ฐฉ์์ ๋๋ค.
๊ทธ๋์ originalPhoneBook ๋ณ์๋ phoneBook2 ๊ฐ์ ๋ณํฉํ ๊ฐ์ฒด์ ๊ฐ์ ๊ฐ์ง๊ณ ์์ต๋๋ค.
์ค์ํ์ ์ originalPhoneBook๊ฐ์ฒด์ ๊ฐ์ด ๋ฐ๋๊ฒ์ ๋๋ค.
์์ 2๊ฐ์ ์์ ์ ์ฐจ์ด์
์์ ๋๊ฐ์ ์์ ๋ก Object.assign({}, ๊ฐ์ฒด), Object.assign(๊ฐ์ฒด1, ๊ฐ์ฒด2) ๋ฉ์๋๊ฐ ์ด๋ป๊ฒ ๋์ํ๋์ง ์์๋ณด์๊ณ ๋๊ฐ์ ๋ฐฉ์์ ์ฐจ์ด์ ์ ๋ํด์ ์์๋ณด์์ต๋๋ค.
๐คทโ๏ธ ๋ง์ง๋ง์ผ๋ก
์๋ฐ์คํฌ๋ฆฝํธ ๋ค์ํ ๊ฐ์ฒด ๋ฉ์๋๊ฐ ์กด์ฌํ๋ฉฐ Object.assign() ๋ฉ์๋๋ ๊ฐ์ฒด๋ฅผ ๋ณต์ฌํ๊ณ ๋ณํฉํ๊ณ ์ ๋ฐ์ดํธํ๋๋ฐ ์ ์ฉํ ๊ฐ์ฒด ๋ฉ์๋์ ๋๋ค.
Object.assign() ์์ ๋ค์ ๋ณด๋ฉด์ ๊ฐ์ฒด๊ฐ ์ ์ฅ๋๋ ๋ฉ๋ชจ๋ฆฌ ์ฃผ์ ๊ฐ๋ ๋ ์ดํดํ๋๊ฒ์ด ์ค์ํ๋ฉฐ ์๋ณธ์ ๊ฐ์ฒด๋ฅผ ์์ ํ๋์ง ์๋ก์ด ๊ฐ์ฒด๋ฅผ ๋ง๋๋์ง ๊ฐ์ฒด์ ๋งค์ปค๋์ฆ์ ์ดํดํ๊ณ ์ฌ์ฉํ๋๊ฒ์ด ์ค์ํ๋ค๊ณ ์๊ฐํฉ๋๋ค.
์ฌ๋ฐ๋ ์ค๋์ ๋ ๋ณ ์ด์ธ ๋ณด๊ณ ๊ฐ์ธ์!
https://cometruedream.tistory.com/247
[React] Tailwind ํ์ค, ๋์ค, ์ธ์ค ํจ๊ณผ className ์ปค์คํ
๐คทโ๏ธ Tailwind ํ์ค, ๋์ค, ์ธ์ค ํจ๊ณผํ๋ก์ ํธ ์งํ์ค ๋ฐฐ๋ ๋งํฌ์ URL ๊ธธ์ด๊ฐ ๋๋ฌด ๊ธธ์ด์ 3์ค ํจ๊ณผ ์ฒ๋ฆฌ๋ฅผ ํด์ผ ํ์ต๋๋ค. React + Tailwind CSS ์ ํ ๋ ํ๋ก์ ํธ ์ฌ์ CSS ํ์ผ & style ํ๊ทธ๋ฅผ ์ฌ์ฉํ
cometruedream.tistory.com
https://cometruedream.tistory.com/243
NestJS Lifecycle (์๋ช ์ฃผ๊ธฐ) ๊ฐ๋
๐คทโ๏ธ ๋ณธ๋ก ์ ์์ Nest JS ๊ฐ๋ ?Nest JS๋ Node JS ๊ธฐ๋ฐ์ผ๋ก ํ ์๋ฒ ์ดํ๋ฆฌ์ผ์ด์ ํ๋ ์์ํฌ ์ ๋๋ค. ์๋ฐ์คํฌ๋ฆฝํธ๋ ์๋นํ ์ค๋ซ๋์ Express ๊ธฐ๋ฐ์ผ๋ก ์๋ฒ ์ดํ๋ฆฌ์ผ์ด์ ๊ฐ๋ฐ์์ ์๋์ ์ธ ์
cometruedream.tistory.com
https://cometruedream.tistory.com/242
๋ฆฌ์กํธ Vite Proxy ํ์ฉํ CORS ์ค๋ฅ ํด๊ฒฐ
๐คทโ๏ธ ๋ณธ๋ก ์ ์์ํ๋ก ํธ์๋ ๋ฒ๋ค๋ฌ ๊ฐ๋ ๊ณผ webpack vs vite ๋น๊ต์ ๋ํด์ ๊ณต๋ถ๋ฅผ ํ๊ณ ๊ธ์ ๋ณด์๋ฉด ๋ ๋ง์ ๋์์ด ๋ฉ๋๋ค^^ํ๋ก ํธ์๋ ๊ฐ๋ฐ์ ์ํ ๋ฒ๋ค๋ฌ ๊ฐ๋ ๊ณผ webpack vs vite ๋น๊ตhttps://comet
cometruedream.tistory.com
https://cometruedream.tistory.com/241
React ํด๋๊ตฌ์กฐ FSD ๊ธฐ๋ฅ ๋ถํ ์ค๊ณ ์ํคํ ์ฒ
๐คทโ๏ธ ๋ณธ๋ก ์ ์์ํ๋ก์ ํธ๋ฅผ ์์ํ๊ธฐ์ ์์ ํด๋ ๊ตฌ์กฐ, ์ค๊ณ์ ๋ํ ์ํคํ ์ฒ๋ฅผ ๋ง๋๋ ๊ฒ์ ์๋นํ ์ด๋ ต๋ค. ์ด๋ฒ ํ๋ก์ ํธ์ React FSD ํด๋๊ตฌ์กฐ ์ํคํ ์ฒ๋ฅผ ์ค๊ณํ ์์ ์ด๋ผ์ FSD ์ํคํ
cometruedream.tistory.com
https://cometruedream.tistory.com/244
์ฝ๊ฒ ์ดํดํ๊ณ ์ฌ์ฉํ ์ ์๋ Prisma ๋ช ๋ น์ด ์ ๋ฆฌ
๐คทโ๏ธ Prisma ๋ช ๋ น์ด ๋ณธ๋ก ์ ์์ Prisma๋?Nest JS ํ๋ ์์ํฌ์ Prisma ORM์ ํ์ฉํด์ ํ๋ก์ ํธ๋ฅผ ์งํํ๋ฉด์ Prisma๋ Node JS ๊ธฐ๋ฐ์ ํ๋ ์์ํฌ/๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ์ํธ์์ฉ์ด ์๋๋ฉฐ Prisma + DB ์ฐ๋์ผ
cometruedream.tistory.com