쉽게 다가가는 Vue.js 이야기 (파트 1)

목차로 알아보는 Vue.js 의 초단간 개요: Introduction 편

29 Aug 2019 by 코마 (gbkim1988@gmail.com)

안녕하세요 코마입니다. 오늘은 Vue.js 의 공식 문서의 목차를 통해서 Vue.js 의 내용을 아주 간략하게 요약해 보려고합니다. 만약 여러분이 Vue.js 를 사용하고 있지만, 전체적인 그림을 익히기 어려운 경우 이 문서는 여러분의 힘이 되어줄 것이 분명합니다. 저를 믿고 한번 따라와주세요~! 😺

목차를 뜯어보는 이유

책을 사면 목차를 먼저 보아야 한다고 하죠? 그래야 책의 내용과 방향을 정확히 알 수 있겠죠!

그런데 왜 기술 문서는 목차를 먼저 보지 않을까요?

그래서 한번 준비해 보았습니다.

⚠️ 주의: 이 글은 아주 얇고 빠르게 Vue.js 의 내용을 훑어보는 과정이에요. 그러나 여러분들 중에는 좀 더 자세한 내용을 원할 수 있을 것 같아요. 지금은 개발 중인 Coma’s Vue Awesome 페이지를 통해서 곧 확인할 수 있을 예정이니 좀 더 기다려 주세요!

아마도 아래의 효과가 있을 것이라고 기대되요.

저 코마는 항상 여러분들과 같이 실력을 향상하기 위해 많은 고민을 하고 있다는 점을 기억해주세요! 😄

Introduction 하위 목차

Vue 공식 문서는 아래의 목차를 통해 Vue 를 소개하고 있습니다. 이 중에는 Declarative Rendering, Composing with Components 그리고 Relation to Custom Elements 와 같은 항목들이 있는데요. 지금부터 의미와 개념을 알아보도록 하겠습니다.

이번 시간에는 사용자 입력 처리(Handling User Input)까지 진행하도록 하겠습니다. 만약, 컴포넌트와 사용자 정의 엘리먼트(태그)의 관계를 알고싶은 분들은 Part 2 를 꼭 참고해주세요!

What is Vue.js

Vue 는 상당히 진보적인 프레임워크라고 소개하고 있어요. 왜 진보적라고 이들은 주장할까요? 그것은 바로 기존의 단일형(Monolithic) 프레임워크와 비교하였을 때 진보적이라고 표현하는 것입니다.

Vue 의 특징은 아래와 같다고 소개하고 있습니다.

React 와의 유사성

SPA 를 지원하며 코어 라이브러리에 집중하는 유사한 라이브러리로 React 가 있어요. Vue 는 React 와 아래의 유사점을 가지고 있어요.

Getting Started

안내: 공식 문서에서는 Vue 를 시작하기 전에 HTML, CSS, Javascript 등에 대한 중간 정도 지식을 가져야 한다고 말합니다. 그러나 저 코마의 생각은 다릅니다. codepen, jsfiddle, scrimba 등의 도움을 받으면 여러분은 매우 효과적으로 Vue(뷰)를 배울 수 있습니다.

여러분은 index.html 파일을 만들어 단순히 아래와 같이 스크립트 태그를 추가하는 것만으로도 어디서든 Vue 를 즐길 수 있습니다.

또한, Vue 는 개발 버전과 사용 버전을 나누어 관리하고 있어 소스경로만 바꾼다면 곧바로 데이터를 추가하고 관리할 수 있습니다.

<!-- 도움되는 콘솔 경고를 포함한 개발 버전 -->
<script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>
<!-- 상용버전, 속도와 용량이 최적화됨. -->
<script src="https://cdn.jsdelivr.net/npm/vue"></script>

Declarative Rendering

이른바 선언적 렌더링이라고 해석되는 Vue 의 핵심 기능입니다. 아래의 내용을 한 봐볼까요?

선언적 렌더링은 템플릿 구문을 이용하여 데이터를 DOM 에 렌더링하는 것이라고 요약할 수 있습니다. 아래의 예는 문자열 데이터를 렌더링하여 보여줍니다. 그렇다면 텍스트 보간 이외에 속성에도 이러한 작업이 가능할까요?


Vue 는 DOM 과 데이터를 연결하여 모든 것을 반응형으로 만들어줍니다. 이제 엘리먼트 속성에 데이터를 연결해 보겠습니다. v-bind:title="message" 라는 코드에 집중해주세요.

아래의 코드펜 샘플은 span 태그 위에 마우스를 올리면 시간 정보를 출력하게됩니다.

여기서 새로운 키워드가 나타났네요.v-bind 라는 속성을 지정해 주었습니다. 이를 Vue 문서는 디렉티브라고 부릅니다.

그렇다면 우리는 DOM 에 특수한 반응형 동작을 정의할 때 디렉티브라는 것을 사용해야 함을 유추할 수 있습니다.


Conditionals and Loops

DOM 에 반응형을 정의할 수 있다고 위에서 언급한 바 있습니다. 그러나 과연 그것 뿐일까요? 조건문과 루프의 개념을 구현할 수 있습니다. 이는 liquid, jinja2 와도 같은 기능입니다. 그러나 Vue 는 이를 엘리먼트의 속성으로 지정하여 제어할 수 있다는 점이 특별합니다. (가상 DOM 의 위력이라고 할까요?)

그렇다면 간단한 구문을 살펴보겠습니다.

아래의 버튼을 클릭해 볼까요? 버튼 클릭 때마다 seen 데이터의 값이 true 또는 false 로 토글되도록 메서드를 작성하였습니다.

이제 여러분은 사용자 액션에 따른 선택적 렌더링의 방법을 조건(Conditionals) 디렉티브 v-if 를 통해 구현할 수 있음을 알게되었습니다. (참 쉽고 재밌는 Vue 입니다. 😍)


그렇다면, 루프를 알아볼까요? 루프는 배열 데이터를 어떻게 보여줘야 할지를 알려주는 해결책입니다. 이때는 v-for 디렉티브를 사용합니다. 아래의 코드펜에서 js 탭을 눌러서 배열을 선언하는 방법과 html 탭에서 v-for 을 통해 배열을 출력하는 간단한 예제를 참고해주세요!


> 단어하나에도 의미를 부여할 경우 무한한 가능성이 열립니다. 여러분들도 코마와 함께 여러분들의 가능성을 넓히는 계기가 되었으면 합니다.


Handling User Input

Vue 는 사용자가 앱과 상호작용 할 수 있도록 도와줍니다. v-on 디렉티브를 사용하면 javascript 함수를 이벤트와 바인당할 수 있어요! 😍 (정말 멋지지 않나요!) HTML 제공하는 사용자 입력 유형은 매우 다양합니다. 그런데, 과연 Vue 가 이 모든 액션을 다 지원하는지는 사실 의문이 드는 점이네요! 나중에 시간을 내어서 알아보도록 할게요. 지금은 사용자 입력 핸들링(Handling User Input)만 집중해주세요!


마무리

벌써 Vue.js 공식 문서 정복(뽀개기) 과정에서 Introduction 영역의 70%를 완료하였네요!👏 (짝짝짝) 아직 드릴 이야기가 무궁무진하니 좀 더 지켜봐주시면 더욱 감사할 것 같아요! 여러분이 Vue.js 를 장난감처럼 가지고 노는 그날까지 저 코마는 멈추지 않겠습니다. 대한민국 IT인 여러분들의 건승을 기원합니다.

지금까지 코마 였습니다.

구독해주셔서 감사합니다. 더욱 좋은 내용으로 찾아뵙도록 하겠습니다. 감사합니다

링크 정리

이번 시간에 참조한 링크는 아래와 같습니다. 잘 정리하셔서 필요할 때 사용하시길 바랍니다.

이 작가의 다음 글 감상