๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
  • ์žฅ์›์ต ๊ธฐ์ˆ ๋ธ”๋กœ๊ทธ

๐Ÿ“บ Front End71

[์ •์งํ•˜๊ฒŒ ๋ฐฐ์›Œ๋ณด๋Š” Next js] ํŽ˜์ด์ง€๋ฅผ ์—ฐ๊ฒฐํ•˜๊ธฐ ์œ„ํ•œ Link-Component๊ทธ๋ฆฌ๊ณ  Pre-Fetch ํ•ด๋‹น ๋ธ”๋กœ๊ทธ ์‹œ๋ฆฌ์ฆˆ๋Š” ์ •์งํ•˜๊ฒŒ ๋ฐฐ์›Œ๋ณด๋Š” Next js ์‹œ๋ฆฌ์ฆˆ๋กœ์จ ์ด 8๋ถ€์ž‘์œผ๋กœ ์ด๋ฃจ์–ด์ ธ ์žˆ์Šต๋‹ˆ๋‹ค. Next.js๊ณต์‹ ํ™ˆํŽ˜์ด์ง€์—์„œ ์ด์•ผ๊ธฐํ•˜๋Š” ๋‚ด์šฉ์„ ์ตœ๋Œ€ํ•œ ์ดํ•ดํ•˜๊ธฐ ์‰ฝ๊ณ  ์ง๊ด€์ ์ด๊ฒŒ ๊ตฌ์„ฑํ•˜์˜€์Šต๋‹ˆ๋‹ค. 0. ๋ชฉ์ฐจ 1. create-next-app์œผ๋กœ next ๊ฐœ๋ฐœ ํ™˜๊ฒฝ ์„ธํŒ…ํ•˜๊ธฐ 2. create-next-app์—์„œ ๋งŒ๋‚œ ์ฒซ ๋ฒˆ์งธ ํ•ต์‹ฌ pages. ๊ทธ๋ฆฌ๊ณ  ๋™์  ๋ผ์šฐํŒ… 3. ํŽ˜์ด์ง€๋ฅผ ์—ฐ๊ฒฐํ•˜๊ธฐ ์œ„ํ•œ Link-Component ๊ทธ๋ฆฌ๊ณ  Pre-Fetch Dynamic Routing๊ณผ Link๋ฅผ ์ด์šฉํ•ด ๊ฐ„๋‹จํ•œ ๊ฒŒ์‹œํŒ์„ ๋งŒ๋“ค์–ด๋ณด์ž. 4. Next.js์—์„œ head ํƒœ๊ทธ๋ฅผ ์กฐ์ž‘ํ•˜๋Š” ๋ฉ‹์ง„ ๋ฐฉ๋ฒ• ๋ฒˆ์™ธ & ์‹ค์Šต) ์ด๋ฏธ์ง€์™€ ๋™์˜์ƒ์„ ์ €์žฅํ•˜๊ณ  ์‚ฌ์šฉํ•ด๋ณด์ž. 5. ์›น์˜ ๋ฐœ์ „ ๊ณผ์ •์œผ๋กœ ๋ณด๋Š” SSG์™€ SSR 6. next์˜ ๋‘ ๋ฒˆ์งธ ํ•ต์‹ฌ P.. 2020. 12. 29.
[์ •์งํ•˜๊ฒŒ ๋ฐฐ์›Œ๋ณด๋Š” Next js] create-next-app์—์„œ ๋งŒ๋‚œ ์ฒซ ๋ฒˆ์งธ ํ•ต์‹ฌ pages. ๊ทธ๋ฆฌ๊ณ  ๋™์  ๋ผ์šฐํŒ… ํ•ด๋‹น ๋ธ”๋กœ๊ทธ ์‹œ๋ฆฌ์ฆˆ๋Š” ์ •์งํ•˜๊ฒŒ ๋ฐฐ์›Œ๋ณด๋Š” Next js ์‹œ๋ฆฌ์ฆˆ๋กœ์จ ์ด 10๋ถ€์ž‘์œผ๋กœ ์ด๋ฃจ์–ด์ ธ ์žˆ์Šต๋‹ˆ๋‹ค. Next.js๊ณต์‹ ํ™ˆํŽ˜์ด์ง€์—์„œ ์ด์•ผ๊ธฐํ•˜๋Š” ๋‚ด์šฉ์„ ์ตœ๋Œ€ํ•œ ์ดํ•ดํ•˜๊ธฐ ์‰ฝ๊ณ  ์ง๊ด€์ ์ด๊ฒŒ ๊ตฌ์„ฑํ•˜์˜€์Šต๋‹ˆ๋‹ค. 0. ๋ชฉ์ฐจ 1. create-next-app์œผ๋กœ next ๊ฐœ๋ฐœ ํ™˜๊ฒฝ ์„ธํŒ…ํ•˜๊ธฐ 2. create-next-app์—์„œ ๋งŒ๋‚œ ์ฒซ ๋ฒˆ์งธ ํ•ต์‹ฌ pages. ๊ทธ๋ฆฌ๊ณ  ๋™์  ๋ผ์šฐํŒ… 3. ํŽ˜์ด์ง€๋ฅผ ์—ฐ๊ฒฐํ•˜๊ธฐ ์œ„ํ•œ Link-Component ๊ทธ๋ฆฌ๊ณ  Pre-Fetch Dynamic Routing๊ณผ Link๋ฅผ ์ด์šฉํ•ด ๊ฐ„๋‹จํ•œ ๊ฒŒ์‹œํŒ์„ ๋งŒ๋“ค์–ด๋ณด์ž. 4. Next.js์—์„œ head ํƒœ๊ทธ๋ฅผ ์กฐ์ž‘ํ•˜๋Š” ๋ฉ‹์ง„ ๋ฐฉ๋ฒ• ๋ฒˆ์™ธ & ์‹ค์Šต) ์ด๋ฏธ์ง€์™€ ๋™์˜์ƒ์„ ์ €์žฅํ•˜๊ณ  ์‚ฌ์šฉํ•ด๋ณด์ž. 5. ์›น์˜ ๋ฐœ์ „ ๊ณผ์ •์œผ๋กœ ๋ณด๋Š” SSG์™€ SSR 6. next์˜ ๋‘ ๋ฒˆ์งธ ํ•ต์‹ฌ .. 2020. 12. 29.
[์ •์งํ•˜๊ฒŒ ๋ฐฐ์›Œ๋ณด๋Š” Next js] create-next-app์œผ๋กœ Next ๊ฐœ๋ฐœ ํ™˜๊ฒฝ ์„ธํŒ…ํ•˜๊ณ  next js์— ๋Œ€ํ•ด์„œ ์•Œ์•„๋ณด์ž. ํ•ด๋‹น ๋ธ”๋กœ๊ทธ ์‹œ๋ฆฌ์ฆˆ๋Š” ์ •์งํ•˜๊ฒŒ ๋ฐฐ์›Œ๋ณด๋Š” Next js ์‹œ๋ฆฌ์ฆˆ๋กœ์จ ์ด 10๋ถ€์ž‘์œผ๋กœ ์ด๋ฃจ์–ด์ ธ ์žˆ์Šต๋‹ˆ๋‹ค. Next.js๊ณต์‹ ํ™ˆํŽ˜์ด์ง€์—์„œ ์ด์•ผ๊ธฐํ•˜๋Š” ๋‚ด์šฉ์„ ์ตœ๋Œ€ํ•œ ์ดํ•ดํ•˜๊ธฐ ์‰ฝ๊ณ  ์ง๊ด€์ ์ด๊ฒŒ ๊ตฌ์„ฑํ•˜์˜€์Šต๋‹ˆ๋‹ค. 0. ๋ชฉ์ฐจ 1. create-next-app์œผ๋กœ next ๊ฐœ๋ฐœ ํ™˜๊ฒฝ ์„ธํŒ…ํ•˜๊ธฐ 2. create-next-app์—์„œ ๋งŒ๋‚œ ์ฒซ ๋ฒˆ์งธ ํ•ต์‹ฌ pages. ๊ทธ๋ฆฌ๊ณ  ๋™์  ๋ผ์šฐํŒ… 3. ํŽ˜์ด์ง€๋ฅผ ์—ฐ๊ฒฐํ•˜๊ธฐ ์œ„ํ•œ Link-Component ๊ทธ๋ฆฌ๊ณ  Pre-Fetch Dynamic Routing๊ณผ Link๋ฅผ ์ด์šฉํ•ด ๊ฐ„๋‹จํ•œ ๊ฒŒ์‹œํŒ์„ ๋งŒ๋“ค์–ด๋ณด์ž. 4. Next.js์—์„œ head ํƒœ๊ทธ๋ฅผ ์กฐ์ž‘ํ•˜๋Š” ๋ฉ‹์ง„ ๋ฐฉ๋ฒ• ๋ฒˆ์™ธ & ์‹ค์Šต) ์ด๋ฏธ์ง€์™€ ๋™์˜์ƒ์„ ์ €์žฅํ•˜๊ณ  ์‚ฌ์šฉํ•ด๋ณด์ž. 5. ์›น์˜ ๋ฐœ์ „ ๊ณผ์ •์œผ๋กœ ๋ณด๋Š” SSG์™€ SSR 6. next์˜ ๋‘ ๋ฒˆ์งธ ํ•ต์‹ฌ .. 2020. 12. 28.
[Redux] ๋ฆฌ๋•์Šค๋ฅผ ๊ตฌ์„ฑํ•˜๋Š” 5๊ฐœ์˜ ํ•ต์‹ฌ Action, Reducer, Store, Dispatch, Subscribe ์˜ค๋Š˜์€ ๋ฆฌ๋•์Šค์˜ ํ•ต์‹ฌ ๋ฉค๋ฒ„์ธ 5ํ˜•์ œ๋ฅผ ์•Œ์•„๋ณด์ž. Action Reducer Store Dispatch Subscribe ์–˜๋“ค์„ ์•Œ์•„๋ณผ ๊ฒƒ์ธ๋ฐ ์ผ๋‹จ ์˜ค๋Š˜ ๊ฐ€์žฅ ์ค‘์š”ํ•œ ๊ฒƒ์€ ํ๋ฆ„์„ ์•Œ์•„์•ผํ•œ๋‹ค. ๋‹ค๋ฅธ ์˜ˆ์ œ๋“ค๊ณผ ๋‹ค๋ฅด๊ฒŒ ์ด๋ฒˆ ๊ธ€์— ๋‚˜์˜ค๋Š” ์†Œ์Šค์ฝ”๋“œ๋Š” ๋ณธ์ธ์ด ์ง์ ‘ ํƒ€์ดํ•‘ ํ•˜๋Š” ๊ฒƒ์„ ๊ถŒ์žฅํ•˜์ง€ ์•Š๋Š”๋‹ค. ๊ทธ๋ƒฅ ํ๋ฆ„๋งŒ ์ดํ•ดํ•˜๋Š”๋ฐ ์˜จ ํž˜์„ ์Ÿ์„๊ฒƒ์„ ์ถ”์ฒœํ•œ๋‹ค. Redux ์šฐ๋ฆฌ๋Š” ์ง€๋‚œ ์‹œ๊ฐ„ ์™œ ๋ฆฌ๋•์Šค๋ฅผ ์•Œ์•„์•ผํ•˜๋Š”์ง€์™€ ๋ฆฌ๋•์Šค๋Š” ์–ด๋–ค ํŠน์ง•์„ ๊ฐ–๊ณ  ์žˆ๋Š”์ง€ ์•Œ์•„๋ณด์•˜๋‹ค. ์˜ค๋Š˜ ์‹œ๊ฐ„์—๋Š” ๋ฆฌ๋•์Šค๋ฅผ ๊ตฌ์„ฑํ•ด๋Š” ํ•ต์‹ฌ 5ํ˜•์ œ์— ๋Œ€ํ•ด์„œ ์•Œ์•„๋ณผ ๊ฒƒ์ด๋‹ค. Action Reducer Store Dispatch Subscribe ์–˜๋“ค์ด ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๊ตฌ์กฐ๋ฅผ ๋„๊ฒŒ ๋œ๋‹ค. ์ด ๊ทธ๋ฆผ์„ ์ž˜ ๋ณด๊ณ  ํ•˜๋‚˜ ํ•˜๋‚˜ ๋”ฐ๋ผ๊ฐ€๋ณด์ž. ์šฐ์„  ์‹œ์ž‘ํ•˜๊ธฐ ์ „์— ๋ฆฌ๋•์Šค๋ฅผ ํŒจํ‚ค์ง€๋กœ ์„ค์น˜๋ฅผ ํ•ด.. 2020. 12. 1.
[Redux] ๋ฆฌ๋•์Šค๋ฅผ ๋ฐฐ์šฐ๊ธฐ ์ „์— ๋ฆฌ๋•์Šค์˜ ํ•„์š”์„ฑ์— ๋Œ€ํ•ด์„œ ์•Œ์•„๋ณด์ž. ์—ฌ๊ธฐ ๋ฆฌ๋•์Šค๋ฅผ ์™œ ์จ์•ผํ•˜๋Š”์ง€ ์•„์ฃผ ์œ ๋ช…ํ•œ ๊ทธ๋ฆผ์ด ์žˆ๋‹ค. ๋ฆฌ๋•์Šค๋Š” Application์˜ ์ƒํƒœ๋ฅผ Globalํ•˜๊ฒŒ ๊ด€๋ฆฌํ•ด์ค€๋‹ค๋Š” State Management Lib์ด๋‹ค. ๋‚˜๋„ ๊ทธ๋ ‡์ง€๋งŒ ๋ณดํ†ต ์‚ฌ๋žŒ๋“ค์ด ๋ฆฌ๋•์Šค๋ฅผ ์ฒ˜์Œ์œผ๋กœ ๋งˆ์ฃผํ•˜๊ฒŒ๋  ๋•Œ๋Š” ์–ด๋–ค ํ•œ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋‚˜ ํ”„๋ ˆ์ž„์›Œํฌ์—์„œ ๋ฌธ์ œ์ ์„ ๋ฐœ๊ฒฌํ•˜๊ณ  ๊ทธ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•œ ๋ฐฉ๋ฒ•์„ ๋ชจ์ƒ‰ํ•˜๋‹ค ๋งŒ๋‚˜๊ฒŒ ๋œ๋‹ค. ๊ทธ ๋ฌธ์ œ๋ผ๊ณ  ํ•˜๋ฉด ๋ฐ”๋กœ Local State Local State local state๋Š” ์ด๋ฆ„์—์„œ๋„ ์•Œ ์ˆ˜ ์žˆ๋“ฏ Global State์™€ ๋ฐ˜๋Œ€๋˜๋Š” ๋ง์ด๋‹ค. ์œ„์˜ ๊ทธ๋ฆผ์—์„œ Without Redux์— ํ™”์‚ดํ‘œ๋กœ ์›€์ง์ด๋Š”๊ฒŒ state์ด๊ณ , ์ด state๋“ค์ด ์•ž๋’ค๋กœ ํ•œ ์นธ์”ฉ๋งŒ ์›€์ง์ผ ์ˆ˜ ์žˆ๋‹ค๋Š” ๊ฒƒ์„ ์•Œ ์ˆ˜ ์žˆ๋‹ค. ์ด๊ฒŒ ๋ฐ”๋กœ Local State์ด๋‹ค. ์ •ํ™•ํžˆ๋Š” ์ด๊ฒŒ Local Sta.. 2020. 12. 1.
[React-Spring ์• ๋‹ˆ๋ฉ”์ด์…˜] ๋ฆฌ์•กํŠธ ์Šคํ”„๋ง์œผ๋กœ 3D ์นด๋“œ ๋งŒ๋“ค๊ธฐ ์˜ค๋Š˜ ํ•ด๋ณผ ๊ฒƒ์€ ์œ„์™€ ๊ฐ™์ด ์›€์ง์ด๋Š” ์นด๋“œ ๋ทฐ๋ฅผ ๋งŒ๋“ค์–ด๋ณผ ๊ฒƒ์ด๋‹ค. Index.js import React from 'react' import ReactDOM from 'react-dom' import { useSpring, animated } from 'react-spring' import './styles.css' const calc = (x, y) => [-(y - window.innerHeight / 2) / 20, (x - window.innerWidth / 2) / 20, 1.1] const trans = (x, y, s) => `perspective(600px) rotateX(${x}deg) rotateY(${y}deg) scale(${s})` function Card() { const [pro.. 2020. 11. 4.