ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • React :: React ์‹œ์ž‘ํ•˜๊ธฐ
    PROGRAMMING/React 2021. 3. 20. 00:27

     

    React ๋ฅผ ์ฒ˜์Œ ์‹œ์ž‘ํ•˜๋ ค๋ฉด, ์—ฌ๋Ÿฌ ๋ฐฉ๋ฒ•์ด ์žˆ๋Š”๋ฐ ๊ณต์‹ ์›น์‚ฌ์ดํŠธ์—์„œ๋„ ์†Œ๊ฐœํ•˜๋Š” CRA (Create React App) ์„ ์‚ฌ์šฉํ•ด๋ณด์ž.


    React ๋ž€ ๋ฌด์—‡์ด๊ณ , ๋ญ˜ ์•Œ๊ณ  ์žˆ์–ด์•ผ ํ• ๊นŒ?

    React ๋Š” ํŽ˜์ด์Šค๋ถ์—์„œ ์ œ๊ณตํ•˜๋Š” JavaScript ๊ธฐ๋ฐ˜ UI ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ์ด๋‹ค.

    ํ”„๋ ˆ์ž„์›Œํฌ๊ฐ€ ์•„๋‹ˆ๋ผ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ผ์„œ, ๊ทธ๋งŒํผ ๊ฐ€๋ณ๊ณ  ์„ ํƒ์ง€๊ฐ€ ๋„“๋‹ค.

     

    JavaScript ๊ธฐ๋ฐ˜์ด๋ผ JavaScript ๋ฅผ ์•Œ๋ฉด ๋ฐฐ์šฐ๊ธฐ ์‰ฝ๋‹ค. ๋ฐ˜๋ฉด์— ๋ชจ๋ฅธ๋‹ค๋ฉด ์ข€ ์• ๋จน์„ ์ˆ˜ ์žˆ๋‹ค.

    ๊ทธ๋Ÿฐ ๊ฒฝ์šฐ๋ฅผ ์œ„ํ•œ ๋Œ€์ฑ… - ๊ณต์‹ js ํŠœํ† ๋ฆฌ์–ผ ์™„๋…ํ•˜๊ธฐ :

    developer.mozilla.org/ko/docs/Web/JavaScript/A_re-introduction_to_JavaScript

    (์™„๋ฒฝํ•œ ๋Œ€์ฑ…์ด ๋˜๊ธฐ๋Š” ์–ด๋ ต๋‹ค. ๋‹ค๋งŒ ๋‹ค๋ฅธ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด๋ฅผ ์•Œ๊ณ  ์žˆ๋Š” ์‚ฌ๋žŒ์ด๋ผ๋ฉด, ์ด ์ •๋„๋ฅผ ๋ณด๊ณ  ์–ด๋Š์ •๋„ ์ปค๋ฒ„๊ฐ€ ๊ฐ€๋Šฅํ•  ์ˆ˜๋„ ์žˆ๊ฒ ๋‹ค. ๊ทธ๋ ‡์ง€๋งŒJavaScript ๋Š” Java ์™€ ์™„์ „ ๋‹ค๋ฅด๊ธฐ ๋•Œ๋ฌธ์— ์ด๋ฅผ ํ˜ผ๋™ํ•˜๊ณ  Java ๋ฅผ ์•„๋‹ˆ๊นŒ ์‰ฌ์šธ ๊ฒƒ์ด๋ผ๋Š” ์ƒ๊ฐ์€ ๊ธˆ๋ฌผ!)

     

    ์˜†์— ๊ฐœ๋ฐœ์ž ๋„๊ตฌ๋ฅผ ์ผœ๋‘๊ณ  ์ง์ ‘ ํ•ด๋ณด๋ฉด์„œ ์™„๋…ํ•˜์ž. 1~2์‹œ๊ฐ„ ์ •๋„ ๊ฑธ๋ฆฐ๋‹ค.

     

    ๋‹ค์Œ์œผ๋กœ React ๋ฅผ ์™œ ์‚ฌ์šฉํ•˜๋Š”์ง€, ๋˜ React ๋ฅผ ์‹œ์ž‘ํ•˜๊ธฐ ์ „์— ์•Œ์•„๋‘๋ฉด ์ข‹์€ React ์˜ ํŠน์ง• ๋ช‡ ๊ฐ€์ง€๋ฅผ ์•Œ์•„๋ณด์ž.

     

    JSX

    ๊ณผ๊ฑฐ ํŽ˜์ด์Šค๋ถ์ด PHP ๋ฅผ ๊ฐœ๋Ÿ‰ํ•ด ๋งŒ๋“ค์—ˆ๋˜ XHP ์— ๊ธฐ์›์„ ๋‘๊ณ  ์žˆ๋Š” ํ•˜๋‚˜์˜ JavaScript ๋ฌธ๋ฒ•์ด๋‹ค

    (JavaScript ๊ฐ€ ์•„๋‹ˆ๋‹ค! ํ•˜์ง€๋งŒ ์•Œ๋ฉด ๋ฐฐ์šฐ๊ธฐ ์‰ฌ์šด..)

    ์ด๋Š” ๋‚˜์ค‘์— ์ƒ์„ธํžˆ ๋‹ค๋ฃจ๋„๋ก ํ•˜๊ฒ ๋‹ค. ์ง€๊ธˆ์€ ๊ฐœ๋…๋งŒ!

     

    Vrtual DOM

    React ๋Š” ์ด๋ฒคํŠธ์— ์˜ํ•ด ๋ฐ์ดํ„ฐ๋ฅผ ๊ด€๋ฆฌํ•˜๋Š” Model ์— ๋ณ€ํ™”๊ฐ€ ์ƒ๊ธฐ๋ฉด Virtual DOM ์„ ์ƒ์„ฑํ•˜์—ฌ ์‹ค์ œ DOM ๊ณผ ๋น„๊ตํ•œ ํ›„, ๋ณ€ํ™”๊ฐ€ ๋ฐœ์ƒํ•œ ๋ถ€๋ถ„๋งŒ ์—…๋ฐ์ดํŠธํ•œ๋‹ค.

    ์ด๋Š” ์ƒ๋‹นํžˆ ํšจ์œจ์ ์ธ๋ฐ, ๋ชจ๋“  ๋ถ€๋ถ„์„ ์ƒˆ๋กญ๊ฒŒ ์ƒ์„ฑํ•˜๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋ผ '๋ณ€๊ฒฝ๋œ ๋ถ€๋ถ„'๋งŒ ์ฐพ๊ณ  ๋ฐ”๊พธ๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค.

    ์ฆ‰, ํ•„์š”ํ•œ ๊ณณ์—๋งŒ ์—…๋ฐ์ดํŠธํ•œ๋‹ค.

     

    Component ๊ธฐ๋ฐ˜

    React ๋Š” ์กฐ๊ฐ์„ ๋ชจ์•„์„œ ์ „์ฒด๋ฅผ ๊ตฌ์„ฑํ•˜๋Š” ๋ฐฉ์‹์ธ๋ฐ, ๊ทธ ์กฐ๊ฐ์ด Component ๋ผ๊ณ  ์ƒ๊ฐํ•˜๋ฉด ๋œ๋‹ค.

    ์žฌ์‚ฌ์šฉํ•˜๋Š” ์ฝ”๋“œ ๋‚ญ๋น„ ์—†์ด, ํ•˜๋‚˜์˜ Component ๋ฅผ ๋งŒ๋“ค์–ด๋‘๊ณ  ์‚ฌ์šฉํ•  ๋ถ€๋ถ„์— ๊ฐ€์ ธ์™€์„œ(import) ์‚ฌ์šฉํ•˜๊ธฐ๋งŒ ํ•˜๋ฉด ๋œ๋‹ค.

    ๋˜ํ•œ ์กฐ๊ฐ์œผ๋กœ ๊ด€๋ฆฌํ•˜๋ฏ€๋กœ ์ฝ”๋“œ์˜ ์œ ์ง€ ๋ณด์ˆ˜๊ฐ€ ์šฉ์ดํ•˜๋‹ค.

     

    ์ฐธ๊ณ ๋กœ,

    ์ด๋ ‡๊ฒŒ '์กฐ๊ฐ'์œผ๋กœ ๋‚˜๋ˆ„์–ด์„œ ๊ฐœ๋ฐœํ•˜๋Š” ๊ฒƒ์„ MVC (Model-View-Controller) ํŒจํ„ด, MVVM (Model-View-ViewModel) ํŒจํ„ด์ด๋ผ๊ณ  ํ•œ๋‹ค. (์†Œํ”„ํŠธ์›จ์–ด ๋””์ž์ธ ํŒจํ„ด์˜ ์ผ์ข…)

    ์ด๋ฆ„์—์„œ ์•Œ ์ˆ˜ ์žˆ๋“ฏ Model-View-Controller ์˜ '์กฐ๊ฐ'๋“ค์ด ๋ชจ์—ฌ ํ•˜๋‚˜์˜ ์†Œํ”„ํŠธ์›จ์–ด๋ฅผ ๊ตฌ์ƒํ•˜๋„๋ก ๋งŒ๋“œ๋Š” ๋ฐฉ์‹์ด๋‹ค.

    - Model: ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ์ •๋ณด(data)

    - View: UI (User-Interface) 

    - Controller : ๋ฐ์ดํ„ฐ์™€ ๋น„์ฆˆ๋‹ˆ์Šค ๋กœ์ง ์‚ฌ์ด์˜ ์ƒํ˜ธ์ž‘์šฉ ๊ด€๋ฆฌ!

     

    ์ฆ‰, React ๋Š” View ๋ฅผ ๋งŒ๋“ค๋„๋ก ๋„์™€์ฃผ๋Š” ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๊ฐ€ ๋˜๊ฒ ๋‹ค.

    ๊ทธ๋ฆฌ๊ณ  ๊ทธ ๋‹จ์œ„๊ฐ€ Component ์ด๋‹ค.

     

    Props  ์™€ State

    ์ด ๋‘˜์€ React ๋ฅผ ๋‹ค๋ฃจ๋ ค๋ฉด ์ž˜ ์•Œ๊ณ , ์ž˜ ์„ค๊ณ„ํ•ด์„œ ๊ตฌ์„ฑํ•ด์•ผ ํ•˜๋Š” ๋‘ ์š”์†Œ์ด๋‹ค.

    ์–ด๋–ค ์ž์›์„ ๋ˆ„๊ฐ€ ์–ด๋””๊นŒ์ง€ ์ ‘๊ทผ ๊ฐ€๋Šฅํ•œ์ง€์— ๋Œ€ํ•œ ๊ฒƒ์ด๋‹ค.(ex. ๋‚ด๋ถ€ ์ปดํฌ๋„ŒํŠธ์—๋Š” ์–ด๋–ค state, ์™ธ๋ถ€ ์ปดํฌ๋„ŒํŠธ์—์„œ ์–ด๋–ค Props ๋ฅผ ๋„˜๊ฒจ์ค„์ง€ ๋“ฑ๋“ฑ..)

     

    ์ด ์—ญ์‹œ ๋‚˜์ค‘์— ์ž์„ธํžˆ ๋‹ค๋ฃจ๊ฒ ๋‹ค. ์ง€๊ธˆ์€ ์™ธ๋ถ€์™€ ๋‚ด๋ถ€ ์ปดํฌ๋„ŒํŠธ์˜ ๋ฐ์ดํ„ฐ ๋ผ๋Š” ์ •๋„๋งŒ ์•Œ๋ฉด ๋œ๋‹ค.

    (์ฒ˜์Œ๋ถ€ํ„ฐ ๋งŽ์€ ๊ฐœ๋…์„ ๋ณด๋ฉด ๋จธ๋ฆฌ ์•„ํ”„๋‹ˆ๊นŒ..)


    ์ด์ œ ๋“œ๋””์–ด ์ง„์งœ๋กœ React ๋กœ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ๋งŒ๋“ค๊ธฐ๋ฅผ ์‹œ์ž‘ํ•ด๋ณด์ž.

    Create React App (CRA)

    (๊ณต์‹ ๋ฌธ์„œ: ko.reactjs.org/docs/create-a-new-react-app.html)

     

    CRA ๋Š” React ๋ฅผ ๋ฐฐ์šฐ๊ธฐ์— ๊ฐ„ํŽธํ•œ ํ™˜๊ฒฝ์œผ๋กœ, ์ƒˆ๋กœ์šด ์‹ฑ๊ธ€ ํŽ˜์ด์ง€ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ๋งŒ๋“ค์–ด์ค€๋‹ค.

    ์ด๋ฅผ ์ด์šฉํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” Node.js ์™€ npm ์ด ์„ค์น˜๋˜์–ด ์žˆ์–ด์•ผ ํ•œ๋‹ค.

    (Node.js ์„ค์น˜ํ•˜๊ธฐ (https://nodejs.org/ko/download/)

     

    ๊ทธ๋ฆฌ๊ณ  ์ปค๋งจ๋“œ ์ฐฝ(cmd)์„ ์—ด๊ณ  ๋‹ค์Œ ๋ช…๋ น์–ด๋“ค์„ ์‹คํ–‰์‹œ์ผœ ์ฃผ์ž.

    npx create-react-app my-app
    cd my-app
    npm start

    ๋ช…๋ น์–ด๋ฅผ ์‹คํ–‰ํ•˜๋Š” ๋””๋ ‰ํ† ๋ฆฌ์—์„œ my-app ์ด๋ผ๋Š” ํด๋”๋กœ ์ƒˆ react app ์„ ๋งŒ๋“ค์–ด์ค€๋‹ค.

    ๊ทธ๋ฆฌ๊ณ  my-app ํด๋”์—์„œ $ npm start ๋ฅผ ํ•˜๋ฉด react ๊ฐ€ ์‹œ์ž‘๋œ๋‹ค.

     

    ์ด๋Ÿฐ ํŽ˜์ด์ง€๊ฐ€ ๋œจ๋ฉด ์ž˜ ๋œ ๊ฒƒ์ด๋‹ค.

     

    http://localhost:3000/

    ๐ŸŽ‰React ๋กœ App ์„ ํ•˜๋‚˜ ๋งŒ๋“ค์—ˆ๋‹ค!

    ์ด์ œ ์ด๊ฑธ ๊ฐ€์ง€๊ณ  ์ด๊ฒƒ์ €๊ฒƒ ํ•ด๋ณด๋ฉด์„œ React ๋ฅผ ๋ฐฐ์›Œ๊ฐ€์ž.

     


    Ref.

    React ๊ณต์‹ ๋ฌธ์„œ ko.reactjs.org/docs/create-a-new-react-app.html

    .

     

    ๋Œ“๊ธ€

Designed by Tistory.