๊ฐ์ฅ ๋จผ์ ์๊ฐ๋์๋ Vue์ React์ ์ฐจ์ด์ ์ ์๋ง .vue์ .jsx๋ฅผ ์ฌ์ฉํ๋ค๋ ๊ฒ์ผํ ๋ฐ์.
vue๋ ์ปดํฌ๋ํธ ์ ์ ์์ .vue ํ์ผ์ ์์ฑํ๊ณ , html๊ณผ css js๋ฅผ ๋ชจ๋ ํ ํ์ผ์ ๋๋์ด ์์ฑํฉ๋๋ค.
์์๋ฅผ ๋ค๋ฉด ์๋์ ๊ฐ์ฃ .
<!-- HelloWorld.vue -->
<template>
<div>
<h1>{{ message }}</h1>
</div>
</template>
<script>
export default {
data() {
return {
message: 'Hello Vue!'
}
}
}
</script>
<style scoped>
h1 {
color: blue;
}
</style>
๋ฐ๋ฉด์ React์ ๊ฒฝ์ฐ .jsx ํ์ผ์ ์ฌ์ฉํด ์ปดํฌ๋ํธ๋ฅผ ์ ์ํฉ๋๋ค.
JS ์ฝ๋ ๋ด์ HTML์ ํฌํจํ ํํ๋ฅผ ๋๊ณ ์์ต๋๋ค.
// HelloWorld.jsx
import React, { useState } from 'react';
const HelloWorld = () => {
const [message, setMessage] = useState('Hello React!');
return (
<div>
<h1>{message}</h1>
</div>
);
}
export default HelloWorld;
์ด๋ฌํ ์ฐจ์ด๊ฐ ๋ํ๋๋ ์ด์ ๋ ๋ฌด์์ผ๊น์ ?
๋ค์์ ๋ ๋ฌธ์ฅ์ ํตํด react์ vue๋ฅผ ์ง๊ด์ ์ผ๋ก ๋น๊ตํด๋ณผ ์ ์์ต๋๋ค.
๋ฆฌ์กํธ๋ ์๋ฐ์คํฌ๋ฆฝํธ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ํ๋๋ก์ ์ฌ์ฉ์ ์ธํฐํ์ด์ค๋ฅผ ๋ง๋ค๊ธฐ ์ํด ์ฌ์ฉ๋๋ค.
Vue.js๋ ์น ์ ํ๋ฆฌ์ผ์ด์ ์ ์ฌ์ฉ์ ์ธํฐํ์ด์ค๋ฅผ ๋ง๋ค๊ธฐ ์ํด ์ฌ์ฉํ๋ ์คํ ์์ค ํ๋ก๊ทธ๋ ์๋ธ ์๋ฐ์คํฌ๋ฆฝํธ ํ๋ ์์ํฌ์ด๋ค.
๋จผ์ , ๋ฆฌ์กํธ๋ UI ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ๋๋ค. ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ๊ฒฝ์ฐ ์ฐธ์กฐ๊ฐ ์ฝ๋ค๋ ํน์ง์ด ์๊ณ , ์ด๋ฌํ ํน์ง ๋๋ฌธ์ ๋ฆฌ์กํธ์์๋ ์์ฒด์ ์ผ๋ก ์ ์ญ ์ํ ๊ด๋ฆฌ, ๋ผ์ฐํ ๋ฑ์ ์ง์ํ์ง ์์ต๋๋ค. ์ด๋ฌํ ๊ธฐ๋ฅ์ ์ฌ์ฉํ๊ธฐ ์ํด์๋ Redux๋ Mobx์ ๊ฐ์ ์ํ๊ด๋ฆฌ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ฌ์ฉํด์ฃผ์ด์ผ ํฉ๋๋ค.
๋ค์์ผ๋ก, Vue๋ ํ๋ก๊ทธ๋ ์๋ธ ํ๋ ์์ํฌ๋ผ๊ณ ์๊ฐํ๊ณ ์์ต๋๋ค. ํ๋ก๊ทธ๋ ์๋ธ๋ ์ฌ์ฉ์๊ฐ ํ์์ ๋ฐ๋ผ ์ ์ฐจ ๊ธฐ๋ฅ์ ์ถ๊ฐ, ํ์ฅํ ์ ์๋ ํ๋ ์์ํฌ๋ก, ์ผ๋ฐ ํ๋ ์์ํฌ์ ๋นํด ์ ์ฐ์ฑ๊ณผ ํ์ฅ์ฑ์ด ํฐ ํน์ง์ด ์์ต๋๋ค.
์ฌ๊ธฐ์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ํ๋ ์์ํฌ๊ฐ ์์ง ํท๊ฐ๋ฆฌ์๋ ๋ถ๋ค์ ์ํด Chat GPT๋ฅผ ํ์ฉํด์ ๋ ๋๊ตฌ์ ๋ํด ์์๋ณด๊ฒ ์ต๋๋ค.
๋ผ์ด๋ธ๋ฌ๋ฆฌ๊ฐ ๋ญ์ผ, ํ๋ ์ ์ํฌ์์ ์ฐจ์ด์ ์ ?
๋ผ์ด๋ธ๋ฌ๋ฆฌ
- ํน์ ๊ธฐ๋ฅ์ ์ํํ๊ธฐ ์ํด ํ์ํ ์ฝ๋๋ฅผ ๋ชจ์๋์ ๋ชจ์
- ๊ฐ๋ฐ์๊ฐ ํ์ํ ๊ธฐ๋ฅ์ ์ ๊ณตํ๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ํธ์ถํด ์์ ์ ์ดํ๋ฆฌ์ผ์ด์ ์ ํตํฉํ๋ค.
- ํน์ ์์ ์ด๋ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํด ์ค๊ณ๋๋ฉด, ์ฌ์ฉ์๊ฐ ์ธ์ ์ด๋ป๊ฒ ์ฌ์ฉํ ์ง ์ ํํ ์ ์๋ค.
ํ๋ ์์ํฌ
- ์ ํ๋ฆฌ์ผ์ด์ ์ ๊ตฌ์กฐ๋ฅผ ์ ๊ณตํ๋ฉฐ, ํน์ ํจํด์ ๋ฐ๋ผ ์ฝ๋๋ฅผ ์์ฑํ๋๋ก ๋์
- ์ ์ฒด์ ์ธ ํ๋ฆ์ ๊ด๋ฆฌํ๊ณ ์ฌ์ฉ์๊ฐ ํ๋ ์์ํฌ์ ๊ท์น๊ณผ ํจํด์ ๋ฐ๋ฅด๋๋ก ๊ฐ์ ํ๋ค.
- ์ ํ๋ฆฌ์ผ์ด์ ์ ์ ์ฒด์ ์ธ ๊ตฌ์กฐ๋ฅผ ์ ์ํ๊ณ ๊ฐ๋ฐ์๊ฐ ์ฝ๋๋ฅผ ์์ฑํ ์ ์๋ ๋ผ๋๋ฅผ ์ ๊ณตํ๋ค.
๊ฒฐ๋ก ์ ์ผ๋ก ๋ณด์๋ฉด,
๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ ์ฌ์ฉ์๊ฐ ํ์์ ์ํด ์ง์ ํธ์ถํด์ ์ฌ์ฉํ๋ ๋๊ตฌ์ด๋ฉฐ ๊ทธ๋ ๊ธฐ ๋๋ฌธ์ ์ผ๋ถ ๊ธฐ๋ฅ๋ง ์ฌ์ฉ ๊ฐ๋ฅํ๊ณ , ํ๋ ์์ํฌ์ ๋นํด ๋ ์ ์ฐํ๋ค๋ ํน์ ์ด ์์ต๋๋ค.
ํ๋ ์์ํฌ์ ๊ฒฝ์ฐ, ์ ํด์ง ๊ตฌ์กฐ์ ๋ฐ๋ผ ๊ฐ๋ฐ์๊ฐ ๊ท์น๊ณผ ํจํด์ ๋ฐ๋ฅด๋ฉฐ ์ฝ๋๋ฅผ ์์ฑํด์ผ ํฉ๋๋ค. ๋๋ฌธ์ ์ ์ฐ์ฑ์ด ๋จ์ด์ง๊ณ , ๊ตฌ์กฐ์ ํจํด์ ๋ฐ๋ฅธ ์ ์ฝ์ด ๋ฐ์ํ ์ ์์ต๋๋ค.
์์์ ์ธ๊ธํ๋ค์ํผ Vue์ ๊ฒฝ์ฐ ํ๋ ์์ํฌ๋ณด๋ค๋ ์ ์ฐ์ฑ์ด ๋์ ํ๋ก๊ทธ๋ ์๋ธ ํ๋ ์์ํฌ์ด๊ธฐ ๋๋ฌธ์ ๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ๋ชจ๋ ์ ์ฐ์ฑ์ด ๋๋ค๋ ๊ณตํต์ ์ด ์๋ค๊ณ ๋ณผ ์ ์์ต๋๋ค.
์ด๋ค ๊ฒ์ ์ฌ์ฉํด์ผ ํ ๊น ?
Vue๋ก ํ๋ก ํธ์๋๋ฅผ ๊ฐ๋ฐํ๋ฉด ํ๊ฐ์ง ํ์ผ์ html๊ณผ css, js๋ฅผ ๋ชจ๋ ํฌํจํ๊ธฐ ๋๋ฌธ์ ๋ฆฌ์กํธ์ ๋นํด ์ฝ๋ ๊ฐ์์ฑ์ด๋ ์์ฐ์ฑ์ด ์ข๋ค๊ณ ์ฌ๊ฒจ์ง๊ธฐ๋ ํฉ๋๋ค.
๊ทธ๋ฆฌ๊ณ , Vue์ ๊ฒฝ์ฐ ์ฝ๋๊ฐ ์ง๊ด์ ์ด๊ณ React์ ๋นํด ์์ ๋๊ฐ ๋ฎ๊ธฐ ๋๋ฌธ์ ์ฒ์ ํ๋ก ํธ์ ๋์ ํ์๋ ๋ถ๋ค๊ป๋ vue๋ฅผ ์ถ์ฒ๋๋ฆฝ๋๋ค.
ํ์ง๋ง, ์ด๋ฌํ ์ฅ์ ์๋ ๋ถ๊ตฌํ๊ณ ํ์ ์์๋ React๋ ๋ง์ด ์ฌ์ฉ๋๊ณ ์๋๋ฐ์.
๊ทธ ์ด์ ์ค ํ๋๋ ๊ด๋ฒ์ํ ์ปค๋ฎค๋ํฐ์ ์ํ ๊ณ๋ฅผ ๋ฝ์ ์ ์์ต๋๋ค.
React๋ ์ค๋์๊ฐ ๊ฐ๋ฐ๋๊ณ ์ ์ง๋ณด์๋๋ฉฐ, ๋๋ฆฌ ์ฌ์ฉ๋ ๋งํผ ๋ค์ํ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ๋๊ตฌ๋ค์ด ๋ฐ์ ํด์์ต๋๋ค.
๋ํ, React์ ์ปค๋ฎค๋ํฐ๋ ๋งค์ฐ ํฌ๊ณ ํ๋ฐํด ๋ง์ ์คํ ์์ค ํ๋ก์ ํธ์ ํ์ต ์๋ฃ ๋ฑ์ ํ์ฉ๋ ์ ์์ต๋๋ค.
๋๋ฒ์งธ๋ก๋ React์ ์ฑ๋ฅ์ด ์์ต๋๋ค.
React์ ๊ฒฝ์ฐ Virtual DOM์ ์ด์ฉํด ํ๋ฉด์ ๋ณํ๋ฅผ ์ถ์ ํ๊ณ , ๋ถํ์ํ ๊ฐฑ์ ์ ์ต์ํํ ์ ์์ต๋๋ค.
์ด๋ฌํ ์ฅ์ ์ ๊ฐ์ง๊ณ ์์ด ํ์ ์์ ๋ง์ด ์ฌ์ฉ๋๊ณ ์๋ Vue์ React๋ฅผ ํ์ฉํด์ ํ๋ก์ ํธ๋ฅผ ๋ง๋ค์ด๋ณด์ธ์ !
'๐ ssafy' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[SSAFYcial] ์ ํ ํด์ปคํค ํ๊ธฐ (1) | 2024.09.03 |
---|---|
[SSAFYcial] ์ ํ ํด์ปคํค React Editor ์ ์ฉ๊ธฐ (3) | 2024.08.28 |
[SSAFYcial] ์๋ฐ ๋น์ ๊ณต์์ ๋ฆฌ์กํธ๋ฅผ ์ฐพ์ ๋ ๋๋ ์ฌ์ (0) | 2024.07.31 |
[SSAFYcial] ์ธํผ์์ Job fair๋๋ ๋ญํด์ ? (0) | 2024.06.23 |
[SSAFYcial] 1ํ๊ธฐ ํ๋ก์ ํธ ์ต์ฐ์์ ์์์๊ฐ ๋งํด์ฃผ๋ โญํ๋ก์ ํธ Tipโญ - toolํธ (0) | 2024.06.01 |