An open API service indexing awesome lists of open source software.

https://github.com/clzzi/nextstudy

๐Ÿงจ Next JS์— ๋Œ€ํ•ด์„œ ๊ณต๋ถ€ํ•œ ์†Œ์Šค์ฝ”๋“œ ๋ฐ ๋‚ด์šฉ์„ ์˜ฌ๋ฆฌ๋Š” ๊ณณ
https://github.com/clzzi/nextstudy

nextjs recoil ts

Last synced: about 2 months ago
JSON representation

๐Ÿงจ Next JS์— ๋Œ€ํ•ด์„œ ๊ณต๋ถ€ํ•œ ์†Œ์Šค์ฝ”๋“œ ๋ฐ ๋‚ด์šฉ์„ ์˜ฌ๋ฆฌ๋Š” ๊ณณ

Awesome Lists containing this project

README

          

### ๐Ÿงจ Next JS์— ๋Œ€ํ•ด์„œ ๊ณต๋ถ€ํ•œ ์†Œ์Šค์ฝ”๋“œ ๋ฐ ๋‚ด์šฉ์„ ์˜ฌ๋ฆฌ๋Š” ๊ณณ

### NEXT JS์˜ ์žฅ์  ๋ฐ ๊ธฐ๋Šฅ
- **Hot Reloading** | ๊ฐœ๋ฐœ ์ค‘ ์ €์žฅ๋˜๋Š” ์ฝ”๋“œ๋Š” ์ž๋™์œผ๋กœ ๋ฐ˜์˜๋จ
- **Automatic Routing** | pagesํด๋” ์•ˆ์— ์žˆ๋Š” ํด๋” ๋ฐ ํŒŒ์ผ์€ ํ•ด๋‹น ์ด๋ฆ„์œผ๋กœ ๋ผ์šฐํŒ… ๋œ๋‹ค.
Ex) pages/postFolder/post1.tsx -> localhost:3000/postFolder/post1
- **Tags** | Next์—์„œ ์ œ๊ณตํ•ด์ฃผ๋Š” Image๋‚˜ Link ํƒœ๊ทธ๋“ฑ์„ ํ†ตํ•ด UX๋ฅผ ์ข‹๊ฒŒํ•  ์ˆ˜ ์žˆ๋‹ค.
- **Pre-Rendering** | Next์˜ ํ•ต์‹ฌ ๊ธฐ๋Šฅ, SSG ๋ฐ SSR๋ฅผ ํŒŒ์ผ ๋‹จ์œ„๋กœ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Œ.
- **SEO** | SSR ๋ฐ SSG๋ฅผ ์ง€์›ํ•จ์œผ๋กœ์จ SEO๋ฅผ ์ตœ์ ํ™” ํ•  ์ˆ˜ ์žˆ์Œ.
- **CNA** | CRA์ฒ˜๋Ÿผ Create-next-app์œผ๋กœ ๋น ๋ฅธ babel๋ฐ webpack์„ค์ •์„ ํ•  ์ˆ˜ ์žˆ์Œ.
- **Styling** | ๋‚ด์žฅ SASS/CSS ์ง€์›, CSS-in-JS lib ๋ชจ๋‘ ์ง€์›
- **๋ฐฐํฌ** | ๋ฐฐํฌํ•˜๊ธฐ๊ฐ€ ์‰ฌ์›€
- **CORS** | Data๋ฅผ ๊ฐ€์ ธ์˜ค๋Š”์ชฝ์—์„œ์˜ CORS๋ฌธ์ œ๋Š” SSR์„ ์‚ฌ์šฉํ•˜์—ฌ ํ•ด๊ฒฐํ•  ์ˆ˜ ์žˆ์Œ
- **TypeScript** | TypeScript๋ฅผ ์ž˜ ์ง€์›ํ•ด์คŒ, ์ ์šฉํ•˜๊ธฐ ์‰ฌ์›€
- **Code Spliting** | ์ผ๋ฐ˜์ ์ธ React ํŽ˜์ด์ง€ ์—์„œ๋Š” ์ดˆ๊ธฐ ๋ Œ๋”๋ง ๋•Œ ๋ชจ๋“  ์ปดํฌ๋„ŒํŠธ๋ฅผ ๋‚ด๋ ค๋ฐ›๊ฒŒ ๋จ, ๊ทธ๋ž˜์„œ ํ”„๋กœ์ ํŠธ์˜ ๊ทœ๋ชจ๊ฐ€ ์ปค์ง€๊ณ  ์šฉ๋Ÿ‰์ด ์ปค์ง€๋ฉด ์ดˆ๊ธฐ ๋กœ๋”ฉ์†๋„๊ฐ€ ์ง€์—ฐ๋  ์ˆ˜ ๋ฐ–์—์—†์Œ.
Next์—์„œ๋Š” ์ด๋Ÿฐ ๋ฌธ์ œ๋ฅผ ๊ฐœ์„ ํ•ด์„œ ํ•„์š”์— ๋”ฐ๋ผ ํŒŒ์ผ์„ ๋ถˆ๋Ÿฌ์˜ฌ ์ˆ˜ ์žˆ๊ฒŒ ์—ฌ๋Ÿฌ ๊ฐœ์˜ ํŒŒ์ผ์„ ๋ถ„๋ฆฌํ•˜๋Š” Code Spliting์„ ์ž๋™์œผ๋กœ ํ•ด์คŒ.

### NEXT JS์˜ ๋‹จ์ 
- **Learning Curve** | ์ƒ๋Œ€์ ์œผ๋กœ ๊ฐ•์˜ ๋ฐ ์ž๋ฃŒ๋“ค์ด ๋งŽ์€ React, ์ƒํƒœ๊ด€๋ฆฌ ๊ธฐ์ˆ ๋“ค์„ ๊ณต๋ถ€ํ•˜๊ณ ์˜จ ๋‚˜๋กœ์จ๋Š” ์˜์–ด๋กœ๋œ docs ๋ฐ ์ ์€ ์ž๋ฃŒ๋“ค์„ ๊ณต๋ถ€ํ•˜๊ณ  ์ตํžˆ๊ธฐ์—” ์ข€ ํž˜๋“ค์—ˆ๋‹ค.
- **Custom** | ์ด๊ฑด ์žฅ์ ์ด์ž ๋‹จ์ ์ž„, next.config.js, custom server๋“ฑ ์ปค์Šคํ…€ํ•  ๋ถ€๋ถ„์ด ์ƒ๊น€
- ๋‹ค๋ฅธ๊ฑด ๋”ฑํžˆ ์—†๋Š”๋“ฏ.

### ํŠน์ง•
- **getStaticProps** | ```Fetch data at build time, pre-render for Static Generation```๋ผ๊ณ  Docs์— ๋‚˜์™€์žˆ๋Š”๋ฐ ์„œ๋ฒ„์—์„œ ๊ฐ’์„ ๊ฐ€์ ธ์˜ฌ ๋•Œ ๋นŒ๋“œ์‹œ ๊ฐ’์ด ๊ณ ์ •๋˜๊ณ  ๋นŒ๋“œํ›„์—๋Š” ์„œ๋ฒ„์˜ ๊ฐ’์ด ๋ณ€๊ฒฝ๋˜์–ด๋„ ๋ฐ˜์˜๋˜์ง€ ์•Š์Œ,์ด๊ฒƒ์€ ์—ฌ๋Ÿฌ ์˜ต์…˜๋“ค๋กœ ํ•ด๊ฒฐํ•  ์ˆ˜ ์žˆ์Œ
(staticํ•œ data๋“ค์„ ์œ„ํ•œ data fetching์‹œ ์‚ฌ์šฉ๊ถŒ์žฅ), ์˜ต์…˜๋“ค ๋ฐ ์ž์„ธํ•œ ๋‚ด์šฉ์€ [์—ฌ๊ธฐ](https://nextjs.org/docs/basic-features/data-fetching#getstaticprops-static-generation) ์—์„œ ์•Œ์•„๋ณผ ์ˆ˜ ์žˆ์Œ
- **getServerSideProps** | ```Fetch data on each request. pre-render for Server-side Rendering```๋ผ๊ณ  Docs์— ๋‚˜์™€์žˆ๋Š”๋ฐ **getStaticProps**์™€๋Š” ๋‹ค๋ฅด๊ฒŒ ๋นŒ๋“œ์™€ ์ƒ๊ด€์—†์ด, ๋งค ์š”์ฒญ๋งˆ๋‹ค ๋ฐ์ดํ„ฐ๋ฅผ ์„œ๋ฒ„๋กœ๋ถ€ํ„ฐ ๊ฐ€์ ธ์˜ด.
(ssr์„ ์œ„ํ•œ data fetching์‹œ ์‚ฌ์šฉ๊ถŒ์žฅ) ์ž์„ธํ•œ ๋‚ด์šฉ์€ [์—ฌ๊ธฐ](https://nextjs.org/docs/basic-features/data-fetching#getserversideprops-server-side-rendering)์—์„œ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Œ
- ์ฆ‰ **getStaticProps** ์™€ **getServerSideProps**์˜ ์ฐจ์ด๋Š” ๋นŒ๋“œ์ดํ›„์— data๋ณ€๊ฒฝ์ด ๊ฐ€๋Šฅํ•œ์ง€์˜ ์—ฌ๋ถ€์ž„.
(์ด๊ฒƒ๋งˆ์ €๋„ **getStaticProps**์˜ ํŠน์ •์˜ต์…˜์œผ๋กœ ํ•ด๊ฒฐ๊ฐ€๋Šฅํ•˜๊ธดํ•จ)
- **getStaticPaths** | ```Specify Dynamic Routes to Pre-Render pages based on Data```๋ผ๊ณ  Docs์— ๋‚˜์™€์žˆ์Œ, ๋นŒ๋“œ์‹œ์— ํŠน์ • ๋™์  ๊ฒฝ๋กœ๋ฅผ ์ง€์ •ํ•˜์—ฌ ์‚ฌ์ „ ๋ Œ๋”ํ•  ์ˆ˜ ์žˆ๋Š” ๊ธฐ๋Šฅ์ž„, ๋นŒ๋“œ์‹œ ํŠน์ • ํŽ˜์ด์ง€๋งŒ ๋จผ์ € ๋‹ค์šด๋ฐ›์•„๋†“๋Š” ๋А๋‚Œ

### ๋ฐฐํฌ ๋ฐ ํ† ์ดํ”„๋กœ์ ํŠธ๋กœ ๋งŒ๋“  ์›น
1ํ•™๊ธฐ ๊ธฐ๋ง๊ณ ์‚ฌ์ „ ์ž ๊น ```Recoil``` & ```MobX``` & ```JS``` ์Šคํƒ์œผ๋กœ ๋งŒ๋“  ์ฝ”๋กœ๋‚˜ ํ†ต๊ณ„ ์›น ์‚ฌ์ดํŠธ๊ฐ€ ์ƒ๊ฐ๋‚˜์„œ ์ด๋ฒˆ ๊ธฐํšŒ์— ๋‹ค์‹œ ๋งŒ๋“ค์–ด๋ณด์ž๊ณ  ์ƒ๊ฐํ•ด์„œ ```NEXT``` & ```TS``` & ```Recoil``` ์Šคํƒ์œผ๋กœ ๋‹ค์‹œ ๋งŒ๋“ค์–ด ๋ณด์•˜๋‹ค. Figma๋กœ ๋””์ž์ธ๋„ ์กฐ๊ธˆ์”ฉ ํ•ด์„œ ๋งŒ๋“ ๊ฑฐ๋ผ์„œ ์ƒ๊ฐ๋ณด๋‹ค ๋‚˜ ์น˜๊ณ ๋Š” ํ€„๋ฆฌํ‹ฐ๊ฐ€ ์ž˜ ๋‚˜์˜จ๊ฒƒ๊ฐ™๋‹ค! NEXT๋งŒ์˜ ์žฅ์ ์„ ์ž˜ ๋ง›๋ณผ ์ˆ˜์žˆ๋Š” ํ”„๋กœ์ ํŠธ์˜€๋˜๊ฒƒ๊ฐ™๊ณ 
๋ฐฐํฌ๋Š” vercel ์‚ฌ์ดํŠธ๋กœ ํ•˜์˜€๋Š”๋ฐ github ๋ ˆํฌ์ง€ํ† ๋ฆฌ์™€ ์—ฐ๋™ํ•˜์—ฌ ๋ฐฐํฌํ•˜๋‹ˆ ์ž๋™์œผ๋กœ ํ•ด์ฃผ์—ˆ๋‹ค. ๋ฐฐํฌ๊ณผ์ •์—์„œ Linkํƒœ๊ทธ๋ฅผ importํ•ด์˜ค๋Š”๋ฐ ๊ฒฝ๋กœ๋ฅผ ```next/Link```๋กœ ๋Œ€๋ฌธ์ž๋ฅผ ๋„ฃ์—ˆ๋”๋‹ˆ ์˜ค๋ฅ˜๊ฐ€ ๋‚ฌ๋‹ค. ์ด๊ฑธ๋ณด๋Š”์‚ฌ๋žŒ๋“ค์€ ๊ผญ ์†Œ๋ฌธ์ž๋ฅผ ๋„ฃ์–ด์„œ ์–ด์ด์—†๊ฒŒ ์‹คํŒจํ•˜์ง€ ๋ง์ž..
![Main](https://user-images.githubusercontent.com/62810965/128438611-5c927a73-394a-4c5c-87bc-afec84bc6b0b.png)
![Country](https://user-images.githubusercontent.com/62810965/128438625-20bbffc6-31ea-4cba-b74f-cd24733fd856.png)

### ๋А๋‚€์ 
React๋ฐ ์ƒํƒœ๊ด€๋ฆฌ๋ฅผ ์–ด๋А์ •๋„ ๋‹ค๋ฃฐ ์ˆ˜ ์žˆ๊ฒŒ ๋˜๊ณ ๋‚˜์„œ NEXT๋ฅผ ๊ณต๋ถ€ํ•˜๊ธฐ ์‹œ์ž‘ํ–ˆ๋Š”๋ฐ ์˜์–ด๋กœ๋œ Docs๋‚˜ ์ƒ๋Œ€์ ์œผ๋กœ ์ ์€ ์ž๋ฃŒ๋“ค๋กœ ๊ณต๋ถ€ํ•˜๋Š”๊ฒŒ ์‰ฝ์ง€ ์•Š์•˜๋‹ค. ์˜์–ด ๊ณต๋ถ€๋ฅผ ๋” ํ•ด์•ผ๊ฒ ๋‹ค๊ณ  ๋А๊ผˆ๊ณ  ์•„์ง ๊ณต์‹๋ฌธ์„œ๋ฅผ ์ž˜ ๋ณด์ง€๋ชปํ•œ๋‹ค๊ณ  ์ƒ๊ฐํ–ˆ๋‹ค.
๋งจ ์ฒ˜์Œ ๊ณต๋ถ€ํ•˜๊ธฐ ์‹œ์ž‘ํ–ˆ์„ ๋•Œ๋Š” ํŒŒ์ผ๊ตฌ์กฐ๋‚˜ ์ƒํƒœ๊ด€๋ฆฌ ๋ฐ ๋ฐ์ดํ„ฐ ํ†ต์‹ ์— ๋Œ€ํ•œ ํ๋ฆ„์„ ์ดํ•ดํ•˜๊ธฐ ์–ด๋ ค์›Œ์„œ ํž˜๋“ค์—ˆ์œผ๋‚˜,
๋‹ค๋ฅธ์‚ฌ๋žŒ๋“ค์˜ ๊นƒํ—ˆ๋ธŒ ๋ ˆํฌ์ง€ํ† ๋ฆฌ์™€ ์นœ๊ตฌ๋“ค์˜ ์กฐ์–ธ์œผ๋กœ ์ˆ˜์›”ํ•ด์ง„๊ฒƒ ๊ฐ™๋‹ค.
๋˜ SSR์„ํ•˜๊ธฐ์œ„ํ•ด์„œ ๋งŽ์ด ๊ณต๋ถ€ํ•ด์•ผํ•˜๋Š”์ค„ ์•Œ์•˜์œผ๋‚˜ React์™€ ์ƒํƒœ๊ด€๋ฆฌ๋ฅผ ์–ด๋А์ •๋„ ๋‹ค๋ฃฐ ์ˆ˜ ์žˆ์œผ๋ฉด NEXT์˜ ๋•๋ถ„์ธ์ง€ ๊ตฌํ˜„ํ•˜๋Š”๊ฒƒ์ด ๊ฝค ์‰ฌ์› ๋‹ค.
์•ž์œผ๋กœ ๋ธ”๋กœ๊ทธ๋“ฑ SSR์ด ํ•„์š”ํ•œ ์‚ฌ์ดํŠธ๊ฐ€ ์žˆ์œผ๋ฉด NEXT๋ฅผ ์ด์šฉํ•ด์„œ ๋งŒ๋“ค์–ด ๋ณผ๊ฒƒ๊ฐ™๋‹ค.