์ „์ฒด ๊ธ€

์ „์ฒด ๊ธ€

    [JavaScript] ์‹คํ–‰ ์ปจํ…์ŠคํŠธ(execution context)

    ๋“ค์–ด๊ฐ€๊ธฐ ์ „์‹คํ–‰ ์ปจํ…์ŠคํŠธ๋Š” ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ์˜ ๋™์ž‘ ์›๋ฆฌ๋ฅผ ๋‹ด๊ณ  ์žˆ๋Š” ํ•ต์‹ฌ ์›๋ฆฌ์ด๋‹ค.๋”ฐ๋ผ์„œ ์‹คํ–‰์ปจํ…์ŠคํŠธ๋Š” ์•„๋ž˜ ๊ฐœ๋…๋“ค์˜ ๋™์ž‘์›๋ฆฌ๋ฅผ ๋‹ด๊ณ ์žˆ๋‹ค.- ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๊ฐ€ ์Šค์ฝ”ํ”„๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ์‹๋ณ„์ž์™€ ์‹๋ณ„์ž์— ๋ฐ”์ธ๋”ฉ๋œ ๊ฐ’์„ ๊ด€๋ฆฌํ•˜๋Š” ๋ฐฉ์‹- ํ˜ธ์ด์ŠคํŒ…์ด ๋ฐœ์ƒํ•˜๋Š” ์ด์œ - ํด๋กœ์ €์˜ ๋™์ž‘ ๋ฐฉ์‹- ํƒœ์Šคํ ํ์™€ ํ•จ๊ป˜ ๋™์ž‘ํ•˜๋Š” ์ด๋ฒคํŠธ ํ•ธ๋“ค๋Ÿฌ์™€ ๋น„๋™๊ธฐ ์ฒ˜๋ฆฌ์˜ ๋™์ž‘ ๋ฐฉ์‹์‹คํ–‰ ์ปจํ…์ŠคํŠธ๋ž€?์‹คํ–‰ ์ปจํ…์ŠคํŠธ๋Š” ์†Œ์Šค์ฝ”๋“œ๋ฅผ ์‹คํ–‰ํ•˜๋Š” ๋ฐ ํ•„์š”ํ•œ ํ™˜๊ฒฝ ์ •๋ณด๋ฅผ ๋ชจ์•„๋†“์€ ๊ฐ์ฒด์ด๋‹ค.  ์ฆ‰, ์‹คํ–‰ ์ปจํ…์ŠคํŠธ๋Š” ๋ณ€์ˆ˜, ํ•จ์ˆ˜, ํด๋ž˜์Šค ๋“ฑ์˜ ์ด๋ฆ„์ธ ์‹๋ณ„์ž๋ฅผ ๋“ฑ๋กํ•˜๊ณ  ๊ด€๋ฆฌํ•˜๋Š” ์Šค์ฝ”ํ”„๋ผ๋Š” ํ™˜๊ฒฝ ์ •๋ณด๋ฅผ ๊ตฌ์„ฑํ•˜๊ณ , ์ปจํ…์ŠคํŠธ๋ฅผ ์ฝœ ์Šคํƒ์— ์Œ“์•„์˜ฌ๋ ค ๊ฐ€์žฅ ์œ„์— ์žˆ๋Š” ์ปจํ…์ŠคํŠธ๋ฅผ ์‹คํ–‰ํ•˜์—ฌ ์ฝ”๋“œ์˜ ์‹คํ–‰์ˆœ์„œ๋ฅผ ๋ณด์žฅํ•œ๋‹ค.์‹คํ–‰ ์ปจํ…์ŠคํŠธ๊ฐ€ ์ƒ์„ฑ๋˜๋Š” ์‹œ์ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ์—”์ง„์ด ์Šคํฌ๋ฆฝํŠธ๋ฅผ ์ฒ˜์Œ ์‹คํ–‰ํ•  ๋•Œ..

    Express.js CORS ์˜ค๋ฅ˜ ํ•ด๊ฒฐ

    ๐Ÿ‘‡๐Ÿป ํ•ด๊ฒฐ๋ฒ•์€ ๋งจ์•„๋ž˜์—ํ’€์Šคํƒ๊ตฌํ˜„์ค‘, ํ”„๋ก ํŠธ์—์„œ๋Š” axios ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋ฐฑ์—”๋“œ์™€ API ์—ฐ๋™์„ ์ง„ํ–‰ํ•˜๋ ค๊ณ  ํ•˜์˜€๋‹ค. ์ฝ”๋“œ์˜ ์œ ์ง€๋ณด์ˆ˜์™€ ์žฌ์‚ฌ์šฉ์„ฑ์„ ์œ„ํ•ด http ํด๋ผ์ด์–ธํŠธ๋ฅผ ๋”ฐ๋กœ ๊ตฌ์„ฑํ•˜๋Š” ์ฝ”๋“œ๋ฅผ ๋งŒ๋“ค์—ˆ๊ณ , exportํ•˜์—ฌ axios๋ฅผ ๋” ๋ณด๊ธฐ ์‰ฝ๊ฒŒ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•˜์˜€๋‹ค. // http.tsimport axios, { AxiosRequestConfig } from "axios";const BASE_URL = "http://localhost:3000";const DEFAULT_TIMEOUT = 30000;export const createClient = (config?: AxiosRequestConfig) => { const axiosInstance = axios.create({ baseU..

    vscode snippet ๋งŒ๋“ค๊ธฐ

    console.log๋กœ ๋กœ๊ทธ๋ฅผ ์ฐ๋Š”๋‹ค๊ฑฐ๋‚˜ ์ปดํฌ๋„ŒํŠธ๋ฅผ ๋งŒ๋“ค๋•Œ ํ•จ์ˆ˜ํ˜• ์ปดํฌ๋„ŒํŠธ๋ฅผ ๋งŒ๋“ค ๋•Œ์˜ ๊ตฌ์กฐ๋ฅผ ๋งŒ๋“ค๋•Œ๋ผ๋˜์ง€ ๊ธฐ๋ณธ์ ์œผ๋กœ ๋งŒ๋“ค์–ด์•ผํ•˜๋Š” ๋ผˆ๋Œ€๋ฅผ ์ž‘์„ฑํ•˜๋Š” ๋ถ€๋ถ„์„ ์ด์ œ๋Š” ์™„์ „ํžˆ ์ตํ˜€์ ธ์„œ snippet์„ ์‚ฌ์šฉํ•˜์—ฌ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ์—ˆ๋‹ค.๐Ÿ‘‰๐Ÿป ๊ฒฐ๋ก ์ ์œผ๋กœ ๋ฆฌ์•กํŠธ๋ฅผ ์‚ฌ์šฉ์ž ์ค‘, ํ•จ์ˆ˜ ํ‘œํ˜„์‹ ๋“ฑ ์„ค์ • ์—†์ด ์Šค๋‹ˆํŽซ์„ ์‚ฌ์šฉํ•˜๊ธฐ ์›ํ•œ๋‹ค๋ฉด ์•„๋ž˜ extension(ES7+ React/Redux/React-Native snippets)์„ ๋‹ค์šด๋ฐ›์•„ ์‚ฌ์šฉํ•˜์‹œ๊ธธ ๊ถŒ์žฅํ•œ๋‹ค.ES7+ React/Redux/React-Native snippetsrafce๋ผ๋Š” ์Šค๋‹ˆํŽซ์€ ํ•จ์ˆ˜ ํ‘œํ˜„์‹์„ ๋น ๋ฅด๊ฒŒ ์ƒ์„ฑํ•ด์ฃผ์–ด ์ฝ”๋“œ์ƒ์‚ฐ์„ฑ์ด ๋น ๋ฅด๊ฒŒ ์ฆ๊ฐ€ํ•œ๋‹ค.๐Ÿ‘‰๐Ÿป ๋งŒ์•ฝ ๋‹ค๋ฅธ ์Šค๋‹ˆํŽซ์„ ์„ค์ •ํ•˜๊ณ  ์‹ถ๊ฑฐ๋‚˜, ์Šค๋‹ˆํŽซ ๋‹จ์ถ•ํ‚ค๋ฅผ ๋ฐ”๊พธ๊ณ  ์‹ถ๋‹ค๋ฉด ๋” ์•„๋ž˜์— ์„ค์ •๋ฐฉ๋ฒ•์„ ์ž‘์„ฑํ•ด๋†จ๋‹ค.Snippet..

    zsh: command not found: nvm ํ•ด๊ฒฐ

    ๋”๋ณด๊ธฐvite๋กœ ๋ฆฌ์•กํŠธ ์•ฑ์„ ์ƒ์„ฑํ•˜๊ณ  npm install์„ ํ•˜๋‹ค๊ฐ€ ์•„๋ž˜์™€ ๊ฐ™์€ ์˜ค๋ฅ˜๋ฅผ ๋ณด๊ฒŒ ๋˜์—ˆ๊ณ , ํ•ด๋‹น ์˜ค๋ฅ˜๋Š” ๋…ธ๋“œ ๋ฒ„์ „์ด ์ƒ์ดํ•˜๋‹ค๋Š” ๊ฒƒ์ด์—ˆ๊ธฐ ๋•Œ๋ฌธ์— nvm์„ ํ†ตํ•ด ๋ฒ„์ „ ๊ด€๋ฆฌ๋ฅผ ํ•˜๋ ค๊ณ  ํ–ˆ๋‹ค.๋…ธ๋“œ ๋ฒ„์ „ ๊ด€๋ฆฌ๋ฅผ ์œ„ํ•ด ์•„๋ž˜ ๋ช…๋ น์–ด๋ฅผ ์‹คํ–‰ํ–ˆ๋Š”๋ฐ ์ž‘๋™ํ•˜์ง€ ์•Š์•˜๋‹ค.$ nvm install 18.12.1zsh: command not found: nvm1. nvm ์„ค์น˜ ์—ฌ๋ถ€ ํ™•์ธ๋‚ด ๊ฒฝ์šฐ nvm์ด ์„ค์น˜๊ฐ€ ์•ˆ๋˜์–ด์žˆ๋Š” ๊ฒฝ์šฐ์˜€๋‹ค. ๊ทธ๋ž˜์„œ ์•„๋ž˜์™€ ๊ฐ™์ด nvm์„ ์„ค์น˜ํ•ด์ฃผ์—ˆ๋‹ค.nvm -v // 0.39.7 ๋ฒ„์ „์ด ๋œจ์ง€ ์•Š๋Š”๋‹ค๋ฉด ํ„ฐ๋ฏธ๋„์—์„œ Homebrew๋กœ ์„ค์น˜ํ•ด์ค€๋‹ค.brew updatebrew install nvmmkdir ~/.nvm ์„ค์น˜ํ›„ ์•„๋ž˜ 2๋ฒˆ ์ง„ํ–‰2. zshrc ์„ค์ •nvm์ด ์กด์žฌํ•œ๋‹ค๋ฉด ํ™˜๊ฒฝ๋ณ€์ˆ˜ ์„ค์ •์ด ์ œ๋Œ€๋กœ ๋˜์–ด ์žˆ..

    [ํšŒ๊ณ ] ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค ํ’€์Šคํƒ ๋ฐ๋ธŒ์ฝ”์Šค ๋‹จ์œ„ 2์ฐจ

    ํšŒ๊ณ ๊ฐ€ ๋งŽ์ด ๋Šฆ์—ˆ๋„ค์š”.. ์Šคํ”„๋ฆฐํŠธ 2์ฐจ๊ฐ€ 6์›”7์ผ์— ๋๋‚ฌ์Šต๋‹ˆ๋‹ค. ์ง€๊ธˆ๊นŒ์ง€ ๋ฐ๋ธŒ์ฝ”์Šค๋ฅผ ํ•˜๋ฉด์„œ ์ œ๊ณตํ•˜๋Š” ๊ฐ•์˜ ์™ธ ์–ด๋–ค ํ™œ๋™๋“ค์„ ํ–ˆ๋Š”์ง€ ์œ„์ฃผ๋กœ ๋‚จ๊ฒจ๋†“์œผ๋ ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค! ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค ๋ฐ๋ธŒ์ฝ”์Šค ๊ณ ๋ฏผ์ค‘์ด์‹  ๋ถ„๋“ค๊ป˜ ๋„์›€์ด ๋์œผ๋ฉด ์ข‹๊ฒ ์Šต๋‹ˆ๋‹ค.๋งค์ฃผ ์œ ์ตํ•˜์ง€ ์•Š์€ ์ ์ด ์—†๋Š” ๋ฆฌ์•กํŠธ ์Šคํ„ฐ๋””4์›”๋ง๋ถ€ํ„ฐ ํ˜„์žฌ๊นŒ์ง€ ๋ฆฌ์•กํŠธ ์Šคํ„ฐ๋””๋ฅผ ์ง„ํ–‰ํ•˜๊ณ ์žˆ๋Š” ์ค‘์ž…๋‹ˆ๋‹ค. ์ฐธ์—ฌ๋ฅผ ํฌ๋งํ•˜๋Š” 9๋ช…์ด ๋ชจ์—ฌ ๋ชจ๋˜ ๋ฆฌ์•กํŠธ ๋”ฅ๋‹ค์ด๋ธŒ ์ฑ…์„ ์ฝ๊ณ  ๋ฉด์ ‘์งˆ๋ฌธ์„ ๋งŒ๋“ค์–ด์„œ ์งˆ๋ฌธํ•˜๊ณ  ๋‹ตํ•˜๋Š” ํ˜•ํƒœ๋กœ ์Šคํ„ฐ๋””๊ฐ€ ์ด๋ค„์กŒ์Šต๋‹ˆ๋‹ค. ๋ฆฌ์•กํŠธ ๋”ฅ๋‹ค์ด๋ธŒ ์ฑ…์ด ๋‚œ์ด๋„๊ฐ€ ์žˆ๋‹ค๋ณด๋‹ˆ ๊ฐœ๋ฐœํ•˜๋ฉด์„œ ์ƒ๊ฐํ•ด๋ณด์ง€ ๋ชปํ–ˆ๋˜ ๊นŠ์€ ๋‚ด์šฉ๊นŒ์ง€ ๊ณต๋ถ€ํ•  ์ˆ˜ ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค. ๋˜ํ•œ ๋ฉด์ ‘ ์งˆ๋ฌธ ํ˜•์‹์„ ํ†ตํ•ด ๋‹ต์„ ํ•  ์ˆ˜ ์žˆ๋„๋ก ๊ณต๋ถ€ํ•œ ๋‚ด์šฉ์„ ๊ธฐ์–ตํ•˜๋ ค๊ณ  ํ–ˆ์—ˆ๋Š”๋ฐ ๊ต‰์žฅํžˆ ์œ ์šฉํ–ˆ์Šต๋‹ˆ๋‹ค. ์ƒˆ๋กœ์šด ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์— ๋Œ€ํ•ด ์•Œ๊ฒŒ๋˜๊ณ , ๋ฆฌ์•กํŠธ์˜ ๋ฒ„์ „์—..

    [JavaScript] ๋ณ€์ˆ˜์˜ ์žฌํ• ๋‹น ๊ณผ์ •

    ๋ณ€์ˆ˜์—๋Š” ๋ฉ”๋ชจ๋ฆฌ์˜ ์ฃผ์†Œ๊ฐ€ ์ €์žฅ๋˜์–ด ์žˆ๋‹ค. ๊ทธ๋Ÿฌ๋‹ˆ๊นŒ, ํŠน์ • ๊ฐ’์ด ์ €์žฅ๋˜์–ด ์žˆ๋Š” ๊ฒƒ์ด ์•„๋‹Œ, ํŠน์ •๊ฐ’์ด ์ €์žฅ๋˜์–ด ์žˆ๋Š” ๋ฉ”๋ชจ๋ฆฌ์˜ ์ฃผ์†Œ๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ๋Š” ๊ฒƒ์ด๋‹ค. ๋ณ€์ˆ˜์— ๊ฐ’์ด ์žฌํ• ๋‹น๋ ๋•Œ ํ•ด๋‹น ๊ฐ’์ด ์Šคํƒ์— ์กด์žฌํ•˜๋ฉด ๊ทธ ์Šคํƒ ์ฃผ์†Œ๋กœ ํ• ๋‹น๋œ๋‹ค๋Š” ๋‚ด์šฉ์„ ๋ณธ ๊ฒƒ ๊ฐ™์€๋ฐ, ๊ฐ’์ด ๊ฐ™๋”๋ผ๋„ ๋‹ค๋ฅธ ๋ฉ”๋ชจ๋ฆฌ ์ฃผ์†Œ์— ๊ฐ’์ด ์ €์žฅ๋˜๋Š” ์ค„ ์•Œ์•˜๋Š”๋ฐ ๊ทธ๊ฒŒ ์•„๋‹ˆ์–ด์„œ ์ข€ ๋” ์ •ํ™•ํ•˜๊ฒŒ ๊ณต๋ถ€ํ•ด์„œ ์ •๋ฆฌํ•ด๋ณด๋ ค๊ณ  ํ•œ๋‹ค.๋ณ€์ˆ˜์˜ ์ข…๋ฅ˜์— ๋”ฐ๋ผ ์ €์žฅ๋˜๋Š” ์œ„์น˜๊ฐ€ ๋‹ค๋ฅด๋‹ค.๋ฉ”๋ชจ๋ฆฌ๋Š” 4๊ฐœ์˜ ์˜์—ญ์ด ์žˆ๊ณ , ์ „์—ญ๋ณ€์ˆ˜, ์ง€์—ญ๋ณ€์ˆ˜, ์ฝ”๋“œ, ๋™์ ํ•  ํ• ๋‹น์— ๋”ฐ๋ผ ์ €์žฅ๋˜๋Š” ์œ„์น˜๊ฐ€ ๋‹ค๋ฅด๋‹ค.์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ์—”์ง„์€ ํž™์˜์—ญ๊ณผ ์ฝœ์Šคํƒ์„ ์‚ฌ์šฉํ•œ๋‹ค.์ฝœ์Šคํƒ์›์‹œ ํƒ€์ž… ๋ฐ์ดํ„ฐ๊ฐ€ ์ €์žฅ๋œ๋‹ค.๋ณ€์ˆ˜์— ์ €์žฅ๋˜๋Š” ๊ฒƒ : ์ฝœ์Šคํƒ์˜ ์ฃผ์†Œ ๋ฉ”๋ชจ๋ฆฌ ํž™(heap ์˜์—ญ)์ฐธ์กฐ ํƒ€์ž… ๋ฐ์ดํ„ฐ๊ฐ€ ์ €์žฅ๋œ๋‹ค. (๋ฐฐ์—ด, ๊ฐ์ฒด, ํ•จ์ˆ˜ ๋“ฑ)..

    [React] sitemap์œผ๋กœ SEO ์ž‘์—…ํ•˜๊ธฐ

    ํŒŒ๋“œ ๋™์•„๋ฆฌ์›๋“ค์˜ ์—ฌ๋Ÿฌ๊ฐ€์ง€ ์„ฑ๊ณผ๊ฐ€ ์ƒ๊ธฐ๋ฉด์„œ ์„ฑ๊ณผํŽ˜์ด์ง€๋ฅผ ์ถ”๊ฐ€๋กœ ๋งŒ๋“ค๊ฒŒ ๋˜์—ˆ๋‹ค. ์ƒˆ๋กœ์šด ๊ธฐ์ˆ˜๋ฅผ ๋ฝ‘๊ธฐ ์œ„ํ•œ ํ™๋ณด ๊ณผ์ •์—์„œ ์„ฑ๊ณผ๊ฐ€ ์œ ์šฉํ•˜๊ฒŒ ์ž‘์šฉํ•ด์•ผํ–ˆ๊ธฐ์— SEO๊ฐ€ ๋ถˆ๊ฐ€ํ”ผํ–ˆ๋‹ค. SEO์— ๋Œ€ํ•œ ๊ฒฝํ—˜์ด ์—†์–ด์„œ ์ข‹์€ ๊ธฐํšŒ๋ผ๊ณ  ์ƒ๊ฐํ–ˆ๊ณ , ๊ฐœ๋ฐœ๋กœ ๋๋‚˜๋Š” ๊ฒƒ์ด ์•„๋‹Œ ๊ธฐ๋ก์œผ๋กœ ๋‚จ๊ธฐ๋ฉฐ ๊ณต๋ถ€๋ฅผ ํ•ด๋ณด๋ ค๊ณ  ํ•œ๋‹ค.1. ๊ฒ€์ƒ‰์—”์ง„ ๊ฒฐ๊ณผ ํŽ˜์ด์ง€(SERP)๊ฒ€์ƒ‰์—”์ง„์€ SERP๋ฅผ ๋งŒ๋“ค๊ธฐ ์œ„ํ•ด ์•„๋ž˜์™€ ๊ฐ™์€ ๊ณผ์ •์„ ๊ฑฐ์นœ๋‹ค.ํฌ๋กค๋ง : ๊ตฌ๊ธ€๋ด‡(์›น ํฌ๋กค๋Ÿฌ)์ด ์›นํŽ˜์ด์ง€์˜ ์ฝ˜ํ…์ธ ๋ฅผ ๋ณต์‚ฌํ•ด์„œ ๋ชจ๋“  ์ •๋ณด๋ฅผ ์ˆ˜์ง‘ํ•œ ์ •๋ณด๋ฅผ ๊ฒ€์ƒ‰์—”์ง„์œผ๋กœ ๊ฐ€์ ธ์˜จ๋‹ค. ์ธ๋ฑ์‹ฑ : ๊ตฌ๊ธ€๋ด‡์ด ๊ฐ€์ ธ์˜จ ์ •๋ณด๋ฅผ ์ฃผ์ œ๋ณ„๋กœ ์ƒ‰์ธํ•ด์„œ ๋ฐ์ดํ„ฐ๋ฅผ ๋ณด๊ด€ํ•œ๋‹ค.๋žญํ‚น : ์ƒ‰์ธ๋œ ์ฝ˜ํ…์ธ ๋ฅผ ๊ฒ€์ƒ‰ ์˜๋„์— ๋งž์ถฐ์„œ ์ˆœ์œ„๋ฅผ ๋ถ€์—ฌํ•œ ๋‹ค์Œ ์‚ฌ์šฉ์ž๊ฐ€ ํ•ด๋‹น ํ‚ค์›Œ๋“œ๋กœ ๊ฒ€์ƒ‰ํ–ˆ์„ ๋•Œ ๋žญํ‚น ์ˆœ์„œ๋Œ€๋กœ ๊ฒฐ๊ณผ๋ฅผ ์ œ๊ณตํ•œ๋‹ค.2. ์‚ฌ์ดํŠธ๋งตSER..

    api.channel.io API ๊ฐ€์ ธ์˜ค๊ธฐ ์—๋Ÿฌ ํ•ด๊ฒฐ - plugin key

    ์ž˜๋งŒ ๋˜๋˜ ๋™์•„๋ฆฌ ์›น์‚ฌ์ดํŠธ๊ฐ€ ๊ฐ‘์ž๊ธฐ POST ํ˜ธ์ถœ ์ค‘์— ์•„๋ž˜์™€ ๊ฐ™์€ 403 forbidden ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•˜๋ฉฐ ๋™์ž‘ํ•˜์ง€ ์•Š์•˜๋‹ค. {type: "constraintUrlError", status: 403, errors: [{message: "this url is constraint"}],…}errors : [{message: "this url is constraint"}]language : "ko"status : 403type : "constraintUrlError"constraintUrlError์— ๋Œ€ํ•ด์„œ ๊ฒ€์ƒ‰๋„ ํ•ด๋ดค์ง€๋งŒ ๋งˆ๋•…ํ•œ ๋‹ต์ด ๋‚˜์˜ค์ง€ ์•Š์•˜๋‹ค. ๊ทธ๋Ÿฐ๋ฐ ์—ญ์‹œ, ์˜ค๋ฅ˜๋ฅผ ์ž์„ธํžˆ ๋“ค์—ฌ๋‹ค ๋ด์•ผํ•œ๋‹ค. ์˜ค๋ฅ˜์— ์•„๋ž˜์™€ ๊ฐ™์€ ์ฃผ์†Œ๊ฐ€ ์žˆ์—ˆ๋‹ค. https://api.channel.io/front/v6/elastic/pl..

    [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๋ฅผ ์‚ฌ์šฉํ•˜๊ณ ..