티스토리 뷰
컴포넌트
Vue에서는 <template>, <script>, <style> 세 가지 섹션으로 구성된 단일 파일 컴포넌트를 사용해 HTML, JavaScript, CSS를 한 곳에서 관리합니다. 이런 차이점으로 인해 React는 JavaScript에 집중한 개발 경험을 제공하며, Vue는 웹 기술 스택(HTML, CSS, JS)을 모두 활용하는 개발 경험을 제공합니다. 또한, Vue의 단일 파일 컴포넌트는 개발자가 한번에 모든 코드를 볼 수 있도록 해주며, React는 관심사의 분리 원칙을 따르는 경향이 있습니다. 이는 개발 스타일과 프로젝트의 요구사항에 따라 선택할 수 있습니다.
React
React에서는 컴포넌트를 JavaScript 파일로 생성합니다. 이때, JSX라는 문법을 사용해 JavaScript 안에서 마크업을 작성합니다. 그리고 CSS는 외부 파일로 분리하거나, CSS-in-JS 라이브러리를 이용해 작성합니다.
// Button.js
import React from 'react';
import './Button.css';
function Button({ label }) {
return <button className="button">{label}</button>;
}
export default Button;
/* Button.css */
.button {
background-color: blue;
color: white;
padding: 10px;
}
Vue
Vue에서는 단일 파일 컴포넌트(Single File Component)를 사용합니다. 이는 HTML, CSS, JavaScript 코드가 모두 한 파일(.vue) 안에 존재합니다.
<template>
<button class="button">{{ label }}</button>
</template>
<script>
export default {
props: {
label: String
}
}
</script>
<style scoped>
.button {
background-color: blue;
color: white;
padding: 10px;
}
</style>
Vue.js 와 React의 비슷한점
컴포넌트 기반 아키텍처: 두 프레임워크 모두 웹 애플리케이션을 재사용 가능한 컴포넌트로 분리하는 컴포넌트 기반의 아키텍처를 가지고 있습니다. 이를 통해 코드의 재사용성을 높이고, 코드 관리를 용이하게 합니다.
Reactive Programming: Vue와 React 모두 데이터 변경을 감지하고 이를 효율적으로 화면에 반영하는 반응형 프로그래밍 모델을 사용합니다.
Virtual DOM: 두 프레임워크 모두 Virtual DOM을 사용하여 화면 업데이트를 최적화합니다. 이를 통해 실제 DOM에 직접 접근하는 것보다 효율적인 렌더링을 가능하게 합니다.
컴포넌트간 데이터 통신
React와 Vue 모두 상위 컴포넌트에서 하위 컴포넌트로 데이터를 전달하는 데에는 props를 사용하며, 하위에서 상위로 데이터를 전달하는 방식에 차이가 있습니다. React는 콜백 함수를 이용하고, Vue는 이벤트를 발생시킵니다.
React
React에서는 상위 컴포넌트에서 하위 컴포넌트로 데이터를 전달하기 위해 "props"를 사용합니다. 그리고 하위에서 상위로 데이터를 전달하기 위해 콜백 함수를 props로 전달합니다. 예를 들어, Parent 컴포넌트에서 Child 컴포넌트로 'name' 데이터를 전달하는 방법은 다음과 같습니다
function Parent() {
return <Child name="John" />;
}
function Child(props) {
return <p>Hello, {props.name}</p>;
}
Parent에서 Child로 handleClick 콜백 함수를 전달하는 방법은 다음과 같습니다
function Parent() {
const handleClick = () => alert('Button clicked!');
return <Child onClick={handleClick} />;
}
function Child(props) {
return <button onClick={props.onClick}>Click me</button>;
}
Vue Vue에서도 상위 컴포넌트에서 하위 컴포넌트로 데이터를 전달하기 위해 "props"를 사용합니다. 그러나 하위에서 상위로 데이터를 전달하기 위해 "이벤트"를 발생시킵니다. 예를 들어, Parent 컴포넌트에서 Child 컴포넌트로 'name' 데이터를 전달하는 방법은 다음과 같습니다
<template>
<Child :name="'John'" />
</template>
<script>
import Child from './Child.vue';
export default {
components: {
Child
}
}
</script>
<template>
<p>Hello, {{ name }}</p>
</template>
<script>
export default {
props: {
name: String
}
}
</script>
Parent에서 Child로 이벤트를 전달하고 그 이벤트를 처리하는 방법은 다음과 같습니다:
<template>
<Child @click="handleClick" />
</template>
<script>
import Child from './Child.vue';
export default {
components: {
Child
},
methods: {
handleClick() {
alert('Button clicked!');
}
}
}
</script>
<template>
<button @click="$emit('click')">Click me</button>
</template>
라이프 사이클 훅: React와 Vue는 둘 다 컴포넌트의 생명주기를 관리하는 라이프 사이클 훅을 제공합니다. 이를 통해 개발자는 컴포넌트가 생성, 업데이트, 파괴되는 시점에 특정 로직을 실행할 수 있습니다.
이런 비슷한 점들 때문에, 한 프레임워크에서 다른 프레임워크로 전환하는 것이 상대적으로 쉬울 수 있습니다. 그러나 각 프레임워크의 독특한 철학과 기능을 이해하는 것이 중요하며, 이를 통해 각 프로젝트의 요구사항에 가장 적합한 프레임워크를 선택할 수 있습니다.
'FRONTEND' 카테고리의 다른 글
프론트엔드 개발에서도 OOP가 중요할까요? (0) | 2024.03.03 |
---|---|
Vue.js 에서 데이터를 다루는 다양한 방법 (1) | 2024.02.18 |
Vue.js 3로 마이그레이션을 고민하고 계신가요? (Vue.js 3에서 달라진점) (0) | 2024.02.04 |
Vue.js 와 React 비교 (0) | 2024.01.20 |
Vue.js 2 지원 종료, 우리는 어떻게 해야 할까요? (1) | 2024.01.05 |
- Total
- Today
- Yesterday
- 코파일럿 꿀팁
- 코파일럿 사용 방법
- tip of copilot
- 2023회고
- 회고
- 지타워컨벤션
- 2023년 회고
- 본식후기
- 단독웨딩홀
- github
- 20대회고
- 웨딩후기
- Github Copilot
- 개발자회고
- 결혼식장
- 단독홀
- 지블리안
- Tips for using copilot
- 구로결혼식장
- How to use Copilot
- 코파일럿
- Github universe 2023
- 29살회고
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |