We want to hear from you!Take our 2021 Community Survey!
This site is no longer updated.Go to react.dev

์›น์‚ฌ์ดํŠธ์— React ์ถ”๊ฐ€

These docs are old and wonโ€™t be updated. Go to react.dev for the new React docs.

See Add React to an Existing Project for the recommended ways to add React.

React๋Š” ํ•„์š”ํ•œ ๋งŒํผ๋งŒ ์‚ฌ์šฉํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค. ์ ๊ฒŒ๋“  ๋งŽ๊ฒŒ๋“  ๋ง์ด์ฃ .

React๋Š” ์ฒ˜์Œ๋ถ€ํ„ฐ ์ ์ง„์ ์œผ๋กœ ๋„์ž…ํ•  ์ˆ˜ ์žˆ๊ฒŒ ์„ค๊ณ„๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋ž˜์„œ React๋Š” ํ•„์š”ํ•œ ๋งŒํผ๋งŒ ์‚ฌ์šฉํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค. ์•„๋งˆ ๊ธฐ์กด ํŽ˜์ด์ง€์— โ€œ์ƒํ˜ธ์ž‘์šฉโ€์ด๋ผ๋Š” ์กฐ๋ฏธ๋ฃŒ๋ฅผ ์ฒจ๊ฐ€ํ•˜๊ธฐ๋งŒ ํ•˜๊ณ  ์‹ถ์„ ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋Ÿด ๋•Œ React ์ปดํฌ๋„ŒํŠธ๋ฅผ ์“ฐ๋ฉด ์ข‹์Šต๋‹ˆ๋‹ค.

์˜ค๋Š˜๋‚  ์›น์‚ฌ์ดํŠธ์˜ ๋Œ€๋ถ€๋ถ„์€ ์‹ฑ๊ธ€ ํŽ˜์ด์ง€๊ฐ€ ์•„๋‹ˆ๊ณ  ๊ทธ๋ž˜์•ผ ํ•  ํ•„์š”๋„ ์—†์Šต๋‹ˆ๋‹ค. ๋นŒ๋“œ ๋„๊ตฌ ์—†์ด ๋ช‡ ์ค„์˜ ์ฝ”๋“œ๋งŒ์œผ๋กœ ์›น์‚ฌ์ดํŠธ์˜ ์ž‘์€ ๋ถ€๋ถ„์— ๋จผ์ € React๋ฅผ ๋„์ž…ํ•ด๋ณด์„ธ์š”. React์˜ ๋น„์ค‘์„ ์ฒœ์ฒœํžˆ ๋Š˜๋ฆด ์ˆ˜๋„ ์žˆ๊ณ  ์•„๋‹ˆ๋ฉด ๋™์ ์ธ ์œ„์ ฏ์„ ๋ช‡ ๊ฐœ ์ถ”๊ฐ€ํ•˜๋Š” ๊ฒƒ์œผ๋กœ ๋๋‚ผ ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค.


1๋ถ„ ๋‚ด๋กœ React ์ถ”๊ฐ€ํ•˜๊ธฐ

์ด ๊ธ€์—์„œ๋Š” ๊ธฐ์กด ํŽ˜์ด์ง€์— React๋ฅผ ์ถ”๊ฐ€ํ•˜๋Š” ๋ฒ•์— ๋Œ€ํ•ด์„œ ๋‹ค๋ฃน๋‹ˆ๋‹ค. ๊ธฐ์กด์˜ ์›น์‚ฌ์ดํŠธ์—์„œ ์‹œ๋„ ํ•ด๋ณด์…”๋„ ์ข‹๊ณ , ์—ฐ์Šต์‚ผ์•„ ์ƒˆ๋กœ์šด HTML ํŒŒ์ผ์—์„œ ์‹œ๋„ํ•ด๋ณด์…”๋„ ์ข‹์Šต๋‹ˆ๋‹ค.

๋ณต์žกํ•œ ๋„๊ตฌ๋ฅผ ์“ฐ๊ฑฐ๋‚˜ ๋ญ”๊ฐ€๋ฅผ ๋”ฐ๋กœ ์„ค์น˜ํ•ด์•ผ ํ•  ํ•„์š”๋„ ์—†์Šต๋‹ˆ๋‹ค. ์•ฝ๊ฐ„์˜ ์‹œ๊ฐ„๊ณผ ํ•จ๊ป˜ ์ธํ„ฐ๋„ท๋งŒ ์—ฐ๊ฒฐ ๋˜์–ด ์žˆ๋‹ค๋ฉด ์ด ๋ฌธ์„œ์—์„œ ๋‹ค๋ฃจ๋Š” ๊ฒƒ์„ ๋ชจ๋‘ ํ•ด๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์„ ํƒ์‚ฌํ•ญ: ์˜ˆ์‹œ์˜ ์ „์ฒด ์†Œ์Šค์ฝ”๋“œ ๋‹ค์šด๋กœ๋“œ (2KB๋กœ ์••์ถ•๋จ)

1๋‹จ๊ณ„: HTML ํŒŒ์ผ์— DOM ์ปจํ…Œ์ด๋„ˆ ์„ค์น˜

๋จผ์ €, ํŽธ์ง‘ํ•  HTML ํŒŒ์ผ์„ ์—ฝ๋‹ˆ๋‹ค. ๊ทธ ๋‹ค์Œ ๋น„์–ด์žˆ๋Š” <div> ํƒœ๊ทธ๋ฅผ ์ถ”๊ฐ€ํ•ด์ค๋‹ˆ๋‹ค. ์ด ํƒœ๊ทธ๊ฐ€ ๋ฐ”๋กœ React๋ฅผ ํ†ตํ•ด ์›ํ•˜๋Š” ๋‚ด์šฉ์„ ํ‘œ์‹œํ•  ์ˆ˜ ์žˆ๋Š” ์œ„์น˜๊ฐ€ ๋ฉ๋‹ˆ๋‹ค. ๋‹ค์Œ๊ณผ ๊ฐ™์ด ๋ง์ด์ฃ .

<!-- ... existing HTML ... -->

<div id="like_button_container"></div>
<!-- ... existing HTML ... -->

์ด <div> ํƒœ๊ทธ์— ์œ ์ผํ•œ HTML ์†์„ฑ์ธ id๋ฅผ ๋ถ€์—ฌํ•ด์ค๋‹ˆ๋‹ค. ์ด๋ฅผ ํ†ตํ•ด JavaScript๊ฐ€ ํƒœ๊ทธ๋ฅผ ์ฐพ๊ณ  ์ฐพ์€ ํƒœ๊ทธ ์•ˆ์— React ์ปดํฌ๋„ŒํŠธ๋ฅผ ํ‘œ์‹œํ•  ์ˆ˜ ์žˆ๊ฒŒ๋ฉ๋‹ˆ๋‹ค.

ํŒ

์ปจํ…Œ์ด๋„ˆ <div> ํƒœ๊ทธ๋Š” ์ด ์ฒ˜๋Ÿผ <body> ํƒœ๊ทธ ์•ˆ ์ชฝ ์–ด๋””์„œ๋“  ์ถ”๊ฐ€ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ํ•œ ํŽ˜์ด์ง€์—์„œ๋„ ๋…๋ฆฝ์ ์ธ DOM ์ปจํ…Œ์ด๋„ˆ๋ฅผ ์›ํ•˜๋Š” ๋งŒํผ ์ถ”๊ฐ€ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋ณดํ†ต ์ด ํƒœ๊ทธ๋Š” ๋น„์–ด์žˆ์Šต๋‹ˆ๋‹ค. React๊ฐ€ DOM ์ปจํ…Œ์ด๋„ˆ ์•ˆ์— ๋‚ด์šฉ์„ ์ถ”๊ฐ€ํ•ด์ค๋‹ˆ๋‹ค.

2๋‹จ๊ณ„: ์Šคํฌ๋ฆฝํŠธ ํƒœ๊ทธ ์ถ”๊ฐ€ํ•˜๊ธฐ

๊ทธ ๋‹ค์Œ, <script> ํƒœ๊ทธ 3๊ฐœ๋ฅผ ๋‹ซ๋Š” ํƒœ๊ทธ์ธ </body> ์•ž์— ์ถ”๊ฐ€ํ•ด์ค๋‹ˆ๋‹ค.

  <!-- ... ๋‹ค๋ฅธ HTML ... -->

  <!-- React๋ฅผ ์‹คํ–‰. -->
  <!-- ์ฃผ์˜: ์‚ฌ์ดํŠธ๋ฅผ ๋ฐฐํฌํ•  ๋•Œ๋Š” "development.js"๋ฅผ "production.min.js"๋กœ ๋Œ€์ฒดํ•˜์„ธ์š”. -->
  <script src="https://unpkg.com/react@18/umd/react.development.js" crossorigin></script>  <script src="https://unpkg.com/react-dom@18/umd/react-dom.development.js" crossorigin></script>
  <!-- ๋งŒ๋“  React ์ปดํฌ๋„ŒํŠธ๋ฅผ ์‹คํ–‰. -->
  <script src="like_button.js"></script>
</body>

์ฒ˜์Œ ๋‘ ํƒœ๊ทธ๋Š” React๋ฅผ ์‹คํ–‰์‹œํ‚ค๊ณ  3๋ฒˆ ์งธ ์ฝ”๋“œ๋Š” ๋งŒ๋“  ์ปดํฌ๋„ŒํŠธ๋ฅผ ์‹คํ–‰์‹œํ‚ต๋‹ˆ๋‹ค.

3๋‹จ๊ณ„: React ์ปดํฌ๋„ŒํŠธ ๋งŒ๋“ค๊ธฐ

like_button.js ๋ผ๋Š” ์ด๋ฆ„์œผ๋กœ HTML ํŽ˜์ด์ง€ ์˜†์— ์ƒˆ ํŒŒ์ผ์„ ๋งŒ๋“ญ๋‹ˆ๋‹ค.

์ด ์Šคํƒ€ํ„ฐ ์ฝ”๋“œ ๋ฅผ ์—ด๊ณ  ์ฝ”๋“œ๋ฅผ ๋ฐฉ๊ธˆ ๋งŒ๋“  ํŒŒ์ผ์— ๋ณต์‚ฌํ•ด์ค๋‹ˆ๋‹ค.

ํŒ

์ด ์ฝ”๋“œ๋Š” LikeButton ์ด๋ผ๋Š” React ์ปดํฌ๋„ŒํŠธ๋ฅผ ์ •์˜ํ•ด์ค๋‹ˆ๋‹ค. ์ง€๊ธˆ ๋‹น์žฅ ์ดํ•ด๊ฐ€ ์•ˆ ๋˜์–ด๋„ ๊ฑฑ์ • ๋งˆ์„ธ์š”. React์— ๋Œ€ํ•œ ๊ฐœ๋…์„ ์Œ“์•„ ๋‚˜๊ฐ€๋Š” ๊ฒƒ์€ ๋‚˜์ค‘์— ์ž์Šต์„œ์™€ ์ฃผ์š” ๊ฐœ๋… ๊ฐ€์ด๋“œ์—์„œ ๋‹ค๋ฃฐ ๊ฒ๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‹ˆ ์ง€๊ธˆ ๋‹น์žฅ์€, ์ปดํฌ๋„ŒํŠธ๋ฅผ ํ™”๋ฉด์— ๋„์šฐ๋Š” ๋ฐ ์ง‘์ค‘ํ•ด๋ด…์‹œ๋‹ค!

like_button.js์˜ ๋งจ ๋’ท ์ค„, ๊ทธ๋Ÿฌ๋‹ˆ๊นŒ ์•„๊นŒ ๋ถ™์—ฌ๋„ฃ์€ ์Šคํƒ€ํ„ฐ ์ฝ”๋“œ ๋’ค์— ๋‹ค์Œ ์ฝ”๋“œ ์„ธ ์ค„์„ ์ถ”๊ฐ€ํ•ด์ค๋‹ˆ๋‹ค.

// ... ๋ณต์‚ฌํ–ˆ๋˜ ์Šคํƒ€ํ„ฐ ์ฝ”๋“œ ...

const domContainer = document.querySelector('#like_button_container');const root = ReactDOM.createRoot(domContainer);root.render(e(LikeButton));

์ด ์„ธ ์ค„์˜ ์ฝ”๋“œ๋Š” ์ฒซ ๋‹จ๊ณ„์—์„œ HTML ํŽ˜์ด์ง€์— ์ถ”๊ฐ€ํ–ˆ๋˜ <div> ํƒœ๊ทธ๋ฅผ ์ฐพ์•„์ฃผ๊ณ , ํ•ด๋‹น ํƒœ๊ทธ์— React ์•ฑ์„ ๋งŒ๋“ค์–ด์ฃผ๊ณ , ๊ทธ ์•ˆ์— โ€œ์ข‹์•„์š”โ€ ๋ฒ„ํŠผ React ์ปดํฌ๋„ŒํŠธ๋ฅผ ์ถ”๊ฐ€ํ•ด์ค๋‹ˆ๋‹ค.

๋‹ค ๋๋‚ฌ์Šต๋‹ˆ๋‹ค!

๋‹ค์Œ ๋‹จ๊ณ„๋Š” ์—†์Šต๋‹ˆ๋‹ค. ๋ฐฉ๊ธˆ ์›น์‚ฌ์ดํŠธ์— ์ฒ˜์Œ์œผ๋กœ React ์ปดํฌ๋„ŒํŠธ๋ฅผ ์ถ”๊ฐ€ํ–ˆ์Šต๋‹ˆ๋‹ค.

๋‹ค์Œ ์ฐจ๋ก€๋“ค์— React๋ฅผ ๊ธฐ์กด ํ”„๋กœ์ ํŠธ์— ๊ฒฐํ•ฉํ•˜๋Š”๋ฐ ๋„์›€์ด ๋ ๋งŒํ•œ ์ •๋ณด๋“ค์ด ๋” ์žˆ์Šต๋‹ˆ๋‹ค.

์˜ˆ์‹œ ์ „์ฒด ์†Œ์Šค ์ฝ”๋“œ ๋ณด๊ธฐ

์˜ˆ์‹œ ์ „์ฒด ๋‹ค์šด๋กœ๋“œ (2KB๋กœ ์••์ถ•๋จ)

ํŒ: ์ปดํฌ๋„ŒํŠธ ์žฌ์‚ฌ์šฉ

๋ณดํ†ต์€ ํ•˜๋‚˜์˜ ์›นํŽ˜์ด์ง€์— ์—ฌ๋Ÿฌ React ์ปดํฌ๋„ŒํŠธ๋ฅผ ์„ค์น˜ํ•˜๊ฒŒ ๋ฉ๋‹ˆ๋‹ค. ๋‹ค์Œ ์˜ˆ์‹œ๋Š” โ€œ์ข‹์•„์š”โ€ ๋ฒ„ํŠผ 3๊ฐœ๋ฅผ ๋งŒ๋“ค๊ณ  ๊ทธ ์ปดํฌ๋„ŒํŠธ๋“ค์— ๋ฐ์ดํ„ฐ๋ฅผ ๋„˜๊ฒจ์ฃผ๋Š” ์ฝ”๋“œ์ž…๋‹ˆ๋‹ค.

์˜ˆ์‹œ ์ „์ฒด ์†Œ์Šค ์ฝ”๋“œ ๋ณด๊ธฐ

์˜ˆ์‹œ ์ „์ฒด ๋‹ค์šด๋กœ๋“œ (2KB๋กœ ์••์ถ•๋จ)

์ฃผ์˜

์ด ๋ฐฉ๋ฒ•์€ ๋Œ€๊ฐœ ํŽ˜์ด์ง€์—์„œ React๋กœ ๋งŒ๋“ค์–ด์ง„ ๋ถ€๋ถ„๋“ค์ด ์„œ๋กœ ๊ฒฉ๋ฆฌ ๋˜์–ด์žˆ์„ ๋•Œ ์œ ์šฉํ•ฉ๋‹ˆ๋‹ค. React ์ฝ”๋“œ ๋‚ด์—์„œ๋Š” ์ปดํฌ๋„ŒํŠธ ํ•ฉ์„ฑ์„ ์‚ฌ์šฉํ•˜๋Š” ํŽธ์ด ๋” ์‰ฝ์Šต๋‹ˆ๋‹ค.

ํŒ: ํ”„๋กœ๋•์…˜์„ ์œ„ํ•œ JavaScript์˜ ์••์ถ•

ํ”„๋กœ๋•์…˜์„ ์œ„ํ•ด ์›น์‚ฌ์ดํŠธ๋ฅผ ๋ฐฐํฌํ•˜๊ธฐ ์ „์— JavaScript ํŒŒ์ผ์„ ์••์ถ•ํ•˜์ง€ ์•Š๋Š”๋‹ค๋ฉด ์›น์‚ฌ์ดํŠธ๋ฅผ ์‚ฌ์šฉํ•  ๋•Œ ๋ˆˆ์— ๋„๋Š” ์„ฑ๋Šฅ ์ €ํ•˜๊ฐ€ ์ผ์–ด๋‚  ๊ฒ๋‹ˆ๋‹ค.

์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์Šคํฌ๋ฆฝํŠธ๋ฅผ ์ด๋ฏธ ์••์ถ•ํ–ˆ์„ ๊ฒฝ์šฐ ๋ฐฐํฌ๋œ HTML ํŒŒ์ผ์ด production.min.js๋กœ ๋๋‚˜๋Š” React ํŒŒ์ผ์„ ํ™•์‹คํžˆ ์‹คํ–‰ํ•˜๊ธฐ๋งŒ ํ•˜๋ฉด ์‚ฌ์ดํŠธ๋Š” ํ”„๋กœ๋•์…˜ ์ค€๋น„๊ฐ€ ์™„๋ฃŒ๋œ ๊ฒ๋‹ˆ๋‹ค.

<script src="https://unpkg.com/react@18/umd/react.production.min.js" crossorigin></script>
<script src="https://unpkg.com/react-dom@18/umd/react-dom.production.min.js" crossorigin></script>

์Šคํฌ๋ฆฝํŠธ๋ฅผ ์••์ถ•ํ•˜๋Š” ์ ˆ์ฐจ๊ฐ€ ๋”ฐ๋กœ ์—†๋‹ค๋ฉด ์ด ์‚ฌ์ดํŠธ๋ฅผ ์ฐธ๊ณ ํ•ด์„œ ์„ค์ •ํ•ด๋ณด์„ธ์š”.

์„ ํƒ์‚ฌํ•ญ: JSX๋กœ React ํ•ด๋ณด๊ธฐ

์ง€๊ธˆ๊นŒ์ง€ ๋‹ค๋ค˜๋˜ ์˜ˆ์‹œ๋“ค์€ ๋ธŒ๋ผ์šฐ์ €๊ฐ€ ๊ธฐ๋ณธ์ ์œผ๋กœ ์ง€์›ํ•˜๋Š” ์š”์†Œ๋“ค๋งŒ์„ ์‚ฌ์šฉํ–ˆ์Šต๋‹ˆ๋‹ค. ๋•Œ๋ฌธ์— React๊ฐ€ ์–ด๋–ค ๊ฒƒ์„ ํ‘œ์‹œํ• ์ง€ ๊ฒฐ์ • ํ•ด์ฃผ๋Š” JavaScript์˜ ํ•จ์ˆ˜๋“ค์„ ์‚ฌ์šฉํ–ˆ์Šต๋‹ˆ๋‹ค.

const e = React.createElement;

// "์ข‹์•„์š”" <button>์„ ํ‘œ์‹œ
return e(
  'button',
  { onClick: () => this.setState({ liked: true }) },
  'Like'
);

ํ•˜์ง€๋งŒ, React์—์„œ๋Š” JSX๋ผ๋Š” ๋˜ ๋‹ค๋ฅธ ์„ ํƒ์ง€๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.

//  "์ข‹์•„์š”" <button>์„ ํ‘œ์‹œ
return (
  <button onClick={() => this.setState({ liked: true })}>
    Like
  </button>
);

์œ„ ๋‘ ์ฝ”๋“œ๋“ค์€ ๊ฐ™์€ ๊ธฐ๋Šฅ์„ ์ˆ˜ํ–‰ํ•ฉ๋‹ˆ๋‹ค. JSX๋Š” ํ•„์ˆ˜๊ฐ€ ์•„๋‹Œ ์„ ํƒ์‚ฌํ•ญ์ด์ง€๋งŒ ์‚ฌ๋žŒ๋“ค์€ UI ์ฝ”๋“œ๋ฅผ ์งค ๋•Œ JSX๋ฅผ ์“ฐ๋Š” ๊ฒƒ์ด ๋” ํŽธ๋ฆฌํ•˜๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. React์™€ ๋‹ค๋ฅธ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋“ค์—์„œ๋„ ๋ง์ด์ฃ .

์ด ์˜จ๋ผ์ธ ๋ณ€ํ™”๊ธฐ๋ฅผ ํ†ตํ•ด์„œ JSX๋กœ ์—ฌ๋Ÿฌ ๊ฐ€์ง€ ์ž‘์—…์„ ํ•ด๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

JSX ๋น ๋ฅด๊ฒŒ ์‹œ๋„ํ•ด๋ณด๊ธฐ

๊ธฐ์กด ํ”„๋กœ์ ํŠธ์—์„œ JSX ํƒœ๊ทธ๋ฅผ ์จ๋ณด๋Š” ์ œ์ผ ๋น ๋ฅธ ๋ฐฉ๋ฒ•์€ ์ด <script> ํƒœ๊ทธ๋ฅผ ์ง‘์–ด๋„ฃ๋Š” ๊ฒ๋‹ˆ๋‹ค.

<script src="https://unpkg.com/babel-standalone@6/babel.min.js"></script>

์ด์ œ ์–ด๋–ค <script> ํƒœ๊ทธ์—์„œ๋“  type="text/babel"์„ฑ์งˆ์„ ์ถ”๊ฐ€ํ•˜๋ฉด JSX๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด JSX๋ฅผ ์‚ฌ์šฉํ•œ ์˜ˆ์‹œ HTML ํŒŒ์ผ๋กœ ์—ฌ๋Ÿฌ ๊ฐ€์ง€ ์ž‘์—…๋“ค์„ ํ•ด๋ณด์„ธ์š”.

์ด๋Ÿฐ ์‹์˜ ์ ‘๊ทผ ๋ฐฉ๋ฒ•์€ ๊ณต๋ถ€ ๋ชฉ์ ์ด๋‚˜ ๊ฐ„๋‹จํ•œ ๋ฐ๋ชจ ์‚ฌ์ดํŠธ๋ฅผ ๋งŒ๋“ค๊ธฐ ์œ„ํ•จ์ด๋ผ๋ฉด ๊ดœ์ฐฎ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜, ์ด ๋ฐฉ๋ฒ•์€ ์‚ฌ์ดํŠธ๋ฅผ ๋А๋ฆฌ๊ฒŒ ๋งŒ๋“ค๊ณ  ํ”„๋กœ๋•์…˜์—์„œ๋Š” ๋งž์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ํ•œ ๋‹จ๊ณ„ ์•ž์œผ๋กœ ๋‚˜์•„๊ฐˆ ์ค€๋น„๊ฐ€ ๋˜์—ˆ๋‹ค๋ฉด ์ƒˆ๋กœ ์ถ”๊ฐ€ํ•œ <script> ํƒœ๊ทธ์™€ type="text/babel" ์–ดํŠธ๋ฆฌ๋ทฐํŠธ๋ฅผ ์ œ๊ฑฐํ•ด๋ณด์„ธ์š”. ๋‹ค์Œ ์ฐจ๋ก€์—์„œ๋Š” <script> ํƒœ๊ทธ๋ฅผ ์ž๋™์œผ๋กœ ๋ณ€ํ™˜์‹œ์ผœ์ค„ JSX ์ „์ฒ˜๋ฆฌ๊ธฐ๋ฅผ ๋งŒ๋“ค ๊ฒ๋‹ˆ๋‹ค.

ํ”„๋กœ์ ํŠธ์— JSX ์ถ”๊ฐ€ํ•˜๊ธฐ

JSX๋ฅผ ํ”„๋กœ์ ํŠธ์— ์ถ”๊ฐ€ํ•˜๋Š” ๋ฐ์—๋Š” ๋ณต์žกํ•œ ๋ฒˆ๋“ค๋Ÿฌ๋‚˜ ๊ฐœ๋ฐœ ์„œ๋ฒ„๊ฐ€ ํ•„์š”ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ํ•ต์‹ฌ์€, JSX๋ฅผ ์ถ”๊ฐ€ํ•˜๋Š” ๊ฑด ๋งˆ์น˜ CSS ์ „์ฒ˜๋ฆฌ๊ธฐ๋ฅผ ์ถ”๊ฐ€ํ•˜๋Š” ๊ฒƒ๊ณผ ๊ฐ™๋‹ค๋Š” ๊ฒ๋‹ˆ๋‹ค. ์˜ค์ง ํ•„์š”ํ•œ ๊ฑด ์ปดํ“จํ„ฐ์— Node.js๋ฅผ ์„ค์น˜ํ•˜๋Š” ๊ฒ๋‹ˆ๋‹ค.

ํ„ฐ๋ฏธ๋„์—์„œ ํ”„๋กœ์ ํŠธ ํŒŒ์ผ์— ์ ‘๊ทผํ•˜๊ณ  ๋‹ค์Œ ๋‘ ๋ช…๋ น์–ด๋ฅผ ๋ถ™์—ฌ๋„ฃ๊ธฐ ํ•˜์„ธ์š”.

  1. 1๋‹จ๊ณ„: npm init -y ๋ฅผ ์‹คํ–‰ํ•˜์„ธ์š”. (์‹คํŒจํ•œ๋‹ค๋ฉด ์—ฌ๊ธฐ์„œ ํ•ด๊ฒฐํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.)
  2. 2๋‹จ๊ณ„: npm install babel-cli@6 babel-preset-react-app@3๋ฅผ ์‹คํ–‰ํ•˜์„ธ์š”.

ํŒ

JSX ์ „์ฒ˜๋ฆฌ๊ธฐ๋ฅผ ์„ค์น˜ํ•  ๋•Œ npm์€ ์—ฌ๊ธฐ์„œ๋งŒ ์“ฐ๋ฉด ๋ฉ๋‹ˆ๋‹ค. ๋‹ค๋ฅธ ๋‹จ๊ณ„์—์„œ๋Š” npm์ด ์“ฐ์ผ ์ผ์ด ์—†์Šต๋‹ˆ๋‹ค. React์™€ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์ฝ”๋“œ๋Š” ๋‘˜๋‹ค ๋˜‘๊ฐ™์ด <script> ํƒœ๊ทธ๋กœ ์œ ์ง€ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ถ•ํ•˜ํ•ฉ๋‹ˆ๋‹ค! ํ”„๋กœ์ ํŠธ์— ํ”„๋กœ๋•์…˜ ์ค€๋น„๊ฐ€ ๋œ JSX ์„ค์ •์„ ๋๋งˆ์ณค์Šต๋‹ˆ๋‹ค.

JSX ์ „์ฒ˜๋ฆฌ๊ธฐ ์‹คํ–‰ํ•˜๊ธฐ

src ํด๋”๋ฅผ ๋งŒ๋“ค๊ณ  ๋‹ค์Œ ํ„ฐ๋ฏธ๋„ ๋ช…๋ น์–ด๋ฅผ ์‹คํ–‰ํ•˜์„ธ์š”.

npx babel --watch src --out-dir . --presets react-app/prod

์ฃผ์˜

npx๋Š” ์˜คํƒ€๊ฐ€ ์•„๋‹™๋‹ˆ๋‹ค. โ€” npm 5.2๋ฒ„์ „ ์ด์ƒ์— ๋‚ด์žฅ๋œ ํŒจํ‚ค์ง€ ์‹คํ–‰ ๋„๊ตฌ์ž…๋‹ˆ๋‹ค.

โ€babel ํŒจํ‚ค์ง€ ์„ค์น˜๊ฐ€ ์ž˜๋ชป ์ˆ˜ํ–‰๋˜์—ˆ์Šต๋‹ˆ๋‹ค.โ€๋ผ๋Š” ์—๋Ÿฌ ๋ฉ”์‹œ์ง€๋ฅผ ๋ณด์•˜๋‹ค๋ฉด, ๊ทธ ์ „ ๋‹จ๊ณ„๋“ค์—์„œ ๋ช‡ ๊ฐ€์ง€ ๋†“์ณค์„ ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค. ๋™์ผํ•œ ํด๋”์—์„œ ์ด๋ฅผ ์‹คํ–‰ํ•˜๊ณ  ๋‹ค์‹œ ์‹œ๋„ํ•ด๋ณด์„ธ์š”.

๋๋‚  ๋•Œ ๊นŒ์ง€ ๊ธฐ๋‹ค๋ฆด ํ•„์š”๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค. ์ด ๋ช…๋ น์–ด๋Š” ์ž๋™ํ™” ๋œ JSX ๊ฐ์‹œ๊ธฐ๋ฅผ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค.

JSX ์Šคํƒ€ํ„ฐ ์ฝ”๋“œ๋ฅผ ํ†ตํ•ด src/like_button.js๋ผ๋Š” ํŒŒ์ผ์„ ๋งŒ๋“ค์–ด์ฃผ๋ฉด, ๊ฐ์‹œ๊ธฐ๊ฐ€ ์ „์ฒ˜๋ฆฌ ๋˜์–ด ๋ธŒ๋ผ์šฐ์ €์™€ ํ˜ธํ™˜๋˜๋Š” ์ˆœ์ˆ˜ JavaScript๋กœ ๊ตฌ์„ฑ๋œ like_button.js๋ฅผ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค. JSX๋ฅผ ํฌํ•จํ•œ ์†Œ์Šค ํŒŒ์ผ์„ ํŽธ์ง‘ํ•˜๋ฉด ์ด ๊ณผ์ •์ด ์ž๋™์œผ๋กœ ๋‹ค์‹œ ์‹คํ–‰๋ฉ๋‹ˆ๋‹ค.

๋ค์œผ๋กœ ์ด ๊ฐ์‹œ๊ธฐ๋Š” ๊ตฌํ˜• ๋ธŒ๋ผ์šฐ์ €์™€์˜ ํ˜ธํ™˜์„ฑ ๋ฌธ์ œ๋ฅผ ๊ฑฑ์ •ํ•  ํ•„์š” ์—†์ด ํด๋ž˜์Šค์™€ ๊ฐ™์€ ๋ชจ๋˜ JavaScript ๋ฌธ๋ฒ•์„ ์“ธ ์ˆ˜ ์žˆ๊ฒŒ ํ•ด์ค๋‹ˆ๋‹ค. ์•„๊นŒ ์‚ฌ์šฉํ–ˆ๋˜ ๋„๊ตฌ๋Š” Babel์ด๋ผ๊ณ  ๋ถ€๋ฆ…๋‹ˆ๋‹ค. Babel์— ๋Œ€ํ•œ ์ž์„ธํ•œ ์ •๋ณด๋Š” ๊ณต์‹ ๋ฌธ์„œ์—์„œ ๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ด๋Ÿฐ ๋นŒ๋“œ ๋„๊ตฌ๋“ค์— ์ต์ˆ™ํ•ด์ง€๊ณ  ๋” ๋งŽ์€ ๊ฒƒ์„ ํ•ด๋ณด๊ณ  ์‹ถ์–ด์ง„๋‹ค๊ณ  ๋А๋ผ๊ธฐ ์‹œ์ž‘ํ•œ๋‹ค๋ฉด, ๋‹ค์Œ ๋ฌธ์„œ ์—์„œ ๊ฐ€์žฅ ๋„๋ฆฌ ์“ฐ์ด๊ณ  ์ ‘๊ทผ์„ฑ์ด ์ข‹์€ ํˆด์ฒด์ธ๋“ค์„ ์†Œ๊ฐœํ•˜๊ณ  ์žˆ์œผ๋‹ˆ ํ™•์ธํ•ด๋ณด์„ธ์š”. ๊ทธ๋ ‡์ง€ ์•Š์•„๋„ ๊ดœ์ฐฎ๋‹ค๋ฉด, ์ด ์Šคํฌ๋ฆฝํŠธ ํƒœ๊ทธ๋งŒ์œผ๋กœ๋„ ์ถฉ๋ถ„ํ•ฉ๋‹ˆ๋‹ค!

Is this page useful?Edit this page