์๋
ํ์ธ์ ๊นํจ๋น ์
๋๋ค ๐
ํ๋ก ํธ์๋๋ฅผ ํฌ๋งํ๋ ๋ถ๋ค์ ์ํด ์ฝ๊ณ ์น์ ํ ๊ฐ์๋ฅผ ์ ๊ณตํ๊ณ ์์ต๋๋ค.
(ํ) ํ๋ก ํธ์๋ ๊ฐ๋ฐ ๊ฐ์ฌ
(์ ) ์คํํธ์ ํ๋ก ํธ์๋ ๋ฆฌ๋ ๊ฐ๋ฐ์
์น ํ์ด์ง
์จ๋ผ์ธ ๊ฐ์
๋์
์ธ๋ถํ๋
udemy, codeit, ํ์์ฌ์๋ํ๊ต ๋ฑ ํน๊ฐ ์งํ
Courses
Reviews
- Bite-sized Real-world Projects - SNS Edition
- Bite-sized Real-world Projects - SNS Edition
- Bite-sized Real-world Projects - SNS Edition
- Bite-sized Real-world Projects - SNS Edition
- Bite-sized Real-world Projects - SNS Edition
Posts
Q&A
<div class="bookmark-item-add-btn"> ์ง๋ฌธ
์๋ ํ์ธ์ ๐ ์ง๋ฌธ ๊ฐ์ฌํฉ๋๋ค.ํด๋น ๊ฐ์ ์์์ 25์ด๋ฅผ ๋ณด์๋ฉด, ์๋ง์ผ๋ก "id ๊ฐ๋ ๋์ผํ๊ฒ ์์ฑํด์ฃผ์ธ์" ๋ผ๊ณ ๋์์์ต๋๋ค.id ๊ฐ์ ๋์ผํ๊ฒ ์์ฑํด์ฃผ์๋ฉด ๋ ๊ฒ ๊ฐ์ต๋๋ค. ๊ฐ์ฌํฉ๋๋ค.
- 0
- 2
- 15
Q&A
๋๋ค์ด๋ฏธ์ง
์๋ ํ์ธ์ ๐ ์ง๋ฌธ ๊ฐ์ฌํฉ๋๋ค..ํด๋น ์์์ '์์ ๋ ธํธ'์์๋ ๋ง์๋๋ ธ๋ฏ์ด, unsplash์์ ์ ๊ณตํ๋ api๊ฐ ์ญ์ ๋์ด ๋ ์ด์ ์ฌ์ฉํ ์ ์๊ฒ ๋์์ต๋๋ค. ๋ฐ๋ผ์ ์ํ์๋ ์ด๋ฏธ์ง์ ์ฃผ์๋ฅผ ๋ณต์ฌํด์ ์ฌ์ฉํด์ฃผ์๋ฉด ์์ ๋ฐฐ๊ฒฝ์ผ๋ก ์ฌ์ฉํ์ค ์ ์์ ๊ฒ ๊ฐ์ต๋๋ค. ๊ฐ์ฌํฉ๋๋ค :)
- 0
- 2
- 24
Q&A
์๋ฐ์คํฌ๋ฆฝํธ ์ง๋ฌธ
์๋ ํ์ธ์ ๐ ์ง๋ฌธ ๊ฐ์ฌํฉ๋๋ค.๋ค๋ฅธ ๊ฐ๋ฐ ์ธ์ด์ ๋ํ ์ง์์ด ์์ผ์๋ค๋ฉด, ํ ๋ฒ์ ๋๋ด๋ ์๋ฐ์คํฌ๋ฆฝํธ ๊ฐ์๋ฅผ,์์ ๊ฐ๋ฐ์ด ์ฒ์์ด์๋ผ๋ฉด, ์น ํ๋ก ํธ์๋๋ฅผ ์ํ ์๋ฐ์คํฌ๋ฆฝํธ ์ฒซ ๊ฑธ์ ๊ฐ์๋ฅผ ์ถ์ฒ๋๋ฆฝ๋๋ค!๋ฐ๋๋ผ ์๋ฐ์คํฌ๋ฆฝํธ๋, ๋ค๋ฅธ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ ํ๋ ์์ํฌ๋ฅผ ์ฌ์ฉํ์ง ์๋ '์์'ํ ์ํ์ ์๋ฐ์คํฌ๋ฆฝํธ๋ฅผ ๋งํด์. React.js, Next.js๊ฐ ์๋ ์์ํ ์๋ฐ์คํฌ๋ฆฝํธ๋ฅผ ์ตํ ๋ค์, ์ธ๊ธฐ ๋ผ์ด๋ธ๋ฌ๋ฆฌ, ํ๋ ์์ํฌ๋ค์ ํ์ตํ์๋ ๊ฒ์ ์ถ์ฒ๋๋ฆฝ๋๋ค :)
- 0
- 2
- 39
Q&A
์์ ํธ์ง ๊ด๋ จ ๋ฌธ์
์๋ ํ์ธ์ ๐ ์ง๋ฌธ ๊ฐ์ฌ๋๋ฆฝ๋๋ค.ํด๋น ์์ ํ์ธํ์ต๋๋ค. ์์์์ 5๋ถ50์ด ์ดํ์ ๋์ผํ ์์์ด ๋ฐ๋ณต๋๊ณ ์๋ ๊ฒ ๊ฐ์๋ฐ์, ๋น ๋ฅด๊ฒ ์๋ผ๋ธ ํ ์ฌ์ ๋ก๋ ๋์๋๋ฆฌ๊ฒ ์ต๋๋ค. ๊ฐ์ ์๊ฐ์ ๋ถํธ์ ๋๋ ค ์ฃ์กํฉ๋๋ค ๐๐ปโโ๏ธ
- 0
- 1
- 27
Q&A
๋๋ฌผ์จ๋ฒ๋ง๋ค๊ธฐ 1-1 api ์ค๋ฅ
์๋ ํ์ธ์ ๐ ์ง๋ฌธ ๊ฐ์ฌํฉ๋๋ค.์ด์ AWS์์ ์ด์๊ฐ ๋ฐ์ํด ๊ด๋ จ ์๋น์ค๋ค์๋ ๋ฌธ์ ๊ฐ ์๊ธด ๊ฒ์ผ๋ก ๋ณด์ด๋๋ฐ์,ํ์ฌ 10์21์ผ ์ค์ 10์๋ฅผ ๊ธฐ์ค์ผ๋ก ์๋ํด๋ณด์์๋ ์ ์ ์๋ํ๋๊ฒ ๊ฐ์ต๋๋ค! ๋ค์ ํ ๋ฒ ์๋ํด๋ณด์๊ณ ๊ทธ๋ผ์๋ ๋ฌธ์ ๊ฐ ๋ฐ์ํ๋ค๋ฉด ๋ค์ ์ง๋ฌธ ๋จ๊ฒจ์ฃผ์ธ์! ๊ฐ์ฌํฉ๋๋ค
- 0
- 2
- 30
Q&A
ํฌํธ ๊ตฌ๋ถ ๊ด๋ จ
์๋ ํ์ธ์ ๐ ์ง๋ฌธ ๊ฐ์ฌํฉ๋๋ค.๊ฐ์ ์ด๋ฐ์๋ VSCode์ ์ต์คํ ์ ์ธ Go Live๋ฅผ ์ฌ์ฉํด 3000๋ฒ ํฌํธ๋ก ์คํํ์์ผ๋,์ดํ SPA ํ๋ก์ ํธ๋ฅผ ์คํํ ๋์๋ node ์๋ฒ ์ฝ๋๋ฅผ ์ง์ ์์ฑํ์ฌ, ์คํ๊น์ง ํ๊ธฐ ๋๋ฌธ์ 5500๋ฒ ํฌํธ๋ฅผ ์ฌ์ฉํ๋ ๊ฒ์ ๋๋ค :)
- 0
- 2
- 27
Q&A
CityList๊ฐ๋ฐ-handleLoadMoreํจ์์ง๋ฌธ
์๋ ํ์ธ์ ๐ ์ง๋ฌธ ๊ฐ์ฌํฉ๋๋ค.$loadMoreButton.addEventListener('click', () => { this.handleLoadMore(); });handleLoadMore ํจ์๋, ์์ ์ฝ๋์ฒ๋ผ CityList ์ปดํฌ๋ํธ๊ฐ ๋ ๋๋ง ๋ ๋ ์กฐ๊ฑด์ ๋ฐ๋ผ ๋ํ๋๋ '๋๋ณด๊ธฐ' ๋ฒํผ์ ๋๋ ์ ๋ ์คํ๋๋ ํจ์์ ๋๋ค.CityList.js ํ์ผ์ ํด๋น ๋ถ๋ถ์ ์์ฑํ์ จ๋์ง ํ์ธํด๋ณด์๋ฉด ์ข์ ๊ฒ ๊ฐ์ต๋๋ค! ์ ์ฒด ์ฝ๋๋ ์๋์ ๊ฐ์ต๋๋ค.//CityList.js export default function CityList({ $app, initialState, handleLoadMore }) { this.state = initialState; this.$target = document.createElement('div'); this.$target.className = 'city-list'; this.handleLoadMore = handleLoadMore; $app.appendChild(this.$target); this.template = () => { let temp = ``; if (this.state) { this.state.cities.forEach((elm) => { temp += ` (์ฌ์ง) ${elm.city}, ${elm.country} โญ๏ธ ${elm.total} `; }); temp += ``; } return temp; }; this.render = () => { this.$target.innerHTML = this.template(); if (!this.state.isEnd) { const $loadMoreButton = document.createElement('button'); $loadMoreButton.className = 'add-items-btn'; $loadMoreButton.textContent = '+ ๋๋ณด๊ธฐ'; this.$target.appendChild($loadMoreButton); $loadMoreButton.addEventListener('click', () => { this.handleLoadMore(); }); } }; this.setState = (newState) => { this.state = newState; this.render(); }; this.render(); }
- 0
- 1
- 38
Q&A
const ๊ฐ์ฒด/๋ฐฐ์ด ์ฐจ์ด
์๋ ํ์ธ์ ๐ ์ง๋ฌธ ๊ฐ์ฌํฉ๋๋ค.๋จผ์ const๋ const๋ก ์ ์ธ๋ ๋ณ์์ ๋ค๋ฅธ ๊ฐ์ ๋ค์ ํ ๋นํ๊ฒ ๋ชปํ๊ฒ ํ๋ ํค์๋์ ๋๋ค.const user = { name: "์๋ฌด๊ฐ", age: 29 }; // โ ๋ถ๊ฐ๋ฅ (์ฐธ์กฐ ์์ฒด๋ฅผ ๋ณ๊ฒฝํ๋ ค ํจ) user = { name: "ํ๊ธธ๋" }; // TypeError // โ ๋ด๋ถ ํ๋กํผํฐ๋ ๋ณ๊ฒฝ ๊ฐ๋ฅ user.age = 30; console.log(user); // { name: "์๋ฌด๊ฐ", age: 30 }๋ฐ๋ผ์ ์์ ์ฝ๋์ฒ๋ผ user๋ผ๋ ๋ณ์๋ ํ ๋ฒ ๊ฐ์ฒด๋ฅผ ๊ฐ๋ฆฌํค๋ฉด, ๊ทธ ์ฃผ์๋ฅผ ๋ฐ๊ฟ ์ ์์ง๋ง, ๊ทธ ์ฃผ์ ์์ ์ ์ฅ๋ ๊ฐ์ฒด ์์ฑ์ ์์ ์ด ๊ฐ๋ฅํฉ๋๋ค. ๋ด๋ถ์ ๊ตฌ์กฐ๋ฅผ ๋ฐ๊พธ๋๊ฑด '์ฌํ ๋น'์ ํด๋นํ์ง ์๊ธฐ ๋๋ฌธ์ ๋๋ค. const numbers = [1, 2, 3]; // โ ์์ ์์ ๊ฐ๋ฅ numbers.push(4); numbers[0] = 10; console.log(numbers); // [10, 2, 3, 4] // โ ์ฌํ ๋น ๋ถ๊ฐ๋ฅ numbers = [9, 9, 9]; // TypeError๋ฐฐ์ด๋ํ ๋ง์ฐฌ๊ฐ์ง์ธ๋ฐ์, ์์ ์ฝ๋์๊ฐ์ด ์ฌํ ๋น์ ๋ถ๊ฐ๋ฅํ์ง๋ง, ์ฌ๋ฌ ๋ฉ์๋๋ฅผ ์ฌ์ฉํด ๋ด๋ถ์ ๊ฐ์ ๋ณ๊ฒฝํ๋ ๊ฒ์ ๊ฐ๋ฅํฉ๋๋ค.
- 0
- 2
- 33
Q&A
header ๊ฐ๋ฐ ์๋ก๊ณ ์นจ ์ค๋ฅ
์๋ ํ์ธ์ ๐ ์ง๋ฌธ ๊ฐ์ฌํฉ๋๋ค.ํด๋น ์ค๋ฅ๋, ์๋ฒ๊ฐ ์์ฒญ์ ์ฒ๋ฆฌํ๋ค๊ฐ ์์ธ๊ฐ ๋ฐ์ํด์ ๋ฐ์ํ ์ค๋ฅ์ json์ ์ ๋ฌ๋ฐ์์ผ ํ๋ ์ํฉ์์ html์ ์ ๋ฌ๋ฐ์ ์๊ธด ์ค๋ฅ์ธ๋ฐ์,๋จผ์ VSCode์ Go Live๊ฐ ์๋, server.js ๋ฅผ ์คํํด์ ์๋ฒ๋ฅผ ์คํํ๋์ง ํ์ธํด์ฃผ์๊ณ , ๊ทธ ๋ค์์ผ๋ก ์์ฒญ์ด ์ ๋๋ก ๋ ์ฃผ์๋ก ๊ฐ๊ณ ์๋์ง ํ์ธํด๋ณด์๋ฉด ์ข์ ๊ฒ ๊ฐ์ต๋๋ค. ๋ํ ํํ์ธ์ง๋ ํ์ธํด๋ณด์๋ฉด ์ข๊ฒ ์ต๋๋ค!! ๊ฐ์ฌํฉ๋๋ค.
- 0
- 2
- 34
Q&A
Promise ๊ฐ์ฒด
์๋ ํ์ธ์ ๐ ์ง๋ฌธ ๊ฐ์ฌํฉ๋๋ค.Promise ๊ฐ์ฒด๋ ์ฝ๊ฒ ๋งํด๋ณด์๋ฉด, '๊ฒฐ๊ณผ๋ ์ง๊ธ ๋ชจ๋ฅด์ง๋ง ๋์ค์ ๊ฒฐ๊ณผ๋ฅผ ์๋ ค์ฃผ๋' ๊ทธ๋ฐ ์ฝ์๋ ๊ฐ์ฒด๋ผ๊ณ ํ ์ ์์ต๋๋ค. dobbymin2๋์ด ์ดํดํ์ ๋น๋๊ธฐ ์์ ์ ์๊ฐ์ด ๊ฑธ๋ฆฌ๋ ์์ ์ด๊ธฐ ๋๋ฌธ์ ์๋ฐ์คํฌ๋ฆฝํธ๊ฐ ๊ธฐ๋ค๋ฆฌ์ง ์๊ณ ๊ณ์ ๋ค์ ์ฝ๋๋ฅผ ์คํํ ์ ์๋๋ก ํด์ฃผ๋๋ฐ์, ์ด๋ฌํ ๋์ค์ ๋๋๋ ์์ ์ ๊ฒฐ๊ณผ๋ฅผ ๋ด์๋๋ ๊ทธ๋ฆ์ ๋ฐ๋ก Promise๋ผ๊ณ ํ ์ ์์ต๋๋ค!! function getData() { return new Promise((resolve) => { setTimeout(() => { resolve("์๋ฒ ์๋ต ๋ฐ์ดํฐ"); }, 1000); }); }๋ฐ๋ผ์ Promise๋ฅผ ๋ฐํํ๋ค ๋ผ๋ ์๋ฏธ๋, ์์ ์ฝ๋์ ๊ฐ์ด getData ํจ์์ฒ๋ผ ์ค์ ๋ฐ์ดํฐ๋ฅผ ๋ฐํํ์ง ์๊ณ ๋์ Promise ๊ฐ์ฒด๋ฅผ ๋ฐํํ๋ค. ์ฆ, ์ง๊ธ์ ๊ฒฐ๊ณผ๊ฐ ์์ง๋ง 1์ด ํ์๋ '์๋ฒ ์๋ต ๋ฐ์ดํฐ'๋ผ๋ ๊ฐ์ ์ ๋ฌํ ๊ฑฐ๋ผ๋ ์ฝ์์ ์ฃผ๋๊ฑฐ๋ผ๊ณ ์ดํดํด์ฃผ์๋ฉด ๋ ๊ฒ ๊ฐ์ต๋๋ค ๐
- 1
- 2
- 32




