๐Ÿ’™ ssafy

[SSAFYcial] Vue์™€ React๋Š” ์–ด๋–ป๊ฒŒ ๋‹ค๋ฅธ๊ฐ€์š” ?

c0zi 2024. 7. 31. 16:52

๊ฐ€์žฅ ๋จผ์ € ์ƒ๊ฐ๋‚˜์‹œ๋Š” 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๋ฅผ ํ™œ์šฉํ•ด์„œ ํ”„๋กœ์ ํŠธ๋ฅผ ๋งŒ๋“ค์–ด๋ณด์„ธ์š” !