๐Ÿ”ฅ/์‡ผํ•‘๋ชฐ ๋งŒ๋“ค๊ธฐ

[์‡ผํ•‘๋ชฐ ๋งŒ๋“ค๊ธฐ] React JS - Section 1 / ํŽ˜์ด์ง€ ์ด๋™ React Router Dom / CORS ์ด์Šˆ Proxy๋กœ ํ•ด๊ฒฐํ•˜๋Š” ๋ฒ•

say! 2022. 7. 14. 22:12
728x90

๐Ÿ“’ ์ฐธ๊ณ  ๊ฐ•์˜

 

[๋ฌด๋ฃŒ] ๋”ฐ๋ผํ•˜๋ฉฐ ๋ฐฐ์šฐ๋Š” ๋…ธ๋“œ, ๋ฆฌ์•กํŠธ ์‹œ๋ฆฌ์ฆˆ - ๊ธฐ๋ณธ ๊ฐ•์˜ - ์ธํ”„๋Ÿฐ | ๊ฐ•์˜

์ด ๊ฐ•์˜๋ฅผ ํ†ตํ•ด์„œ ๋ฆฌ์•กํŠธ์™€ ๋…ธ๋“œ๋ฅผ ์–ด๋–ป๊ฒŒ ์‚ฌ์šฉํ•˜๋Š”์ง€ ๊ธฐ๋ณธ์ ์ธ ๋‚ด์šฉ๋“ค์„ ๋ฐฐ์šธ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค., - ๊ฐ•์˜ ์†Œ๊ฐœ | ์ธํ”„๋Ÿฐ...

www.inflearn.com


โ“ React JS๋ž€?

- Library, Made by Facebook, Released in 2013

- Components module๊ณผ ๋น„์Šทํ•˜๊ฒŒ ์ปดํฌ๋„ŒํŠธ๋กœ ์ด๋ค„์ ธ ์žˆ์–ด์„œ reusable ๋›ฐ์–ด๋‚จ

- Virtual DOM

 

# Real DOM vs Virtual DOM

Real DOM : ๋งŒ์•ฝ 10๊ฐœ์˜ ๋ฆฌ์ŠคํŠธ๊ฐ€ ์žˆ์„ ๋•Œ ๊ทธ ์ค‘์— ํ•œ๊ฐ€์ง€์˜ ๋ฆฌ์ŠคํŠธ๋งŒ Update ๋จ > ์ „์ฒด ๋ฆฌ์ŠคํŠธ๋ฅผ ๋‹ค์‹œ Reload ํ•ด์•ผ๋จ, Super Expensiveํ•œ ์ž‘์—…

Virtual DOM : ๋งŒ์•ฝ 10๊ฐœ์˜ ๋ฆฌ์ŠคํŠธ๊ฐ€ ์žˆ์„ ๋•Œ ๊ทธ ์ค‘์— ํ•œ๊ฐ€์ง€์˜ ๋ฆฌ์ŠคํŠธ๋งŒ Update ๋จ > ๊ทธ ๋ฐ”๋€ ํ•œ ๊ฐ€์ง€ ์•„์ดํ…œ๋งŒ DOM์—์„œ ๋ฐ”๊ฟ”์คŒ

 

# Babel

์ตœ์‹  ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ๋ฌธ๋ฒ•์„ ์ง€์›ํ•˜์ง€ ์•Š๋Š” ๋ธŒ๋ผ์šฐ์ €๋ฅผ ์œ„ํ•ด์„œ ์ตœ์‹  ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ๋ฌธ๋ฒ•์„ ๊ตฌํ˜• ๋ธŒ๋ผ์šฐ์ €์—์„œ๋„ ๋Œ ์ˆ˜ ์žˆ๊ฒŒ ๋ณ€ํ™˜ ์‹œ์ผœ์คŒ(ES5 ๋ฌธ๋ฒ•์œผ๋กœ ๋ณ€ํ™˜)

 

# Webpack

๋งŽ์€ ๋ชจ๋“ˆ๋“ค์„ ๊ฐ„๋‹จํ•˜๊ฒŒ ๋งŒ๋“ค์–ด์คŒ

 

# ๋‹ค์šด๋กœ๋“œ

client ํด๋”์—์„œ npx create-react-app . 

 

# npm & npx

NPM (Node Package Manager) : online repository for the publishing of open-source Node.js projects ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋“ค์„ ๋‹ด๊ณ  ์žˆ๋Š” ์ €์žฅ์†Œ ์—ญํ• , command-line utility for interacting with the said repository that aids in package installation, version management, and dependency management ํŒŒ์ผ ๋นŒ๋“œ์‹œํ‚ฌ ๋•Œ ์‚ฌ์šฉ, package.js์—์„œ ํ™•์ธ๊ฐ€๋Šฅ

> ์›๋ž˜๋Š” create-react-app์„ ํ•  ๋•Œ npm install -g create-react-app ์ด๋ ‡๊ฒŒ ํ•ด์„œ global ๋””๋ ‰ํ† ๋ฆฌ์— ๋‹ค์šด๋ฐ›์•˜์Œ

> ์ด์ œ๋Š” npx ์ด์šฉํ•ด์„œ ๊ทธ๋ƒฅ create-react-app ์ด์šฉํ•  ์ˆ˜ ์žˆ์Œ (npx๊ฐ€ npm registry์—์„œ create-react-app์„ ์ฐพ์•„์„œ ๋‹ค์šด๋กœ๋“œ ์—†์ด ์‹คํ–‰์‹œ์ผœ์คŒ)

> Disk space ๋‚ญ๋น„ํ•˜์ง€ ์•Š์„ ์ˆ˜ ์žˆ์Œ, ํ•ญ์ƒ ์ตœ์‹  ๋ฒ„์ „ ์‚ฌ์šฉ๊ฐ€๋Šฅ

 

npm run start

 

LandingPages : ์ฒ˜์Œ ํŽ˜์ด์ง€

hoc : ๋‹ค๋ฅธ ์ปดํฌ๋„ŒํŠธ๋ฅผ ๊ฐ€์ง€๋Š” function

 

๐ŸŸฃํŽ˜์ด์ง€ ์ด๋™

App.js

ํŽ˜์ด์ง€ ์ด๋™์„ ํ•  ๋•Œ React Router Dom ์„ ์‚ฌ์šฉ

 

React Router | Quick Start

Declarative routing for React apps at any scale

reactrouter.com

#Dependency  ๋‹ค์šด๋กœ๋“œ

npm install react-router-dom --save

 

#Data Request, Response Flow ๊ทธ๋ฆฌ๊ณ  Axios

 

๐ŸŸฃCORS ์ด์Šˆ

๋‹ค๋ฅธ ํฌํŠธ๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ๋Š” ์„œ๋ฒ„๋Š” ์•„๋ฌด ์„ค์ •์—†์ด Request๋ฅผ ๋ณด๋‚ผ ์ˆ˜ X

> Cors ์ •์ฑ… ๋•Œ๋ฌธ > Cross-Origin Resource Sharing (CORS) ๋ณด์•ˆ์„ ์œ„ํ•ด์„œ

 

๐ŸŸฃProxy

Proxy๋ฅผ ์‚ฌ์šฉํ•ด์„œ CORS ์ด์Šˆ ํ•ด๊ฒฐํ•˜๊ธฐ

๋‹ค์šด๋กœ๋“œ

$ npm install http-proxy-middleware --save

 

 

Proxying API Requests in Development | Create React App

Note: this feature is available with react-scripts@0.2.3 and higher.

create-react-app.dev

์œ„ ์‚ฌ์ดํŠธ Configuring the Proxy Manually ๋ถ€๋ถ„ ์ฐธ์กฐ

src ํด๋”์— setupProxy.js ํŒŒ์ผ ๋งŒ๋“ค๊ณ  ์•„๋ž˜ ์ฝ”๋“œ ๋ถ™์—ฌ๋„ฃ๊ธฐ

const { createProxyMiddleware } = require('http-proxy-middleware');

module.exports = function(app) {
  app.use(
    '/api',
    createProxyMiddleware({
      target: 'http://localhost:5000',
      changeOrigin: true,
    })
  );
};

> CORS ์ด์Šˆ ํ•ด๊ฒฐ!

 

#Proxy Server ์—ญํ• 

#Proxy server ์‚ฌ์šฉ ์ด์œ 

-ํšŒ์‚ฌ์—์„œ ์ง์›๋“ค์ด๋‚˜ ์ง‘์•ˆ์—์„œ ์•„์ด๋“ค ์ธํ„ฐ๋„ท ์‚ฌ์šฉ ์ œ์–ด

-์บ์‰ฌ๋ฅผ ์ด์šฉํ•ด ๋” ๋น ๋ฅธ ์ธํ„ฐ๋„ท ์ด์šฉ ์ œ๊ณต

-๋” ๋‚˜์€ ๋ณด์•ˆ ์ œ๊ณต

-์ด์šฉ ์ œํ•œ๋œ ์‚ฌ์ดํŠธ ์ ‘๊ทผ ๊ฐ€๋Šฅ