**ํญํด 9๊ธฐ 2์ฃผ์ฐจ์ ๋ง๋ฌด๋ฆฌ์ธ ์๊ณ ๋ฆฌ์ฆ ํ
์คํธ๋ฅผ ๋ง์น๊ณ ์ฃผํน๊ธฐ ์ฃผ์ฐจ์ ๋ค์ด์๊ฒ ๋์๋ค.
๋ณธ๊ฒฉ์ ์ผ๋ก react๋ฅผ ๋ฐฐ์ฐ๊ฒ ๋์ด ์์งํ ๋งํด, ๋ง์ด ๋ค๋ ์๋ ์ํ์ด๋ค.
ํฅ๋ฏธ๊ฐ ๋ง๊ตฌ๋ง๊ตฌ ์์๋ ๊น์ ๋ฆ๊ฒ๋๋ง, TIL๋ฅผ ์จ๋ณด๋ ค๊ณ ํ๋ค~**
Node.js ์ค์น & yarn ์ค์น
์ฒ์์ Node ๊ณต์ ํํ์ด์ง์์ Node.js
๋ฅผ ๋ฒ์ ผ์ ์ค์นํ๋ค. ์ด์ ์ ์๋ฐ์คํฌ๋ฆฝํธ ์ฝ๋๋ฅผ Node ํ๋ซํผ์์ ์ฌ์ฉํ๊ธฐ์ ์๋ง ์ค์น๊ฐ ๋์ด์์ ๊ฒ์ด๋ค.
terminal
ํน์ powershell
์์ node -v
๋ฅผ ์ณ๋ณธ๋ค. node -v ๋ก node ๋ฒ์ ์ ํ์ธํ๋ค.์ด๋ก ์ธํด NPM (Node Package Manager)
๊ฐ ์ฌ์ฉ์ด ๊ฐ๋ฅํด์ง๋ค. ์ด npm ์ ํตํ์ฌ ์ฌ๋ฌ ํจํค์ง๋ฅผ ๋ค์ด๋ฐ์ ํ์ฉํ ์ ์๋ค. ๊ทธ๋ฐ๋ฐ ์ด npm ๋ง๊ณ ๋ค๋ฅธ package manager ๋ ์ค์น๋ฅผ ํด์ผํ๋ค. ๊ทธ๊ฒ์ ๋ฐ๋ก yarn
!
์ค์น ๋ฐฉ๋ฒ์ npm install -g yarn
terminal
ํน์ powershell
์์ yarn -v
๋ฅผ ์ณ๋ณธ๋ค. yarn -v ๋ก yarn ๋ฒ์ ์ ํ์ธํ๋ค.์ด yarn ์ ํตํด npm ์ผ๋ก ์ค์น๊ฐ ํ๋ ํจํค์ง๋ค์ ๋ ์์ํ๊ฒ ์ด์ฉํ ์ ์๋ค.
yarn add [ํจํค์ง ์ด๋ฆ]
์ผ๋ก ์ค์นํ ์ ์๋ค.
CRA (Create React-App)
React ํ๋ก์ ํธ๋ฅผ ๋ง๋๋ ค๋ฉด, ํ๋ก์ ๋น
ํ๋ก์ ํธ ์์ฑ์ด ์๋ฃ๋์๋ค๊ณ ํ๋ฉด, cd [ํ๋ก์ ํธ ๋ช
]
์ผ๋ก ํด๋น ํ๋ก์ ํธ์ ๋ค์ด๊ฐ๊ฒ ๋๋ฉด dev server ๋ฐ build ๊ฐ ๊ฐ๋ฅํด์ง๋ค.
npm start
๋ก ๋ฐฐํฌ ์ ์ ๊ฐ๋ฐ ์๋ฒ๋ก ํ๋ก์ ํธ๋ฅผ ๋ฏธ๋ฆฌ ๋ณด๋๊ฒ ๊ฐ๋ฅํด์ง๋ค.
react์ ๋ํด ์ฌ์ ์กฐ์ฌ๋ฅผ ํ๋ ๊ฐ์ด๋ฐ โviteโ ๋ผ๋ ํ๋ก ํธ์๋ ํด์ ์๊ฒ ๋์๋ค.
Vue ์ฐฝ์์์ธ ์๋ฐ ์ ๊ฐ ๋ง๋ค์์ผ๋ฉฐ, Vue, React, Svelte์ ๋น๋ ๋๊ตฌ ์ญํ ์ ํ๊ณ ์๋ค๊ณ ํ๋ค.
vite๋ ์๋ฐ์คํฌ๋ฆฝํธ ๋ค์ดํฐ๋ธ ๋ชจ๋์ ๊ธฐ๋ฐ์ผ๋ก ํ ๋ฐ๋ธ ์๋ฒ๋ก webpack
์ ๋์ฒดํ์ฌ ๋ฒ๋ค๋ง ์์คํ
์ ๊ตฌ์ถํ ์ ์๋ค.
requir.js ์ ๊ฐ์ ๋ชจ๋ ๋ก๋๋ฅผ ์ฌ์ฉํ์ง ์์ผ๋ฉด ๋ชจ๋ํ๊ฐ ๋ถ๊ฐ๋ฅํ๋ ESM ์์ ์ด์ .. ๊ทธ๋ฌ๋ ESM ๋ถํฐ ์๋ฐ์คํฌ๋ฆฝํธ ์ธ์ด์ ๋ชจ๋ํ ๋ฌธ๋ฒ (import, export)์ด ๋ค์ด์ค๊ฒ ๋๋ค.
์์ ๋ฌธ๋ฒ์ ์ด์ํ์ฌ ์ฌ๋ฌ ๊ฐ์ ํ์ผ์ ํ๋๋ก ํฉ์ณ์ฃผ๊ฑฐ๋ ์๋ฏธ ์๋ ๋จ์๋ก ๋ฌถ์ด์ฃผ๋ ํ์๊ฐ ๊ฐ๋ฅํ๊ฒ ๋์๋๋ฐ ๊ทธ๊ฒ์ ๋ฒ๋ค๋ง
์ด๋ผ๊ณ ํ๋ค
๊ทธ๋์ webpack,rollup, parcel ๋ฑ๊ณผ ๊ฐ์ ๋ชจ๋ ๋ฒ๋๋ฌ๋ ์ ๊ฐ์ ๋ฒ๋ค๋ง ์์ ์ ๋์์ฃผ๋ ํด์ธ๋ฐ ๋๋ถ๋ถ webpack์ด ๊ทธ ์ํ๊ณ๋ฅผ ์ฐจ์งํ๊ณ ์๋ค.
webpack dev server ๋๋น 20~30 ๋ฐฐ ๋น ๋ฅด๊ธฐ์ ์คํ ์๊ฐ์ ๊ฐ์ง๊ณ ์๋ค.
webpack ์๋ฒ๋ ์ฒ์ local ์๋ฒ๋ฅผ ํฌ ๋, ๊ด๋ จ ๋ชจ๋๋ค์ ๋ฒ๋ค๋งํ์ฌ ๋ฉ๋ชจ๋ฆฌ์ ์ ์ฌํ๋ ์๊ฐ์ด ๋ค์ ํ์ํ๋ค. => vite๋ ๋ฒ๋ค๋งํ์ง ์๊ณ ๋ฐ๋ก ์๋ฒ๋ฅผ ์คํํ๊ธฐ์ ๋ช
๋ น์ด๋ฅผ ์คํํจ๊ณผ ๋์์ ์๋ฒ๊ฐ ๋ฐ๋ก ๊ตฌ๋
build๋ฅผ ์ํ ์ ๊ณต build ์ต์
๋ค์ด ๋ง๋ค.
vite build production์ ๊ธฐ๋ณธ์ ์ผ๋ก ๋ฒ๋ค๋ง ํ์ง ์๊ณ ๋ก์ปฌ ๊ฐ๋ฐ ์๋ฒ์ ESM๋ฐฉ์์ ์ฌ์ฉํ๊ณ ์๋ค. => ์๋น์ค ๊ท๋ชจ๊ฐ ๋๋ฌด ์ปค์ง๋ฉด ๋ฒ๋ค๋ง ํ๋ ๊ฒ์ด ๋ ์ด๋์ผ ์๋ ์๋ค => Rollup ์ฌ์ฉ
์๋๋ ๋ฒ๋ค๋ง์ ํจ๊ป ์ฌ์ฉํ ์ ์๋๋ก ์ค์ ํ๋ ์ฝ๋ ๋ถ๋ถ์ด๋ค.
// vite.config.js
module.exports = defineConfig({
build: {
rollupOptions: {
// https://rollupjs.org/guide/en/#big-list-of-options
}
}
})
์ฃผํน๊ธฐ ์ฃผ์ฐจ ์์ํ์๋ง์ ํ๋ฃจ์์ LoginForm ์ ๋ง๋ค๋ผ๋ ๊ณผ์ ๋ฅผ ๋ฐ๊ฒ ๋์๋ค.
๊ทธ๋ฐ๋ฐ ๊ทธ ๊ณผ์ ์์ React ๋ฅผ ์ค์นํ๋ผ๋ ๋ง์ด ์์ด, โAr.. ๋ฆฌ์กํธ ๋ฐฐ์ฐ์ง๋ ์์๋๋ฐ,
์ด๊ฑธ๋ก ๋ง๋ค์ด์ผ๋๋๊ตฌ๋ ์ค๋ ์์โฆ!โ ๋ผ๊ณ ์๊ฐํด์, ๊ตฌ๊ธ๋ง ๋์ ์ด์ฐ์ ์ฐ ๋ง๋ค๊ธด ํ๋๋ฐ,
~~์๊ณ ๋ณด๋ ์๊ณ ๋ฆฌ์ฆ ํ๋๋ผ html ๊น๋จน์์๊น๋ด html ๋ก ํ๋ผ๋ ๊ฑฐ์๋ค..๐~~
ํ ํ .. ์ผ๋จ ์๋๋ ์ด๋ ๊ณ , ๋ค๋ฅธ ์ธ์๋ค์ ๋นํด ๋ป์ง์ ํ๊ธดํ์ง๋ง, ๋๋ฆ๋๋ก ์ป์ ์ ์ด ๋ง์์ ์ข๋ค.
์จ๊ฒจ์ง..์ด๋ผ๊ณ ํ๋ ๊ฒ ๋ณด๋จ ์ฌ์ค ๋ด๊ฐ ๊ณต๋ถ๋ฅผ ๋ ํ ๊ฒ์ด์๋ค.
submit ์์ input ํ๊ทธ๊ฐ ํ๋๋ผ๋ ์๋์ด ์์ผ๋ฉด ์๋ฆผ ํ์
submit ์์ input ํ๊ทธ๊ฐ ํ๋๋ผ๋ ์๋์ด ์์ผ๋ฉด ์๋ฆผ ํ์๋ฅผ ํ๋ ๊ฒ์ด ๋ชฉ์ ์ด๋ผ ์ฒ์์ function์ ์์ฑํ์ฌ dom์ ์ด์ฉํด value ๊ฐ์ด โ โ ์ผ๋, ์๋ฌ๋ฅผ ์ถ๋ ฅํ๋ ค๊ณ ํ๋ค.
๊ทธ๋ฐ๋ฐ ๋ต์ ๊ฐ๊น์ด ๊ณณ์ ์์๋ค. ๋ฐ๋ก required
const App = () => {
return (
<form
action="https://ko.reactjs.org/docs/add-react-to-a-website.html#add-react-in-one-minute"
className="submitform">
<p>First Name :</p>
<input
type="text"
name="First Name"
className="input bg-white input-bordered input-accent w-full max-w-xs"
required
/>
์๋ ์ฝ๋์ ์ผ๋ถ์ด๋ค. <input type="submit">
์ form ํ๊ทธ ๋ด์์ ๋ฐ์ ๊ฐ์ ๋๊ฒจ์ฃผ๋ ์ญํ ์ ํ๋๋ฐ ์ด๋, html5
์์ ์ง์ํ๋ input ํ๊ทธ ๋ด์ required
๋ผ๋ ์์ฑ์ ์ด์ฉํ๋ฉด ๊ฒ์ฆ์ด ๊ฐ๋ฅํด์ง๋ค.
์๋ ๋๋ถ๋ถ์ Browser๋ ์ ๋ ฅ๋ฐ์ ๊ฐ์ ํ์ธ ๊ฐ๋ฅํ๊ฒ ๊ฐ๋ฐ์๋ค์ด ์ฌ์ฉํ ์ ์๋ API๋ฅผ ์ ๊ณตํ๋ค๊ณ ํ๋ค.
html5์ ๊ฒฝ์ฐ ๋ฐ๋์ ์
๋ ฅํด์ผ๋๋ ์
๋ ฅ์์์ required
์์ฑ์ ๋ถ์ฌํด ๊ฒ์ฆ ๋ก์ง์ ์คํ ๊ฐ๋ฅ์ผ ํ๋ค. ๊ทธ๋ฆฌ๊ณ ์
๋ ฅ๋ฐ์ง ์์ input ๊ฐ์ด ๋์ค๊ฒ ๋๋ฉด submit์ด ์คํจํ๊ฒ ๋๋ ๊ตฌ์กฐ๋ฅผ ๋ณด์ฌ์ค๋ค.
์ด๋ฌํ required ์ฒ๋ผ html5์ ์ ๋ ฅ ์์๋ ์ด 7๊ฐ์ง์ ๊ฒ์ฆ ์์ฑ (validation attributes)์ ์ ๊ณตํ๋ค.
required
: ํ์minlength
/ maxlength
: ์ต์ / ์ต๋ ๊ธธ์ดtype
: ํ์
(ex. email)min
/ max
: ์ต์ / ์ต๋ ์ ์pattern
: ํจํด(RegExp)๋ ์ธ๋ฐํ ๋ด์ฉ์ ์ถํ์ ๊ธฐํ๊ฐ ๋๋ฉด ๋ ์ ๋ฆฌํ๋๋ก ํ๊ฒ ์ง๋ง, ์๋ง ํ๋ ์์ํฌ, ๋ผ์ด๋ธ๋ฌ๋ฆฌ ๋ฑ์ ๋ง์ด ์ด์ฉ์ ํ ์์ ์ด๋ผ ์์ ๊ธฐ๋ฅ๋ค์ ์ธ ์ํฉ์ด ๋ง์ง ์์ ๊ฒ ๊ฐ๋ค.
๊ทธ๋๋ ์๋ฆฌ๋ฅผ ์์๋๋ฉด ๋ญ๋ ์ข์ผ๋ ์์งํ๋ ค๊ณ ์์ ํ๋ค.
reference
HTML5 ํผ ๊ฒ์ฆ์ ๋ํด ์ ๋ฆฌํด ๋ณด์
https://joshua1988.github.io/vue-camp/vite/intro.html#%E1%84%87%E1%85%A5%E1%86%AB%E1%84%83%E1%85%B3%E1%86%AF%E1%84%85%E1%85%B5%E1%86%BC