FE
[Next.js] ํ๋ก์ ํธ ์์ฑ
Next.js๋ ์๋ฒ์ฌ์ด๋๋ ๋๋ง์ ์ง์ํด์ฃผ๋ ํ๋ ์์ํฌ์ด๋ค.์๋ฒ์ฌ์ด๋ ๋ ๋๋ง์ ์ฅ์ ์ ์๋ ํฌ์คํ ์ ์ ๋ฆฌํด๋์๋ค. SSR์ ๊ฒฝํ์ ์๊ณ ์ถ์ด์ Next.js๋ฅผ ์ฌ์ฉํด๋ณด๋ ค๊ณ ํ๋ค.2024.05.30 - [Front-end/React] - [React] ๋ชจ๋ ๋ฆฌ์กํธ ๋ฅ๋ค์ด๋ธ 4. ์๋ฒ ์ฌ์ด๋ ๋ ๋๋ง ์ฃผ์ ์ ๋ฆฌ [React] ๋ชจ๋ ๋ฆฌ์กํธ ๋ฅ๋ค์ด๋ธ 4. ์๋ฒ ์ฌ์ด๋ ๋ ๋๋ง ์ฃผ์ ์ ๋ฆฌ1. ์ฑ๊ธ ํ์ด์ง ์ ํ๋ฆฌ์ผ์ด์ ์ด๋?์ฑ๊ธ ํ์ด์ง ์ ํ๋ฆฌ์ผ์ด์ ์ ์ฝ์์ธ SPA๋ ๋ ๋๋ง๊ณผ ๋ผ์ฐํ ์ ํ์ํ ๋๋ถ๋ถ์ ๊ธฐ๋ฅ์ ์๋ฒ๊ฐ ์๋ ๋ธ๋ผ์ฐ์ ์ ์๋ฐ์คํฌ๋ฆฝํธ์ ์์กดํ๋ ๋ฐฉ์์ ์๋ฏธํ๋ค. SPAworld-developer.tistory.comํ๋ก์ ํธ ์์ฑํ๊ธฐnpx create-next-app@latest ๋ง์ฝ typescript๋ฅผ ์ฌ์ฉํ๊ณ ..
[React] ๋ชจ๋ ๋ฆฌ์กํธ ๋ฅ๋ค์ด๋ธ 4. ์๋ฒ ์ฌ์ด๋ ๋ ๋๋ง ์ฃผ์ ์ ๋ฆฌ
1. ์ฑ๊ธ ํ์ด์ง ์ ํ๋ฆฌ์ผ์ด์ ์ด๋?์ฑ๊ธ ํ์ด์ง ์ ํ๋ฆฌ์ผ์ด์ ์ ์ฝ์์ธ SPA๋ ๋ ๋๋ง๊ณผ ๋ผ์ฐํ ์ ํ์ํ ๋๋ถ๋ถ์ ๊ธฐ๋ฅ์ ์๋ฒ๊ฐ ์๋ ๋ธ๋ผ์ฐ์ ์ ์๋ฐ์คํฌ๋ฆฝํธ์ ์์กดํ๋ ๋ฐฉ์์ ์๋ฏธํ๋ค. SPA๋ ๋ง ๊ทธ๋๋ก ํ๋์ ํ์ด์ง๋ก ๊ตฌํ๋๋ฉฐ ์๋ก์ด ํ์ด์ง๋ฅผ ๋ฐ์์ค์ง ์๋๋ค. ์ต์ด์ ์ฒซ ํ์ด์ง์์ ๋ฐ์ดํฐ๋ฅผ ๋ชจ๋ ๋ถ๋ฌ์จ ์ดํ์ ํ์ด์ง ์ ํ ๋จ๊ณ์์๋ ์๋ฐ์คํฌ๋ฆฝํธ์ ๋ธ๋ฌ์ฐ์ ์ history.pushState์ history.replaceState๋ก ์ด๋ค์ง๊ธฐ ๋๋ฌธ์ ์๋ฒ์์ HTML์ ๋ด๋ ค๋ฐ์ง ์๊ณ ํ๋์ ํ์ด์ง์์ ๋ชจ๋ ์์ ์ ์ฒ๋ฆฌํ๋ค. SPA๋ ์ต์ด ์ฒซ ํ์ด์ง๋ฅผ ๋ฐ์ ๋๋ SSR์ ์ฌ์ฉํ ์ ์์ผ๋ฉฐ ์ดํ์๋ CSR์ ์ด์ฉํ์ฌ ๋ ๋๋ง์ ์งํํด์ผ ํ๋ค. 1.1 SPA์์ ํ์ด์ง ์ ํ์ด ์ผ์ด๋๋ ๊ณผ์ ์ ์ค๋ช ํ์์คํ์ด์ง ์ ํ ์..
[React] SPA, CSR์ ๊ฐ์๊น ๋ค๋ฅผ๊น
๋ต๋ถํฐ ์ด์ผ๊ธฐ ํ์๋ฉด SPA, CSR์ ๊ฐ์ง ์๋ค. ์ ์ด์ ๋น๊ต ๋์์ด ์๋๋ค. CSR(Client Side Rendering)์ฌ์ฉ์๊ฐ ์น ๋ธ๋ผ์ฐ์ ์ ์ฃผ์๋ฅผ ์ ๋ ฅํ๋ฉด ๋ฐ์ดํฐ๊ฐ ์๋ ๋น HTML๋ง ๋ฐ์์ค๊ณ , ๋ฐ์ดํฐ๋ ์ฌ๋ฌ static ํ์ผ๋ค์ด ๋ก๋๋ ์ดํ์ ์์ฒญํด์ ๋ฐ์์ค๋ ๋ฐฉ์์ผ๋ก ์งํ๋จSSR(Server Side Rendering)CSR๊ณผ ๋ฐ๋๋ก ๋ฐ์ดํฐ๊น์ง ๋ชจ๋ ์ฝ์ ํ์ฌ ์์ฑ๋ HTML์ ๋ฐ์์ค๋ ๋ฐฉ์์ผ๋ก ์งํ๋จSPA(Single Page Application)์๋ฒ๋ก๋ถํฐ ์ฒซ ํ์ด์ง๋ง ๋ฐ์์ค๊ณ ์ดํ์๋ ๋์ ์ผ๋ก ํ์ด์ง๋ฅผ ๊ตฌ์ฑํ์ฌ ์๋ก์ด ํ์ด์ง๋ฅผ ๋ฐ์์ค์ง ์๋ ์น ์ดํ๋ฆฌ์ผ์ด์ ์ ๋งํจ๋ฐ์ดํฐ๋ฅผ ์์ ํ๊ฑฐ๋ ์กฐํํ ๋ ํ์ด์ง๊ฐ ์๋ก๊ณ ์นจ ๋์ง ์๊ณ ๋ค๋ฅธ ํ์ด์ง๋ก ๋์ด๊ฐ์ง ์์MPA(Multiple Page Appl..
[JavaScript] ์๋ฐ์คํฌ๋ฆฝํธ ๋ฌธ์์ด ๋ฐ๋ณต ๋ฉ์๋ repeat()
โ๏ธ repeat() ์์ฝํน์ ๋ฌธ์์ด์ ์ํ๋๋งํผ ๋ฐ๋ณตํ ๋ฌธ์์ด์ ์ป๊ณ ์ถ์ ๋ ์ฌ์ฉ.โ๏ธ repeat() ๊ธฐ๋ณธํstring.repeat(count);string : ๋ฌธ์์ด์ด ์ ์ฅ๋ string ๋ณ์count : ๋ฐ๋ณตํ ํ์โ๏ธ repeat() ์ฌ์ฉ๋ฒstr = 'abc';console.log(str.repeat(3)); // abcabcabc ์ถ๋ ฅ
[JavaScript] ์๋ฐ์คํฌ๋ฆฝํธ ์ต๋/์ต์ ์ ์๊ฐ MAX_SAFE_INTEGER/MIN_SAFE_INTEGER
โ๏ธ Number.MAX_SAFE_INTEGER() / Number.MIN_SAFE_INTEGER() ์์ฝNumber.MAX_SAFE_INTEGER() : ์๋ฐ์คํฌ๋ฆฝํธ์์ ์์ ํ ์ต๋ ์ ์ ๊ฐNumber.MIN_SAFE_INTEGER() : ์๋ฐ์คํฌ๋ฆฝํธ์์ ์์ ํ ์ต์ ์ ์ ๊ฐโ๏ธ Number.MAX_SAFE_INTEGER() / Number.MIN_SAFE_INTEGER() ์ฌ์ฉ๋ฒ// ์ต๋๊ฐ ์ค์ const max = Number.MAX_SAFE_INTEGER;// ์ต์๊ฐ ์ค์ const min = Number.MIN_SAFE_INTEGER;
[JavaScript] ์๋ฐ์คํฌ๋ฆฝํธ ์ ์์ธ์ง ํ์ธํ๋ Number.isInteger() ๋ฉ์๋
โ๏ธ Number.isInteger() ์์ฝ์ธ์๊ฐ ์ ์์ธ์ง ์๋์ง ํ๋จํ์ฌ ์ ์์ด๋ฉด true๋ฅผ, ์ ์๊ฐ ์๋๋ฉด false๋ฅผ ๋ฐํํ๋ ๋ฉ์๋โ๏ธ Number.isInteger() ๊ธฐ๋ณธํNumber.isInteger(value);Value : ์ ์์ธ์ง ํ์ธํ๋ ค๋ ๊ฐ๋ฐํ๊ฐ : ์ฃผ์ด์ง ๊ฐ์ ์ ์ ์ฌ๋ถ๋ฅผ ๋ํ๋ด๋ Boolean๊ฐโ๏ธ Number.isInteger() ์ฌ์ฉ๋ฒNumber.isInteger(0); // trueNumber.isInteger(-100); // trueNumber.isInteger(0.25); // falseNumber.isInteger("๋ฌธ์์ด"); // falseNumber.isInteger(true); // falseNumber.isInteger(Infinity); // false
[JavaScript] ์๋ฐ์คํฌ๋ฆฝํธ ๋์๋ฌธ์ ๋ณ๊ฒฝํ๊ธฐ toUpperCase(), toLowerCase()
โ๏ธ toUpperCase(), toLowerCase() ์์ฝ์์ด๋ก ์ด๋ฃจ์ด์ง ๋ฌธ์์ด์์ ๋๋ฌธ์๋ฅผ ์๋ฌธ์๋ก, ์๋ฌธ์๋ฅผ ๋๋ฌธ์๋ก ๋ฐ๊พธ๊ณ ์ถ์ ๋ ์ฌ์ฉํจ.โ๏ธ toUpperCase(), toLowerCase() ์ฌ์ฉ๋ฒconst str = "AbCdE";// ์๋ฌธ์๋ฅผ ๋๋ฌธ์๋ก ๋ฐ๊ฟ ๋const upperStr = str.toUpperCase(); // "ABCDE"// ๋๋ฌธ์๋ฅผ ์๋ฌธ์๋ก ๋ฐ๊ฟ ๋const lowerStr = str.toLowerCase(); // "abcde"
[JavaScript] ์๋ฐ์คํฌ๋ฆฝํธ String includes ๋ฉ์๋
โ๏ธ includes() ์์ฝ ๋ฌธ์์ด์ ํน์ ๋ฌธ์์ด์ด ํฌํจ๋์ด ์๋์ง ํ์ธํ๋ ๋ฉ์๋ ํฌํจ๋์ด ์์ ๋ โก๏ธ true ๋ฐํ ํฌํจ๋์ด ์์ง ์์ ๋ โก๏ธ false ๋ฐํ โ๏ธ includes() ๊ธฐ๋ณธํ ํ์ธ ๋ฌธ์์ด.includes(ํน์ ๋ฌธ์์ด, ์ฐพ์ ์์ ์์น) ํ์ธ ๋ฌธ์์ด(String) : String ์๋ฃํ์ ๋ฌธ์์ด์ ๋ณ์๋ช ์ด ๋ค์ด๊ฐ ํน์ ๋ฌธ์์ด(String) : ํฌํจ๋์ด์๋์ง ํ์ธํ๊ณ ์ถ์ ๋ฌธ์์ด์ ๋ฃ์ด์ค ์ฐพ์ ์์ ์์น(Number) : ํ์ธ ๋ฌธ์์ด์์ ์ด๋ ์์น์์๋ถํฐ ํน์ ๋ฌธ์์ด์ด ์๋ ์ง ํ์ธํ๊ณ ์ถ์ ๋ ์ฌ์ฉ, ๊ธฐ๋ณธ๊ฐ์ 0 โ๏ธ includes() ์ฌ์ฉ์์ str = "abcde"; str.includes("a"); // ๊ฒฐ๊ณผ๊ฐ : true str.includes("f"); // ๊ฒฐ๊ณผ๊ฐ : ..
[JavaScript] ์ต๋๊ฐ, ์ต์๊ฐ ๊ตฌํ๊ธฐ (Math.max / Math.min)
โ๏ธ Math.max(), Math.min() ์์ฝ Math.min([์ซ์์งํฉ]); // ๊ฐ์ฅ ์์ ๊ฐ ๋ฐํ Math.max([์ซ์์งํฉ]); // ๊ฐ์ฅ ํฐ ๊ฐ ๋ฐํ Math.min()์ ์ซ์ ์งํฉ ์ค ๊ฐ์ฅ ์์ ์๋ฅผ ๋ฐํ. Math.max()๋ ์ซ์ ์งํฉ ์ค ๊ฐ์ฅ ํฐ ์๋ฅผ ๋ฐํ. โ๏ธ Math.max(), Math.min() ์์ Math.min(0, 2, 1, 5); // 0 ๋ฐํ Math.max(0, 2, 1, 5); // 5 ๋ฐํ ๐ค ์ซ์ ์งํฉ์ด Array์ ๋ค์ด์๋ค๋ฉด ์ด๋ป๊ฒ ํด์ผํ ๊น? const nums = [0, 1, 2, 5]; const num1 = Math.min(...nums); const num2 = Math.max(...nums); ์คํ๋ ๋ ๋ฌธ๋ฒ์ ์ฌ์ฉํ์ฌ ์์๋ฅผ ๋ถ๋ฆฌํด์ค๋ค!