header-img
Info :
728x90

React ๋ž€?

Facebook ์—์„œ ์ฃผ๋„ํ•˜์—ฌ ๊ฐœ๋ฐœํ•˜์—ฌ UI๋ฅผ ํšจ๊ณผ์ ์œผ๋กœ ๊ตฌ์ถ•ํ•˜๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉํ•˜๋Š” JS ๊ธฐ๋ฐ˜ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ.

React ์ž์ฒด๋กœ๋Š” Framework ๋ผ๊ณ  ๋ถ€๋ฅผ ์ˆ˜ ์žˆ๋Š” ๊ธฐ์ค€์ธ Routing, ์ƒํƒœ๊ด€๋ฆฌ ๊ธฐ๋ณธ ์ œ๊ณต์„ ์ถฉ์กฑํ•˜์ง€ ๋ชปํ•ด์„œ '๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ'์ด์ง€๋งŒ, React ์ƒํƒœ๊ณ„๋กœ์„œ๋Š” Framework.

 

React ๋“ฑ์žฅ ๋ฐฐ๊ฒฝ

๊ธฐ์กด: ํŠน์ • DOM ์„ ์„ ํƒํ•œ ๋’ค, ํ•ด๋‹น DOM์— ์–ด๋–ค ์ด๋ฒคํŠธ๊ฐ€ ๋ฐœ์ƒํ•˜๋ฉด ์ด์— ๋Œ€ํ•œ change ๊ฐ€ ์ผ์–ด๋‚˜๋„๋ก ์„ค์ •ํ•˜๋Š” ๋ฐฉ์‹.

- ์œ ์ €์™€์˜ ์ƒํ˜ธ์ž‘์šฉ์ด ์ž์ฃผ ์ผ์–ด๋‚˜๋Š” ๊ฒฝ์šฐ ์ด์— ๋”ฐ๋ฅธ ๋ณ€ํ™”๋ฅผ ๋™์ ์œผ๋กœ UI์— ํ‘œํ˜„ํ•ด์•ผ ํ•œ๋‹ค๋ฉด ๊ทธ๋งŒํผ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์ด ๋ณต์žกํ•ด์ง€๊ณ  ๊ด€๋ฆฌ๊ฐ€ ํž˜๋“ค์–ด์ง.

 

React ํŠน์ง•

1. ๊ฐ€์ƒ DOM

   ๊ธฐ์กด์˜ ๊ฒฝ์šฐ ํ•˜๋‚˜์˜ ๋ฐ์ดํ„ฐ๊ฐ€ ๋ฐ”๋€Œ์–ด๋„ ํ™”๋ฉด ์ „์ฒด๊ฐ€ ๋ฆฌ๋ Œ๋”๋ง ๋˜์–ด์„œ ์ „์ฒด ํ™”๋ฉด์ด ๋‹ค์‹œ ๊ทธ๋ ค์ ธ์•ผ ํ•˜๋Š” ๊ตฌ์กฐ์˜€๋Š”๋ฐ

   ๊ฐ€์ƒ DOM์„ ์ ์šฉํ•จ์œผ๋กœ์จ ๋ฐ”๋€Œ๋Š” ๋ถ€๋ถ„ ์ปดํฌ๋„ŒํŠธ๋งŒ ๋ฆฌ๋ Œ๋”ํ•˜์—ฌ ํ™”๋ฉด์„ ๊ฐฑ์‹ ํ•œ๋‹ค.

 

2. ๋‹จ๋ฐฉํ–ฅ ๋ฐ์ดํ„ฐ ๋ฐ”์ธ๋”ฉ

์–‘๋ฐฉํ–ฅ ๋ฐ์ดํ„ฐ ๋ฐ”์ธ๋”ฉ

์‚ฌ์šฉ์ž UI์˜ ๋ฐ์ดํ„ฐ ๋ณ€๊ฒฝ์„ ๊ฐ์‹œํ•˜๋Š” Watcher ์™€ Javascript ๋ฐ์ดํ„ฐ์˜ ๋ณ€๊ฒฝ์„ ๊ฐ์‹œํ•˜๋Š” Watcher๊ฐ€ UI์™€ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ๋ฐ์ดํ„ฐ๋ฅผ ์ž๋™์œผ๋กœ ๋™๊ธฐํ™” ์‹œ์ผœ์ฃผ๋Š” ๋ฐฉ์‹.

- ์ž๋™ ๋™๊ธฐํ™”๋Š” ์ข‹์œผ๋‚˜, ๋ฐ์ดํ„ฐ๊ฐ€ ๋งŽ์•„์ง€๊ฒŒ ๋˜๋ฉด ์ด ๋ฐ์ดํ„ฐ์˜ ๋™๊ธฐํ™”๋ฅผ ์œ„ํ•œ ์ˆ˜ ๋งŽ์€ watcher๊ฐ€ ์ƒ์„ฑ๋˜๋ฏ€๋กœ, ๋ฐ˜๋Œ€๋กœ ์„ฑ๋Šฅ ์ €ํ•˜๊ฐ€ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ์Œ ...

๋‹จ๋ฐฉํ–ฅ ๋ฐ์ดํ„ฐ ๋ฐ”์ธ๋”ฉ

๊ทธ๋ž˜์„œ react ๋Š” ๋‹จ๋ฐฉํ–ฅ ๋ฐ์ดํ„ฐ ๋ฐ”์ธ๋”ฉ์„ ์ฑ„ํƒ.

์‚ฌ์šฉ์ž๊ฐ€ UI๋ฅผ ํ†ตํ•ด ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ์˜ ๋ฐ์ดํ„ฐ๋ฅผ ๊ฐฑ์‹ ํ•  ๋•Œ๋Š”, ์ด๋ฒคํŠธ๋ฅผ ํ†ตํ•ด ๊ฐฑ์‹ ์„ ํ•ด์•ผํ•จ.

- ์–‘๋ฐฉํ–ฅ ๋ฐ์ดํ„ฐ ๋ฐ”์ธ๋”ฉ์ด ๊ฐ€์ง€๋Š” ์„ฑ๋Šฅ์ ์ธ ์ด์Šˆ๋ฅผ ํ•ด๊ฒฐํ•˜๊ณ  ๋” ํ™•์‹คํ•˜๊ฒŒ ๋ฐ์ดํ„ฐ๋ฅผ ์ถ”์ ํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•ด์คŒ.

 

3. JSX

JSX๋Š” ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ์™€ HTML์„ ๋™์‹œ์— ์‚ฌ์šฉํ•˜๋ฉฐ, HTML์— ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ์˜ ๋ณ€์ˆ˜๋“ค์„ ๋ฐ”๋กœ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ์ผ์ข…์˜ ํ…œํ”Œ๋ฆฟ ์–ธ์–ด

const App = ()=> {
	const hello = 'Hello World!';
    return <div>{hello}</div>
}

 

 

4. ์„ ์–ธํ˜• ํ”„๋กœ๊ทธ๋ž˜๋ฐ

- ๋ช…๋ นํ˜• ํ”„๋กœ๊ทธ๋ž˜๋ฐ : ์–ด๋–ป๊ฒŒ(how)์— ์ง‘์ค‘ํ•˜๋Š” ๊ฒƒ / ์„ ์–ธํ˜• ํ”„๋กœ๊ทธ๋ž˜๋ฐ : ๋ฌด์—‡(What)์— ์ง‘์ค‘ํ•˜๋Š” ๊ฒƒ

- ์˜ˆ์‹œ

   * ๋ช…๋ นํ˜• ํ”„๋กœ๊ทธ๋ž˜๋ฐ

const double = (arr) => {
	let results = [];
    for (let i=0;i<arr.length;i++){
    	results.push(arr[i]*2);
    }
    return results;
}

   * ์„ ์–ธํ˜• ํ”„๋กœ๊ทธ๋ž˜๋ฐ

const double = (arr) => {
	return arr.map((ele) => (ele)*2);
}

 

5. ์ปดํฌ๋„ŒํŠธ ๊ธฐ๋ฐ˜

- ์˜ˆ์‹œ

const Title = () => {
	return <h1>Hello world</h1>;
}

const Button = () => {
	return <button>button</button>;
}

const App = () => {
	return (
     <div>
     	<Title/>
        <Button/>
     </div>
    );
};

 

React ์ ์œ ์œจ

 

React ์žฅ๋‹จ์ 

์žฅ์ 

* Controller, Directive, Templete, Model, View ์ฒ˜๋Ÿผ ๋กœ์ง์„ ๋ถ„๋ฆฌํ•˜๋Š” ๊ฒƒ์ด ์•„๋‹Œ, Component ํ•˜๋‚˜๋กœ ๊ด€๋ฆฌ๋ฅผ ํ•จ

* ์„ฑ๋Šฅ์ด ๋›ฐ์–ด๋‚œ garbage collector, ๋ฉ”๋ชจ๋ฆฌ ๊ด€๋ฆฌ ๊ธฐ๋Šฅ์„ ์ง€์›

* UI ์ˆ˜์ •๊ณผ ์žฌ์‚ฌ์šฉ์„ฑ์ด ์ข‹์œผ๋ฉฐ, ์ฝ”๋“œ ๊ฐ€๋…์„ฑ์„ ๋†’์ผ ์ˆ˜ ์žˆ์Œ

* ๋‹ค๋ฅธ Framework ๋‚˜ Library ์™€ ๋ณ‘ํ–‰ํ•˜์—ฌ ์‚ฌ์šฉ ๊ฐ€๋Šฅ. ์ด๋ฏธ ๊ฐœ๋ฐœ ์™„๋ฃŒ ๋œ ํ”„๋กœ์ ํŠธ์—๋„ ์ ์ ˆํ•˜๊ฒŒ ๋…น์ผ ์ˆ˜ ์žˆ๋Š” ํ™•์žฅ์„ฑ๋„ ํฌํ•จ๋จ.

 

๋‹จ์ 

* IE8 ์ดํ•˜ ๋ฒ„์ „์€ ์ง€์›ํ•˜์ง€ ์•Š์Œ

* View ์ด์™ธ์˜ ๊ธฐ๋Šฅ์€ ์ง์ ‘ ๊ตฌํ˜„ํ•˜๊ฑฐ๋‚˜ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๊ตฌํ˜„ํ•ด์•ผ ํ•˜๊ธฐ์— Javascript ๋ฐฐ๊ฒฝ์ง€์‹์ด ํ•„์ˆ˜ ์„ ํ–‰.

* ๋กœ๋”ฉ์‹œ๊ฐ„์ด ๊ธด ํŽธ.

* ์›น์˜ ๊ถ๊ทน์ ์ธ ์ง€ํ–ฅ์ ๊ณผ๋Š” ๋‹ค์†Œ ๋™๋–จ์–ด์ ธ ์žˆ์Œ

   - ์›น์˜ ํ•ต์‹ฌ : ๋ชจ๋“  ๊ฒƒ์„ streaming ํ•˜๋ฉฐ, ํŽ˜์ด์ง€๋“ค์€ HTML ํƒœ๊ทธ๋“ค์„ ๋‚ดํฌํ•˜๊ณ  ๊ฐ€๋ฒผ์šด response๋งŒ ๋ธŒ๋ผ์šฐ์ง•ํ•จ.

   - React : ์‚ฌ์ดํŠธ์— ํ•„์š”ํ•œ JS๋ฅผ ์ฒ˜์Œ์—๋Š” ๊ณต๋ฐฑ ํŽ˜์ด์ง€๋กœ ๋„์šฐ๊ณ , ์ดํ›„ ๋‹ค์šด๋กœ๋“œ ํ•œ๋‹ค. ํ•œ๋ฒˆ ๋‹ค์šด๋กœ๋“œ ํ•œ ์ดํ›„์—๋Š” ๋‹ค์‹œ ๋ฆฌ์†Œ์Šค๋ฅผ ๋‹ค์šดํ•˜์ง€ ์•Š์•„๋„ ๋˜์ง€๋งŒ, ์ฒ˜์Œ ๋ณด์ด๋Š” ๊ฒƒ์ด ์—†๋‹ค๋Š” ๊ฒƒ์ด streaming ๊ณผ์˜ ์ฐจ์ด.

728x90
๋”๋ณด๊ธฐ
FRONTEND/React