๐๐ปโ๏ธํ๋ก ํธ์๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ๋ฑ์ฅ ๋ฐฐ๊ฒฝ
ํ๋ก ํธ์ค๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๊ฐ ๋ฑ์ฅํ๊ฒ ๋ ์ด์ ๋ ๋์ ์ธ ์น ํ์ด์ง๋ฅผ ๋ณด๋ค ํจ์จ์ ์ผ๋ก ์ ์ง ๋ณด์ํ๊ณ ๊ด๋ฆฌํ ์ ์๋๋ก ํ๊ธฐ ์ํจ์ด๋ค.
์ ์ ์น ํ์ด์ง
- ์น ์๋ฒ์ ์ ์ฅ๋์ด ์๋ HTML ๋ฌธ์๋ฅผ ํด๋ผ์ด์ธํธ์๊ฒ ์ ๋ฌํ์ฌ ๋ฐ์ ํ์ด์ง.
- ๋จ์ํ ์ ๋ณด๋ฅผ ์ ๋ฌํ๊ธฐ ์ํ ๋ชฉ์ ์ด๊ธฐ ๋๋ฌธ์ ๋ก๊ทธ์ธ์ ํ๋ค๊ฑฐ๋ ๋ญ๊ฐ ์ ๋ณด๋ฅผ ๋ณด๋ธ๋ค๊ฑฐ๋ ํ๋ ์ํธ์์ฉ์ ์ค์ํ์ง ์์ ์์๋ก ๋ณผ ์ ์๋ค.
- ์ฌ์ฉ์๋ ์๋ฒ์ ์ ์ฅ๋ ๋ฐ์ดํฐ๊ฐ ๋ณ๊ฒฝ๋์ง ์๋ ํ ๊ณ ์ ๋ ์น ํ์ด์ง๋ฅผ ๋ณด๊ฒ ๋๋ค.
- ์ด๋ฐ ๊ฒฝ์ฐ์ ๋จ์ํ HTML๊ณผ CSS์ ๊ตฌ์ฑ๋ง์ผ๋ก๋ ์น ํ์ด์ง๋ฅผ ๋ง๋ค ์ ์๋ค.
- Ex) ํํ์ด์ง์ ํ์ฌ์๊ฐ, ์์๋ฉ๋ด, ํฌํธํด๋ฆฌ์ค ๋ฑ ๋ด์ฉ์ด ๋ณํ์ง ์๊ณ ๊ณ ์ ์ ์ธ ํ์ด์ง.
๋์ ์น ํ์ด์ง
- ์์ฒญ ์ ๋ณด๋ฅผ ์ฒ๋ฆฌํ ํ์ ์ ์๋ HTML ๋ฌธ์๋ฅผ ํด๋ผ์ด์ธํธ์๊ฒ ์ ์กํ๋ ์น ํ์ด์ง
- ์ฌ์ฉ์๋ ์ํฉ, ์๊ฐ, ์์ฒญ ๋ฑ์ ๋ฐ๋ผ ๋ฌ๋ผ์ง๋ ์น ํ์ด์ง๋ฅผ ๋ณด๊ฒ ๋จ
- ๊ฐ์ ํ์ด์ง๋ผ๋ ์ฌ์ฉ์๋ง๋ค ๋ค๋ฅธ ๊ฒฐ๊ณผ์ ์น ํ์ด์ง๋ฅผ ์๋ฒ์ ์์ฒญํ๊ณ ๋ฐ์ ์ ์์
- ์ฐ๋ฆฌ๊ฐ ๋ณด๋ ๋๋ถ๋ถ์ ์น ํ์ด์ง๋ ๋์ ์น ํ์ด์ง
- Ex) ๋ค์ด๋ฒ ๋ธ๋ก๊ทธ, ํฐ์คํ ๋ฆฌ, ํํ์ด์ง ๊ฒ์ํ ๋ฑ
๋์ ์ธ ํ์ด์ง๊ฐ ์ฃผ๋ฅผ ์ด๋ฃจ๋ ์์ฆ, ์น ํ์ด์ง๋ผ๊ธฐ ๋ณด๋ค, ์น ์ ํ๋ฆฌ์ผ์ด์ ์ด๋ผ๋ ์ฉ์ด๊ฐ ๋ ์ด์ธ๋ฆด ์ ๋๋ก ์ ์ ์ธํฐ๋์ ์ ์ฒ๋ฆฌํ๊ธฐ ์ํ ์ํ ๋ณํ๊ฐ ์๋นํ ๋ง์์ก์ต๋๋ค. ์ด๋ฅผ ์์ฐ์ค๋ฌ์ด ์ ์ ์ธํฐํ์ด์ค๋ก ๋ง๋ค์ด์ฃผ๊ธฐ ์ํด์ ํ๋ก ํธ์ค๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ / ํ๋ ์์ํฌ๊ฐ ๋ฑ์ฅํ๊ฒ ๋ ๊ฒ์ ๋๋ค.
๐๐ปโ๏ธํ๋ก ํธ์ค๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ์ฅ์
์น ์ ํ๋ฆฌ์ผ์ด์ ์ด๋ผ ๋ถ๋ฆด ๋งํผ, ๋ค์ํ ์ ์ ์ธํฐ๋์ ์ด ์ ๋ฌ๋๋ค๋ฉด
๊ทธ๋งํผ DOM ์์๋ค ๋ํ ๋ณํ๊ฐ ์ด๋ฃจ์ด์ ธ์ผ ํ๋ค๋ ๊ฒ๊ณผ ๊ฐ๋ค.
DOM ์์๋ค์ด ๋ณํํ๋ค๋ ๊ฒ์ ๋๋ ํธ๋ฆฌ ๋ฆฌ๋ ๋, ์์์ ์คํ์ผ ๊ณ์ฐ, ๋ ์ด์์ ๊ตฌ์ฑ, ํจ์ธํ ํ๋ ๊ณผ์ ์ ๊ฑฐ์ณ์ผ ํ๋ค๋ ๊ฒ๊ณผ ๊ฐ๊ธฐ ๋๋ฌธ์ ์ด๋ฌํ ๊ณผ์ ์ด ๋ฐ๋ณต๋๋ฉด ๋ ์๋ก ๋ธ๋ผ์ฐ์ ๊ฐ ๋ง์ ์ฐ์ฐ์ ํด์ผ ํ๋ค๋ ๊ฒ์ด๊ณ , ์ด๋ ์ ์ฒด์ ์ธ ํ๋ก์ธ์ค์ ๋นํจ์จ์ฑ์ ๊ฐ์ ธ์จ๋ค.
DOM ๋์์๋ฆฌ์ ๋ํด์๋ ์ด๊ธ ์ ์ฐธ๊ณ
๊ฒฐ๊ตญ, ํ๋ก ํธ์ค๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ / ํ๋ ์์ํฌ๋ DOM ๊ด๋ฆฌ์ ์ํ ๋ณํ ๊ด๋ฆฌ๋ฅผ ์ต์ํํ๊ณ , ๊ฐ๋ฐ์๋ ์ค์ง ๊ธฐ๋ฅ ๊ฐ๋ฐ, ์ฌ์ฉ์ ์ธํฐํ์ด์ค์ ๋ณด๋ค ๋ ์ง์คํ ์ ์๋๋ก ๋์์ฃผ๋ ๊ฒ์ด๋ฉฐ ์ด๋ฌํ ๋ชฉ์ ์ ๊ฐ์ง๊ณ ๋ค์ํ ํด๊ฒฐ ๋ฐฉ์, ์ถ๊ตฌ ๋ฐฉํฅ์ ๊ฐ์ง๊ณ ๊ฐ๊ฐ์ ํ๋ก ํธ์คํธ ๋ผ์ด๋ธ๋ฌ๋ฆฌ / ํ๋ ์์ํฌ๊ฐ ํ์ํ๊ฒ ๋์๋ค.
Why React?
๊ฐ๊ฐ์ ํ๋ก ํธ์คํธ ๋ผ์ด๋ธ๋ฌ๋ฆฌ / ํ๋ ์์ํฌ๋ค์ ์ถ๊ตฌํ๋ ๋ฐฉํฅ๊ณผ ํน์ง๋ค์ด ๋ค๋ฅด์ง๋ง
์ด๊ธ์ React๋ฅผ ์ค์ฌ์ผ๋ก ๋ค๋ฃจ๊ณ ์๋ค.
๐๐ปReact ํน์ง
0๏ธโฃVirtual DOM
๋ฆฌ์กํธ์ ๊ฐ์ฅ ํฐ ํน์ง ์ค ํ๋์ด๋ค.
๊ธฐ์กด์ DOM์ ํ์ด์ง๊ฐ ๋ฐ๋ ๋๋ง๋ค, ์ HTML๋ฅผ ๋ก๋ํ๋ฉด์ DOM ์ ์ฒด๋ฅผ ๋ฐ๊พธ๊ฒ ๋๋ค.
ํ์ง๋ง Virtual Dom์ React ์ปดํฌ๋ํธ๊ฐ ๋ฆฌํดํ๋ ๊ฐ์ ์ํด ๋ง๋ค์ด์ ธ์ ์ค์ ๋ณด์ด๊ณ ์๋ DOM๊ณผ ๋น๊ตํด์ ๋ฌ๋ผ์ง ๋ถ๋ถ๋ง ์ฐพ์๋ด์ด ๋ฐ๊พธ๊ฒ ๋๋ค. ์ด๋ฌํ Virtual DOM ๋๋ฌธ์ React์์ ์ปดํฌ๋ํธ ๋จ์์ ๊ฐ๋ฐ์ด ๊ฐ๋ฅํ๊ฒ ๋์๋ค.
Virtual DOM ๋์ ์๋ฆฌ
Virtula DOM์ ์๊ธฐ์ํด ๋จผ์ DOM์ด๋ ๋ญ์ง ์์์ผํ๋ค. DOM(Document Object Model) DOM์ ๋ฌธ์ ๊ฐ์ฒด ๋ชจ๋ธ์ด๋ผ๊ณ ํ๋๋ฐ ๊ฒฐ๊ตญ์ ๋ธ๋ผ์ฐ์ ์์ ๋ค๋ฃฐ HTML ๋ฌธ์๋ฅผ ํ์ฑํ์ฌ "๋ฌธ์์ ๊ตฌ์ฑ์์๋ค์ ๊ฐ์ฒด๋ก ๊ตฌ์กฐํ
greenteafrog.tistory.com
1๏ธโฃReact Native์ ์ฑ ๊ฐ๋ฐ ๊ฐ๋ฅ
์น๊ณผ ์ฑ์ ์์ฒญ๋ ์ฐ๊ด์ด ์๋ค. ์น ํ๋ก์ ํธ๊ฐ ๋๋ React ํ๋๋ง ์ ํ์ฉํ์ฌ๋ React Native๋ก native moblie app์ ๋ง๋ค ์ ์๊ธฐ ๋๋ฌธ.
2๏ธโฃ์ ๋ง์ ์ปค๋ฎค๋ํฐ
๊ฐ๋ฐ์ ํ๋ค๋ณด๋ฉด ๋งํ๋ ๋ถ๋ถ, ์ค๋ฅ๊ฐ ์๋ ๋ถ๋ถ์ด ์๊ธฐ๋ฉฐ, ์ค๋ฅ์ ๋ํ ์ ํ ํด๊ฒฐ๋ฒ๊ณผ ์๋ฃ๋ค์ ๋ฌธ์ ํด๊ฒฐ์ ์์ด์
ํฐ ์๊ฐ๋จ์ถ์ ์ด์ ์ ๊ฐ์ ธ์จ๋ค ์ด์ ์์ด์ React๋ facebook์์ ๋ง๋ค์ด ๊ณ์๋๋ ์ ๋ฐ์ดํธ์ ์๋ฃ๊ฐ ๊ต์ฅํ ๋ฐฉ๋ํ๋ค.
3๏ธโฃComponent ๋จ์ ์์ฑ
์ปดํฌ๋ํธ๋ UI๋ฅผ ๊ตฌ์ฑํ๋ ๊ฐ๋ณ์ ์ธ ๋ทฐ ๋จ์๋ก ์๋ก์, UI ๊ฐ๋ฐ์ ๋ ๊ณ ๋ผ๊ณ ํ๋ค๋ฉด, ์ปดํฌ๋ํธ๋ ๋ธ๋ก ์ญํ ์ ํ๊ฒ ๋ฉ๋๋ค. ์ด๋ฌํ ๋ธ๋ก์ ์กฐ๋ฆฝํด ํ๋์ ์์ฑํ์ ๋ง๋๋ ๊ฒ์ด๋ค.
์ด๋ฌํ ์ปดํฌ๋ํธ๋ค์ ๋๋ ๋จ๊ธฐ์ ๋ค๋ฅธ ๋ถ๋ถ, ๋ ๋ค๋ฅธ ์น์์ ์ฌ์ฌ์ฉ์ด ๊ฐ๋ฅํด์ง๋ฉฐ. ์ด๋ ์์ฐ์ฑ๊ณผ ์ ์ง ๋ณด์๋ฅผ ์ฉ์ดํ๊ฒ ํ๋ค. ๋ธ๋ผ์ฐ์ ํ๋ฉด์์ ๋ณด์ด๋ ํ๋ํ๋์ ๋ฒํผ, ํญ, ์์ด์ฝ ๋ฑ์ด ๋ชจ๋ ์ปดํฌ๋ํธ๋ผ๊ณ ๋ณด๊ณ ์ด ๊ฒ๋ค์ด ๋ชจ์ฌ ํ๋์ ๋ทฐ(VIEW)๋ฅผ ์์ฑํ๊ฒ ๋๋ค.
4๏ธโฃSPA(Single-Page-Application)
SPA(Single-Page-Application)์ด๋ ์๋ฒ๋ก๋ถํฐ ์๋ก์ด ํ์ด์ง๋ฅผ ๋ถ๋ฌ์ค์ง ์๊ณ , ํ์ฌ์ ํ์ด์ง๋ฅผ ๋์ ์ผ๋ก ๋ค์ ์์ฑํ๋ ์น ์ ํ๋ฆฌ์ผ์ด์ ์ ์๋ฏธํ๋ค. ํ๋์ HTML ํ์ด์ง์ ์ ํ๋ฆฌ์ผ์ด์ ์คํ์ ํ์ํ Javascript, CSS ๊ฐ์ ๋ชจ๋ ์์ฐ์ ๋ก๋ํ๋ค.
ํ์ด์ง ๋๋ ํ์ ํ์ด์ง์ ์ํธ์์ฉ์ ์๋ฒ๋ก๋ถํฐ ์๋ก์ด ํ์ด์ง๋ฅผ ๋ถ๋ฌ์ค์ง ์์ผ๋ฏ๋ก ํ์ด์ง๊ฐ ๋ค์ ๋ก๋๋์ง ์๋๋ค. ์ปดํฌ๋ํธ๋ค์ด ๋ชจ์ฌ ํ ํ์ด์ง๋ฅผ ์์ฑํ๊ณ , ํน์ ๋ถ๋ถ๋ง ๋ฐ์ดํฐ๋ฅผ ๋ฐ์ธ๋ฉํ๋ ๊ฐ๋ ์ด๋ค. ์์ฒญ URL์ ๋ฐ๋ผ ๋ธ๋ผ์ฐ์ ์์ ํด๋น URL์ ์ปดํฌ๋ํธ๋ค์ ํธ์ถํ๋ค.
ํ์ด์ง ๊ฐฑ์ ์ ํ์ํ ๋ฐ์ดํฐ๋ง์ ์ ๋ฌ๋ฐ์ ํ์ด์ง๋ฅผ ์ ๋ฐ์ดํธํ๋ฏ๋ก ์ ์ฒด์ ์ธ ํธ๋ํฝ์ด ๊ฐ์๋๋ค.
5๏ธโฃClient-Side-Rendering
React๋ Client-Side-Rendering ๋ฐฉ์์ผ๋ก ๋์ํ๊ณ , SPA๋ฅผ ๋ง๋ค ์ ์๋๋ก ์ง์ํ๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ด๋ค. ๊ธฐ๋ณธ์ ์ผ๋ก HTML์ ๋น์ด์๊ณ , Javascript๊ฐ ๋์ํ๋ฉด์ ๋ฐ์ดํฐ๋ง์ ์ฃผ๊ณ ๋ฐ์์ ํด๋ผ์ด์ธํธ์์ ๋ ๋๋ง์ ์งํํ๋ค.
React ์ฝ๋๊ฐ Javascript ์ฝ๋๋ก ๋ณํ ๋ bundle.js๋ฅผ ๊ฐ๊ณ , ๋ธ๋ผ์ฐ์ ๊ฐ ๊ทธ Javascript ์ฝ๋๋ฅผ ์คํํด์ DOM์ ๊ทธ๋ฆฐ๋ค. ํ์ด์ง ์ ์ฒด๋ฅผ ์์ฒญํ์ง ์๊ณ ํ์ํ ๋ถ๋ถ๋ง ๋ณ๊ฒฝํ๊ฒ ํ๊ธฐ ๋๋ฌธ์, ๋ชจ๋ฐ์ผ ๋คํธ์ํฌ์์๋ ๋น ๋ฅธ ์๋๋ก ๋ ๋๋ง์ด ๊ฐ๋ฅํ๋ค.
ํ์ง๋ง ์๋ฒ์์ ๋ด๋ ค ๋ฐ๋ HTML์ ๋น์ด์๋ ์ํ์ด๋ฏ๋ก, ๊ฒ์ ์์ง ์ต์ ํ(search engine optimization, SEO)์ ๋ถ๋ฆฌํ๋ค๋ ๋จ์ ์ด ์๋ค.
6๏ธโฃJSX
JSX(Javascript + xml)๋ ์๋ฐ์คํฌ๋ฆฝํธ์ ๋ํ ํ์ฅ ๊ตฌ๋ฌธ์ผ๋ก์, ๋ฆฌ์กํธ์์ element(์์)๋ฅผ ์ ๊ณตํด ์ค๋๋ค. ์ฅ์ ์ ๋งค์ฐ ๋ค์ํฉ๋๋ค. ๋จ์ํ ๊ฐ๋ฐ์๊ฐ ๋งํฌ์ ์ฝ๋์ ์ต์ํ๋ค๋ฉด, ๊ทธ๊ฒ๋ง์ผ๋ก๋ JSX๋ฅผ ํตํด ์ปดํฌ๋ํธ๋ฅผ ๊ตฌ์ฑํ๋ ๋ฐ ์ฝ๊ฒ ์ ์ํ ์ ์๋ค๋ ์ฅ์ ์ด ์๋ค.
์๋ ์ฝ๋์์ return () ์ ๊ฐ์ธ์ ธ ์๋ HTML ๋ฌธ๋ฒ๊ณผ ๋งค์ฐ ์ ์ฌํ ์ฝ๋๊ฐ ๋ฐ๋ก JSX์ ๋๋ค.
import React from "react";
import logo from "./logo.svg";
import "./App.css";
const App = () => {
return (
<div className="App">
<header className="App-header">
<img src={logo} className="App-logo" alt="logo" />
<h1 className="App-title">Welcome to React</h1>
</header>
<p className="App-intro">
To get started, edit <code>src/App.js</code> and save to reload.
</p>
</div>
);
};
export default App;
์์ ๊ฐ์ ์ฝ๋๋ creata-react-app์ ํตํด ๋ฆฌ์กํธ ํ๋ก์ ํธ๋ฅผ ์์ฑํ ๋ ํฌํจ๋์ด ์๋ Babel์ด ์๋์ ๊ฐ์ ์ฝ๋๋ก ๋ณํํ์ฌ ์ปดํ์ผ ํด์ค๋๋ค.
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = void 0;
var _react = _interopRequireDefault(require("react"));
var _logo = _interopRequireDefault(require("./logo.svg"));
require("./App.css");
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
const App = () => {
return /*#__PURE__*/_react.default.createElement("div", {
className: "App"
}, /*#__PURE__*/_react.default.createElement("header", {
className: "App-header"
}, /*#__PURE__*/_react.default.createElement("img", {
src: _logo.default,
className: "App-logo",
alt: "logo"
}), /*#__PURE__*/_react.default.createElement("h1", {
className: "App-title"
}, "Welcome to React")), /*#__PURE__*/_react.default.createElement("p", {
className: "App-intro"
}, "To get started, edit ", /*#__PURE__*/_react.default.createElement("code", null, "src/App.js"), " and save to reload."));
};
var _default = App;
exports.default = _default;
๋๋ถ์ ์ฐ๋ฆฌ๋ ์ต์ํ HTML๋ฌธ๋ฒ๊ณผ ์ ์ฌํ JSX๋ฅผ ํตํด ์ปดํฌ๋ํธ๋ฅผ ์์ฑํ ์ ์๊ฒ ๋๋ค.
๐์ถ์ฒ/์ฐธ๊ณ
https://velog.io/@youthfulhps/React-React๋ฅผ-์ฌ์ฉํ๋-์ด์
'๐Library > ๐React' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
๋ฆฌ์กํธ ์ฟผ๋ฆฌ ์ฟผ๋ฆฌํค๋ฅผ ์ด์ฉํ ๊ฒ์, ์นดํ ๊ณ ๋ฆฌ ๊ธฐ๋ฅ, ๋ค์ค ํํฐ (0) | 2023.03.29 |
---|---|
ํด๋์คํ ์ปดํฌ๋ํธ์ ํจ์ํ ์ปดํฌ๋ํธ์ ์ฐจ์ด (0) | 2022.12.09 |