다른 주요 프론트엔드 프레임워크(Angular, React)와 비교했을 때 뷰(Vue)의 가장 큰 강점은 바로 시작하기가 정말 쉽다는 점이다.
<!DOCTYPE html>
<html>
<head>
<title>Vue.js Sample</title>
</head>
<body>
<div id="app">
{{ message }}
</div>
<script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>
<script>
new Vue({
el: '#app',
data: {
message: 'Hello Vue.js!'
}
})
</script>
</body>
</html>
CDN으로 Vue.js 코드를 가져와 바로 Vue 인스턴스를 하나 생성하여 간단한 페이지를 생성해보았다. 기존의 구현된 시스템에 적용하기도 훨씬 수월할 것으로 보인다.
인스턴스는 뷰로 개발할 때 필수로 생성해야 하는 코드이다.
인스턴스는 아래와 같이 생성할 수 있다.
new Vue();
인스턴스를 생성하고 나면 아래와 같이 인스턴스 안에 어떤 속성과 API가 있는지 콘솔 창에서 바로 확인할 수 있다.
var vm = new Vue();
console.log(vm);
이처럼 인스턴스 안에서 미리 정의되어 있는 속성과 메서드(API)들이 있기 때문에 이 기능들을 이용하여 빠르게 화면을 개발해나갈 수 있다.
따라서 순수 Javascript(Vanilla javascript)로 화면을 개발을 하는 것보다 Vue.js 프레임워크를 사용하면 훨씬 쉽고 빠르게 개발을 할 수 있다.
인스턴스에서 사용할 수 있는 속성과 API는 다음과 같다.
이외에도 mounted
, updated
, props
등 여러가지가 있지만 다음에 자세히 알려주는걸로 하고 넘어가겠다.
인스턴스 라이프 사이클이란 뷰의 인슽넌스가 생성되어 소멸되기까지 거치는 과정을 의미한다.
인스턴스가 생성되고 나면 라이브러리 내부적으로 다음과 같은 과정이 진행된다.
인스턴스의 라이프 사이클 흐름을 그림으로 나타내어 보면 다음과 같다.
뷰의 라이프 사이클을 이해해야 하는 이유는 바로 라이프 사이클 훅 때문이다.
라이프 사이클 훅으로 인스턴스의 특정 시점에 원하는 로직을 구현할 수 있다.
예를 들어, 컴포넌트가 생성되자마자 데이터를 서버에서 받아오고 싶으면 created
나 beforeMount
라이프 사이클 훅을 사용할 수 있다.
new Vue({
methods: {
fetchData() {
axios.get(url);
},
created: function() {
this.fetchData();
}
})
인스턴스가 생성되자마자 Axios를 통해 HTTP GET 요청을 보내 데이터를 받는 코드이다.
뷰 프레임워크를 공부할 때 라이프 사이클은 매우 중요한 부분이니 이 글 외에도 자세히 알아보는걸 추천한다. (로직을 짤 때 라이프 사이클 훅은 무조건 필요함)