|
1 |
| -This is a [Next.js](https://nextjs.org) project bootstrapped with [`create-next-app`](https://nextjs.org/docs/app/api-reference/cli/create-next-app). |
| 1 | +# 5μ£Όμ°¨ λ―Έμ
: Next-Netflix |
2 | 2 |
|
3 |
| -## Getting Started |
| 3 | +# κ²°κ³Όλ¬Ό |
4 | 4 |
|
5 |
| -First, run the development server: |
| 5 | +- [λ² ν¬ λ§ν¬](https://next-netflix-20th-gamma.vercel.app/) |
6 | 6 |
|
7 |
| -```bash |
8 |
| -npm run dev |
9 |
| -# or |
10 |
| -yarn dev |
11 |
| -# or |
12 |
| -pnpm dev |
13 |
| -# or |
14 |
| -bun dev |
15 |
| -``` |
| 7 | +# Key Questions |
16 | 8 |
|
17 |
| -Open [http://localhost:3000](http://localhost:3000) with your browser to see the result. |
| 9 | +## React 18 λ²μ μ λ³κ²½μ μ λν΄ μ€λͺ
ν΄μ£ΌμΈμ.(+ 19 λ²μ μ λν μΆκ° μ€λͺ
λ μ’μ΅λλ€) |
18 | 10 |
|
19 |
| -You can start editing the page by modifying `app/page.tsx`. The page auto-updates as you edit the file. |
| 11 | +React 18λ²μ μ μλ² μ»΄ν¬λνΈμ ν΄λΌμ΄μΈνΈ μ»΄ν¬λνΈμ ꡬλΆ, lazy loadingκ³Ό Suspense κΈ°λ₯, μλ λ°°μΉ κΈ°λ₯ λ±μ λμ
νλ€. |
20 | 12 |
|
21 |
| -This project uses [`next/font`](https://nextjs.org/docs/app/building-your-application/optimizing/fonts) to automatically optimize and load [Geist](https://vercel.com/font), a new font family for Vercel. |
| 13 | +### μλ λ°°μΉ |
22 | 14 |
|
23 |
| -## Learn More |
| 15 | +- μλ λ°°μΉμ μ¬λ¬ κ°μ μν μ
λ°μ΄νΈλ₯Ό λ¬Άμ΄ ν λ²μ λ λλ§μΌλ‘ μ²λ¦¬νμ¬ μ±λ₯μ λμ΄λ κ²μ΄λ€. |
| 16 | +- 18 μ΄μ λ²μ μμλ μ΄λ²€νΈ νΈλ€λ¬μμλ μλ λ°°μΉμ΄ μ§μλμλ€. |
| 17 | + - μλ₯Ό λ€μ΄, μ΄λ²€νΈ νΈλ€λ¬ λ΄μμ `setState` ν¨μλ‘ μ¬λ¬ μνκ° λ³κ²½λμ΄λ λ λλ§μ ν λ²λ§ μΌμ΄λ¬λ€. |
| 18 | + - νμ§λ§ `setTimeout` λ±μ λΉλκΈ° ν¨μμμλ μλ λ°°μΉμ΄ μ μ©λμ§ μμ `setTimeout` λ΄μ `setState` ν¨μλ κ°κ° λ λλ§μ μꡬνλ€. |
| 19 | +- νμ§λ§ 18λΆν°λ λΉλκΈ° ν¨μ λ΄μμλ μλ λ°°μΉμ΄ μ§μλλλ‘ νλ€. |
24 | 20 |
|
25 |
| -To learn more about Next.js, take a look at the following resources: |
| 21 | +### μλ² λ° ν΄λΌμ΄μΈνΈ μ»΄ν¬λνΈ |
26 | 22 |
|
27 |
| -- [Next.js Documentation](https://nextjs.org/docs) - learn about Next.js features and API. |
28 |
| -- [Learn Next.js](https://nextjs.org/learn) - an interactive Next.js tutorial. |
| 23 | +- μλ² μ»΄ν¬λνΈ |
| 24 | + - μλ²μμ λ°μ΄ν°λ₯Ό λ λλ§ν΄ HTMLλ‘ μ λ¬νλ€. |
| 25 | + - μλ²μμλ§ μ²λ¦¬λλ μ»΄ν¬λνΈλ‘, μνλ μ μ μ μΈν°λμ
μ΄ νμ μλ UIμ μ£Όλ‘ μ¬μ©λλ€. |
| 26 | + - ex) μ μ λ°μ΄ν°λ λλ§, SEOλ₯Ό μν λ°μ΄ν° λ‘λ |
| 27 | + - ν΄λΌμ΄μΈνΈλ‘ λΆνμν μλ°μ€ν¬λ¦½νΈλ₯Ό 보λ΄μ§ μμΌλ―λ‘ λ‘λ© μλκ° λΉ λ₯΄κ³ μ±λ₯μ΄ ν₯μλλ€. |
| 28 | +- ν΄λΌμ΄μΈνΈ μ»΄ν¬λνΈ |
| 29 | + - λΈλΌμ°μ μμ μ€νλλ©°, μν κ΄λ¦¬λ μ΄λ²€νΈ νΈλ€λ§μ΄ νμν κ²½μ°μ μ¬μ©λλ€. |
| 30 | + - ν΄λΌμ΄μΈνΈ μ»΄ν¬λνΈ λ΄μμ μλ² μ»΄ν¬λνΈλ₯Ό κ°μ Έμ ν¨κ» μ¬μ©ν μ μλ€. |
| 31 | + - μ£Όλ‘ μ¬μ©μμμ μνΈμμ©μ΄ μꡬλλ UI μμμ μ¬μ©λλ€. |
29 | 32 |
|
30 |
| -You can check out [the Next.js GitHub repository](https://github.com/vercel/next.js) - your feedback and contributions are welcome! |
| 33 | +### Lazy Loadingκ³Ό Suspense |
31 | 34 |
|
32 |
| -## Deploy on Vercel |
| 35 | +- Lazy Loading |
| 36 | + - μ»΄ν¬λνΈλ₯Ό νμν λκΉμ§ λ‘λνμ§ μκ³ , μ¬μ©μκ° ν΄λΉ μ»΄ν¬λνΈλ₯Ό νμλ‘ ν λ λ‘λν¨μΌλ‘μ¨ μ΄κΈ° λ‘λ© μκ°μ μ€μΌ μ μλ€. |
| 37 | + - `React.lazy()`λ₯Ό μ¬μ©νμ¬ μ€μ ν μ μλ€. |
| 38 | +- Suspense |
| 39 | + - λΉλκΈ°μ μΌλ‘ λ‘λλλ μ»΄ν¬λνΈλ₯Ό κ°μΈ λ‘λ© μ€μΈ μνλ₯Ό μ²λ¦¬ν μ μλλ‘ ν μ»΄ν¬λνΈμ΄λ€. |
| 40 | + - `Suspense`λ₯Ό μ¬μ©νμ¬ λΆλ¬μ¬ μ μκ³ , `fallback` μμ±μΌλ‘ λ°μ΄ν°λ₯Ό λΆλ¬μ€λ λμ 보μ¬μ€ λ‘λ© UIλ₯Ό μ λ¬ν μ μλ€. |
33 | 41 |
|
34 |
| -The easiest way to deploy your Next.js app is to use the [Vercel Platform](https://vercel.com/new?utm_medium=default-template&filter=next.js&utm_source=create-next-app&utm_campaign=create-next-app-readme) from the creators of Next.js. |
| 42 | +## nextJS 13 μ΄νμ app routing λ°©μμ νΉμ§κ³Ό κΈ°λ₯μ λν΄ μ€λͺ
ν΄μ£ΌμΈμ. |
35 | 43 |
|
36 |
| -Check out our [Next.js deployment documentation](https://nextjs.org/docs/app/building-your-application/deploying) for more details. |
| 44 | +### app router |
| 45 | + |
| 46 | +- 13 μ΄μ μλ `pages` λλ ν 리 μμ νμΌλ€μ λΌμ°νΈλ‘ λ³ννλ€. νμ΄μ§λ³λ‘ νλμ νμΌμ΄ νμνλ€. |
| 47 | +- 13λΆν°λ `app` λλ ν 리λ₯Ό μ¬μ©νλ©°, `layout.js`, `page.ts` νμΌμ ν΅ν΄μ λΌμ°ν
ν μ μλ€. |
| 48 | +- `layout.js` νμΌμ μ€μ²©λ λ μ΄μμμ κ΄λ¦¬νλ€. κ° νμ΄μ§λ§λ€ 곡ν΅λ UIλ₯Ό μ 곡ν μ μλ€. |
| 49 | +- `page.ts`λ μ€μ νμ΄μ§ μ½ν
μΈ λ₯Ό μ μνλ€. |
| 50 | + |
| 51 | +### ν¨λ¬λ (Parallel) λΌμ°νΈ |
| 52 | + |
| 53 | +- νλμ νμ΄μ§ λ΄μμ λμμ μ¬λ¬ λΌμ°νΈλ₯Ό λ λλ§ν μ μλ€. |
| 54 | + - λμ보λλ μμ
λ―Έλμ΄ νΌλ λ±μμ μ¬μ©νκΈ° μ’λ€. |
| 55 | +- λ³λ ¬ λΌμ°ν
μ λͺ
λͺ
λ μ¬λ‘―(@folder)μ μ¬μ©νμ¬ κ΅¬νλλ€. κ° μ¬λ‘―μ λ
립μ μΌλ‘ λ λλ§λλ©°, URL ꡬ쑰μ μν₯μ λ―ΈμΉμ§ μλλ€. |
| 56 | +- λ³λ ¬ λΌμ°ν
μ μ¬μ©νλ©΄ μΈμ¦ μνλ κΈ°ν 쑰건μ λ°λΌ λ λλ§ν μ½ν
μΈ λ₯Ό μ νν μ μ. |
| 57 | + - ex) λ‘κ·ΈμΈ μνμ λ°λΌ λμ보λμ λ‘κ·ΈμΈ νμ΄μ§λ₯Ό μ νμ μΌλ‘ λ λλ§νκΈ° |
| 58 | +- λ³λ ¬ λΌμ°νΈμμ URLκ³Ό μΌμΉνμ§ μλ μ¬λ‘―μ default.js νμΌλ‘ λ체λλ€. λ§μ½ default.jsκ° μμΌλ©΄ 404 νμ΄μ§κ° νμλ©λλ€. |
| 59 | + |
| 60 | +### μΈν°μ
ν
(Intercepting) λΌμ°νΈ |
| 61 | + |
| 62 | +- νμ΄μ§ μ΄λ μ€μ νΉμ λμμ μ²λ¦¬ν μ μλ€. |
| 63 | + - ex) λ‘λ© μν, μλ¬ μ²λ¦¬, μΆκ° λ°μ΄ν° λ°μμ€κΈ° λ± |
| 64 | + - (..): ν λ¨κ³ μμ λλ ν 리μμ λΌμ°νΈλ₯Ό κ°λ‘μ±κΈ° |
| 65 | + - (...): app λλ ν 리 κΈ°μ€μΌλ‘ λΌμ°νΈλ₯Ό κ°λ‘μ±κΈ° |
| 66 | +- Hard Navigation |
| 67 | + - μ 체 νμ΄μ§ μλ‘ κ³ μΉ¨: νμ΄μ§ μ΄λ μ νμ¬ νμ΄μ§λ₯Ό μμ ν λ²μ΄λμ μλ‘μ΄ νμ΄μ§λ₯Ό μλ²μμ λ€μ κ°μ Έμ¨λ€. |
| 68 | + - νμ΄μ§ μν μ΄κΈ°ν: μλ‘κ³ μΉ¨μ΄λ νμ΄μ§ μ΄λ μ λͺ¨λ μνκ° μ΄κΈ°νλλ€. |
| 69 | + - λ€νΈμν¬ μμ²: μλ²μμ μλ‘μ΄ μ½ν
μΈ λ₯Ό μμ²νλ λ°©μμ΄κΈ° λλ¬Έμ νμ΄μ§ μ΄λ μ λ€νΈμν¬ μμ²μ΄ λ°μνλ€. |
| 70 | +- Soft Navigation |
| 71 | + - νμ΄μ§ μλ‘ κ³ μΉ¨ μμ: νμ΄μ§ μ΄λ μ μ 체 νμ΄μ§λ₯Ό μλ‘ κ³ μΉ¨νμ§ μκ³ , νμν λ°μ΄ν°λ μ½ν
μΈ λ§μ ν΄λΌμ΄μΈνΈ μ¬μ΄λμμ λμ μΌλ‘ μ
λ°μ΄νΈνλ€. |
| 72 | + - μν μ μ§: νμ΄μ§ μ΄λ νμλ νμ΄μ§μ μνκ° μ μ§λλ€. |
| 73 | + - λΉ λ₯Έ μ ν: νμ΄μ§κ° μμ ν μλ‘ λ‘λλμ§ μλλ€. |
| 74 | + |
| 75 | +## vercel, netlify κ°μ νΈμ€ν
νλ«νΌμ νΉμ§κ³Ό λ΄λΆ ꡬν μ리μ λν΄ μ€λͺ
ν΄μ£ΌμΈμ(+ awsμ μ€ν 리μ§μ μΈμ€ν΄μ€ λ± μνκ³μ λν΄μλ μλ €μ£ΌμΈμ) |
| 76 | + |
| 77 | +- Vercel |
| 78 | + - Vercelμ Next.jsμ κ°λ°μ¬λ‘, ν΄λΌμ°λ κΈ°λ°μ νλ«νΌμΌλ‘ μΉ μ ν리μΌμ΄μ
μ λΉ λ₯΄κ² λ°°ν¬νκ³ μ΅μ νν΄μ€λ€. |
| 79 | + - CI/CD μλν: Vercelμ GitHub λ±μ μ°λν΄ μ»€λ°μ΄ λ°μν λλ§λ€ μλμΌλ‘ λΉλνκ³ λ°°ν¬νλ€. |
| 80 | + - μλ²λ¦¬μ€ κΈ°λ₯: Vercelμ μλ²λ¦¬μ€ μν€ν
μ²λ₯Ό μ§μνμ¬, ν΄λΌμ΄μΈνΈμ μμ²μ λ°λΌ μλ²λ¦¬μ€ ν¨μκ° νΈλ¦¬κ±°λλ€. AWS Lambdaμ μ μ¬ν λ°©μμΌλ‘ λμνλ©°, μμ² μμλ§ μ€νλκ³ , μ€νμ΄ λλλ©΄ μλ² μμμ μλμΌλ‘ ν΄μ λλ€. |
| 81 | + - μΊμ±κ³Ό μ£μ§ λ€νΈμν¬: μ μΈκ³μ λΆμ°λ CDN(Content Delivery Network)μ ν΅ν΄ μ μ μ½ν
μΈ λ₯Ό μΊμ±νκ³ , ν΄λΌμ΄μΈνΈμκ² μ 곡νλ€. |
| 82 | +- Netlify |
| 83 | + |
| 84 | + - Netlifyλ Jamstack(JavaScript, API, Markup) μν€ν
μ²μ μ΅μ νλ νΈμ€ν
νλ«νΌμΌλ‘, μ£Όλ‘ μ μ μ¬μ΄νΈμ μλ²λ¦¬μ€ ν¨μμ λ°°ν¬λ₯Ό ν μ μλ€. |
| 85 | + - CI/CD νμ΄νλΌμΈ: Netlifyλ Git μ μ₯μμ μ°κ²°ν΄ λ³κ²½ μ¬νμ΄ λ°μνλ©΄ μλμΌλ‘ μ ν리μΌμ΄μ
μ λΉλνκ³ λ°°ν¬νλ€. |
| 86 | + - μλ²λ¦¬μ€ ν¨μ μ§μ: Netlify Functionsλ AWS Lambdaμ μ μ¬ν μλ²λ¦¬μ€ ν¨μ κΈ°λ₯μ μ 곡νλ€. |
| 87 | + - λ΄λΆ CDN λ° μ£μ§ λ€νΈμν¬: Netlifyλ κΈλ‘λ² CDNμ ν΅ν΄ μ μ μμ
μ λΉ λ₯΄κ² μ 곡νλ©°, νΉμ νμ΄μ§λ API νΈμΆμ μν μ£μ§ λ€νΈμν¬ μ΅μ νλ‘ μ±λ₯μ λμΌ μ μλ€. |
| 88 | + |
| 89 | +- AWS(Amazon Web Services) |
| 90 | + - AWSλ ν΄λΌμ°λ κΈ°λ°μ λ€μν μΈνλΌ λ° μλΉμ€ μ 곡μ
체λ‘, κ°λ°μμ κΈ°μ
λ€μ΄ μΉ μ ν리μΌμ΄μ
, λ°μ΄ν°λ² μ΄μ€, μλ²λ¦¬μ€ μμ€ν
μ μμ½κ² κ΄λ¦¬νκ³ νμ₯ν μ μλλ‘ νλ€. |
| 91 | + - AWS S3: AWSμ S3(Simple Storage Service)λ μ€ν λ¦¬μ§ μλΉμ€λ‘, μ μ μΉμ¬μ΄νΈ νΈμ€ν
, λ°μ΄ν° μμΉ΄μ΄λΉ, λ°±μ
λ±μ μμ£Ό μ¬μ©λλ€. |
| 92 | + - EC2 μΈμ€ν΄μ€: Amazon EC2(Elastic Compute Cloud)λ κ°μ μλ²λ₯Ό μ 곡νλ μλΉμ€μ΄λ€. EC2 μΈμ€ν΄μ€μ μ΄μ 체μ μ μ ν리μΌμ΄μ
μ μ€μΉνμ¬ μ ν리μΌμ΄μ
μ νΈμ€ν
ν μ μλ€. νμ₯ λ° μΆμλ κ°λ₯νλ€. |
| 93 | + - AWS Lambda: AWS Lambdaλ μλ²λ¦¬μ€ μ»΄ν¨ν
μλΉμ€λ₯Ό μ 곡νμ¬, νΉμ μ΄λ²€νΈμ λν΄ μλμΌλ‘ μ€νλλ ν¨μλ₯Ό μμ±ν μ μλ€. ν¨μ¨μ μΈ μλ²λ¦¬μ€ μν€ν
μ²λ₯Ό ꡬνν μ μλ€. |
| 94 | + - λ°μ΄ν°λ² μ΄μ€ λ° API μλΉμ€: AWSλ RDS(Relational Database Service)μ DynamoDB(NoSQL)μ κ°μ λ€μν λ°μ΄ν°λ² μ΄μ€ μλΉμ€λ₯Ό μ 곡νλ€. |
| 95 | + |
| 96 | +# μ°Έκ³ |
| 97 | + |
| 98 | +- https://nextjs.org/docs/app/building-your-application/routing/parallel-routes |
| 99 | +- https://rocketengine.tistory.com/entry/NextJS-13-Routing-Parallel-Routes-%EB%B3%91%EB%A0%AC-%EB%9D%BC%EC%9A%B0%ED%8A%B8 |
| 100 | +- https://rocketengine.tistory.com/entry/NextJS-13-Routing-Intercepting-Routes%EB%9D%BC%EC%9A%B0%ED%8A%B8-%EA%B0%80%EB%A1%9C%EC%B1%84%EA%B8%B0?category=1127295 |
| 101 | +- https://velog.io/@hyunjoong/Next.js-13-Parallel-Intercepting-Routes-jxn0qt37 |
0 commit comments