๐ก React
- A JavaScript library for building user interface - React.js๋ SPA ๊ธฐ๋ฐ์ ํ๋ก ํธ์๋ ๊ฐ๋ฐ ํ๋ ์์ํฌ ์ค ํ๋๋ก์, ์ปดํฌ๋ํธ ๋จ์์ ๋ ๋ฆฝ์ ์ธ ๋ธ๋ก์ ์ด์ฉํ ๊ฐ๋ฐ ๋ฐฉ๋ฒ์ ์ด์ฉํ๋ค.
SPA๋?
Single Page Application, ํ๋์ ํ์ด์ง๋ก ์ด๋ฃจ์ด์ง ์ ํ๋ฆฌ์ผ์ด์ ์ด๋ผ๋ ๋ป.
MPA(Multi Page Application)์ ์๋ฐ๋ ๊ฐ๋ SPA↔MPA
- ์ ์ข์๊น?
- ํ๋์ ํ์ด์ง๋ก ๊ตฌ์ฑ๋ ์น์ฑ์ด๋ฏ๋ก ์๋ฒ์ 1ํ ๋ฆฌ์์ค๋ฅผ ์์ฒญํ๊ณ (index.htmlํ๋๋ง ์กด์ฌ)
- ๊ทธ ์ดํ์๋ ํ์ํ ๋, ๋ฐ์ดํฐ๋ง ๋ฐ์์์ ๊ธฐ์กด ํ์ด์ง๋ฅผ ‘์์ ’ํ๋ ๋ฐฉ์์ผ๋ก ํ๋ฉด์ ์์ ํจ. (re-rendering์ด ํ์ํ์ง ์์)
- ์ฌ์ฉ์์๊ฒ ์ต์ ์ UX ๊ฒฝํ ์ ๊ณต
- ์์ข์ ์ ์? SEO
- SEO(Search Engine Optimization)์ ์ํด์๋ HTML ํ์ด์ง ์ ์ฒด๊ฐ ํ์ํ๋ฐ, SPA ํ์ด์ง์ HTML ํ์ผ์ index.html ํ๋๋ฟ์ด๊ธฐ ๋๋ฌธ์ ์์น ์์ง์ด ์ฐพ์ ์๊ฐ ์์ด์ ๊ฒ์์ ์ ์๊ฑธ๋ฆฐ๋ค. ( → next.js๋ก ๋ณด์ )
๋ฆฌ์กํธ ํ๋ก์ ํธ ๋ง๋ค๊ธฐ
- npx create-react-app [๋ง๋ค ํ๋ก์ ํธ ์ด๋ฆ]
- cd [ํ๋ก์ ํธ ์์น]
- yarn start
์ปดํฌ๋ํธ๋?
= ๋ฒฝ๋? ๋ฒฝ๋์ ์์ ์ง์ ์ง๋๋ค. ์ข์์.. ๋๊ธ.. ๋ฑ๋ฑ ๋ชจ๋๊ฐ ํ๋์ ๋ฒฝ๋
- SPA๋ ์ปดํฌ๋ํธ ๋จ์๋ก ๋ณ๊ฒฝ์ฌํญ์ ๋ฐ์ํ๊ธฐ ๋๋ฌธ์ ๊น๋นก์(๋ ๋๋ง)์ด ์์
- ์ปดํฌ๋ํธ๋ฅผ ํตํด UI๋ฅผ ์ฌ์ฌ์ฉ๊ฐ๋ฅํ ๊ฐ๋ณ์ ์ธ ์ฌ๋ฌ ์กฐ๊ฐ์ผ๋ก ๋๋๋ค. JavaScript์ ํจ์์ ์ ์ฌํจ.
- ์ปดํฌ๋ํธ๋ฅผ ๋ง๋ค์ด๋ผ! ⇒ html์ returnํ๋ ํจ์๋ฅผ ๋ง๋ค์ด๋ผ!
- prop์ Input์ผ๋ก๋ฐ๊ณ react Element๋ฅผ ๋ฐํํ๋ค.
์๋ฐ์คํฌ๋ฆฝํธ, jsx(html)์์ญ ์ดํดํ๊ธฐ
import React from "react";
function App() {
// <---- ์๋ฐ์คํฌ๋ฆฝํธ ์์ญ ---->
const clicked = () => {
alert("ํด๋ฆญ");
};
return (
/* <---- HTML/JSX ์์ญ ---->*/
<div
style={{ //์๋ฐ์คํฌ๋ฆฝํธ๋ฅผ ์ฐ๊ธฐ์ํ ๋๊ดํธ ์์, ๊ฐ์ฒด๋ฅผ ์ฐ๊ธฐ ์ํ ๋๊ดํธ
height: "100vh",
display: " flex",
flexDirection: "column",
justifyContent: "center",
alignItems: "center",
}}
>
์ด๊ฒ์ ๋ด๊ฐ ๋ง๋ ์ปดํฌ๋ํธ ์
๋๋ค.
<button id="btn" onClick={clicked}>
ํด๋ฆญ
</button>
</div>
);
}
export default App;
ํ๊ณ
์ค๋๋ก ๋ฆฌ์กํธ๋ฅผ ์์ํ๋ค.
JSX ๋ฌธ๋ฒ์ด๋ ๋ฆฌ์กํธ ํ๊ฒฝ์ด ์์ง ๋ฏ์ค์ด์ ๋ง์ด ํท๊ฐ๋ฆฐ๋ค.
๋ฆฌ์กํธ๋ค์ดํฐ๋ธ๋ก ๋ญ์ง๋ ๋ชจ๋ฅด๊ณ ์ฑ๋ง๋ค๋
์ฝ๋์ ๊ฐ์๊ธฐ ํ์ดํ๊ฐ ์๋์ค๋์ง, ๋๊ดํธ๋ ๋ ์ ๋๋ฒ์ฐ๋์ง
์ ํ ๋ชจ๋ฅธ์ฑ๋ก ๋ง๊ตฌ์ก์ด๋ก ์ฝ๋ฉํ๋ ์์ ์ด ์๊ฐ๋๋ฉด์
์ ์ด๊ฒ ๊ทธ๊ฑฐ์๊ตฌ๋ ํ๊ณ ์๊ฐ์ด ๋ฌ๋ค.
๊ฐ์ธ๊ณผ์ ๋ ๋ ์ด๋ป๊ฒ ํ ์ง ๋ง๋งํ์ง๋ง ์ฐจ๊ทผ์ฐจ๊ทผ ํด๋ด์ผ๊ฒ ๋ค.
'Today I Learned' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
2024.01.19 TIL (0) | 2024.01.19 |
---|---|
2024.01.18 TIL (0) | 2024.01.18 |
2024.01.16 TIL (0) | 2024.01.16 |
2024.01.15 TIL (0) | 2024.01.15 |
2024.01.12 TIL (1) | 2024.01.12 |