Vue.js 개요.
Vue.js 소개
Vue.js는 사용자 인터페이스를 구축하기 위해 사용되는 점진적인 JavaScript 프레임워크입니다. "점진적인 프레임워크"라고 불리는 이유는 기존 프로젝트에 점진적으로 채택될 수 있으며, 개발자가 필요한 만큼의 기능만 사용할 수 있기 때문입니다.
Vue.js는 반응형 데이터 바인딩 시스템과 컴포넌트 기반 아키텍처를 제공하여 상호작용하는 웹 애플리케이션을 구축하는 과정을 간소화합니다. 유연하고 확장 가능하며 학습하기 쉬운 설계로, 개발자들 사이에서 인기가 있는 선택지입니다.
Vue.js의 역사
Vue.js는 2014년에 구글의 전 직원인 Evan You에 의해 만들어졌습니다. 처음에는 사이드 프로젝트로 개발되었지만, 간결함과 성능 때문에 빠르게 인기를 얻었습니다. 그 이후로 Vue.js는 꾸준히 성장하여 주요한 JavaScript 프레임워크 중 하나가 되었습니다.
Vue.js의 기능
반응형 데이터 바인딩: Vue.js는 데이터 모델을 기반으로 DOM을 선언적으로 렌더링하는 반응형 데이터 바인딩 시스템을 사용합니다. 즉, 데이터가 변경되면 DOM이 자동으로 해당 변경 내용을 반영합니다.
<template>
<div>
<p>{{ message }}</p>
</div>
</template>
<script>
export default {
data() {
return {
message: '안녕하세요, Vue.js!'
};
}
};
</script>위의 예제에서
message변수는<p>요소에 바인딩되어 있습니다.message값이 변경되면<p>요소는 자동으로 새로운 값으로 업데이트됩니다.컴포넌트 기반 아키텍처: Vue.js는 재사용 가능한 컴포넌트를 조합하여 복잡한 UI를 구축할 수 있도록 합니다. 컴포넌트는 독립적으로 구성되어 애플리케이션 전체에서 쉽게 재사용할 수 있으며, 코드의 재사용성과 유지보수성을 높입니다.
<template>
<button @click="increment">{{ count }}</button>
</template>
<script>
export default {
data() {
return {
count: 0
};
},
methods: {
increment() {
this.count++;
}
}
};
</script>이 예제에서는 클릭할 때마다 카운터를 증가시키는 간단한 버튼 컴포넌트를 생성합니다.
count변수는 버튼의 레이블에 바인딩되어 있으며,increment메서드는 호출될 때마다 카운트를 업데이트합니다.지시자: Vue.js는 DOM을 선언적으로 조작하기 위해 일련의 내장 지시자를 제공합니다. 지시자는
v-접두사로 시작하는 특수 속성입니다.<template>
<div>
<p v-if="showMessage">{{ message }}</p>
<button @click="toggleMessage">메시지 전환</button>
</div>
</template>
<script>
export default {
data() {
return {
message: '안녕하세요, Vue.js!',
showMessage: true
};
},
methods: {
toggleMessage() {
this.showMessage = !this.showMessage;
}
}
};
</script>이 예제에서
v-if지시자는showMessage변수의 값에 따라<p>요소를 조건부로 렌더링합니다. 버튼을 클릭하면 메시지의 가시성이 전환됩니다.계산된 속성: Vue.js는 개발자가 데이터 모델에서 파생된 계산된 속성을 정의할 수 있도록 합니다. 계산된 속성은 캐시되어 의존성이 변경될 때에만 재평가되므로 성능이 좋아집니다.
<template>
<div>
<p>{{ fullName }}</p>
</div>
</template>
<script>
export default {
data() {
return {
firstName: 'John',
lastName: 'Doe'
};
},
computed: {
fullName() {
return this.firstName + ' ' + this.lastName;
}
}
};
</script>이 예제에서
fullName계산된 속성은firstName과lastName변수를 연결합니다. 이 변수 중 하나라도 변경될 때마다fullName속성이 자동으로 업데이트됩니다.
Vue.js 예제
Vue.js로 시작하려면 Vue.js에서 제공하는 공식 문서와 튜토리얼을 참고할 수 있습니다.
다음은 위에서 설명한 일부 기능을 보여주기 위한 몇 가지 추가적인 예제입니다:
할 일 목록: Vue.js를 사용한 간단한 할 일 목록 애플리케이션.
<template>
<div>
<input v-model="newTodo" placeholder="새로운 할 일을 입력하세요">
<button @click="addTodo">할 일 추가</button>
<ul>
<li v-for="todo in todos" :key="todo.id">{{ todo.text }}</li>
</ul>
</div>
</template>
<script>
export default {
data() {
return {
newTodo: '',
todos: []
};
},
methods: {
addTodo() {
if (this.newTodo.trim()) {
this.todos.push({
id: Math.random(),
text: this.newTodo
});
this.newTodo = '';
}
}
}
};
</script>이 예제에서 사용자는 입력 필드에 새로운 할 일을 입력할 수 있으며, "할 일 추가" 버튼을 클릭하면 할 일이 목록에 추가됩니다. 할 일은
todos배열에 저장되며,v-for지시자를 사용하여 각 할 일 항목을 렌더링합니다.라우팅: Vue Router를 사용한 여러 페이지가 있는 간단한 애플리케이션.
// main.js
import Vue from 'vue';
import VueRouter from 'vue-router';
import Home from './components/Home.vue';
import About from './components/About.vue';
Vue.use(VueRouter);
const routes = [
{ path: '/', component: Home },
{ path: '/about', component: About }
];
const router = new VueRouter({
routes
});
new Vue({
router
}).$mount('#app');<!-- Home.vue -->
<template>
<div>
<h1>홈 페이지에 오신 것을 환영합니다!</h1>
</div>
</template><!-- About.vue -->
<template>
<div>
<h1>회사 소개</h1>
<p>저희는 개발자 팀입니다.</p>
</div>
</template>이 예제에서 Vue Router를 사용하여 홈 페이지와 회사 소개 페이지 두 개의 경로를 정의합니다. 링크를 클릭하면 해당 페이지로 이동합니다.
이러한 예제는 Vue.js의 강력함과 유연성을 간단히 소개하는 것입니다. 이러한 기능을 조합함으로써 복잡하고 상호작용하는 웹 애플리케이션을 효율적으로 구축할 수 있습니다.
이 튜토리얼이 Vue.js 시작에 도움이 되기를 바랍니다. 공식 문서를 참고하고 다양한 기능과 예제를 실험해 보는 것을 자유롭게 해보세요.