%
Vue.js는 프론트엔드 기술 중 하나입니다. 한 페이지에서 모든 컨텐츠를 보여주는 웹사이트를 많이 보셨을겁니다.
이를 SPA(Single Page Application)이라고 하는데, 이럴 때 동적인 페이지를 쉽게 만들어주는 기술이 Vue.js입니다.
jQuery보다 간단! Vue.js는 “초보자도 간단하게 웹 페이지에 인터랙티브한 기능을 추가하는 것이 가능한 라이브러리”입니다.
직관적으로 작성할 수 있고 간단하기 때문에 배우기 쉬운 게 특징입니다.
웹 페이지나 자바스크립트의 사용 방법을 이제 막 알아가는 수준의 초보자라도 바로 사용할 수 있습니다.
%
Vue.js : 자바스크립트 프레임워크 중 하나
프레임워크 : 복잡한 내용을 간단히 미리 규격화/모듈화 해둔 도구
프레임워크 사용시 : 기존 자바 스크립트에서 사용할 수 없던 문법이나, 입력
방식들을 사용할 수 있게 되고, 타 플러그인을 통해 UI 컴포넌트나 스타일,
추가 기능 등을 불러다 쓰는 것도 가능해진다.
자바스크립트 프레임워크 - Vue/React/Angular
Vue 2. // 우리가 배우는 버전
Vue 3. // 요즘은 이 버전// 2.0이랑 형식이 다르다
** 사용가능한 최신 버전
ㄴ script src="https://cdn.jsdelivr.net/npm/vue@2.6.10/dist/vue.js"
ㄴ 버전 지우고
ㄴ script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"
ㄴ 컨트롤을 누르고 클릭하면 최신버전으로 웹페이지에서 보여준다.
* SPA(Single Page Application)의 장점
ㄴ 웹 페이지 하나에 여러 가지 기능을 넣어서 “하나의 페이지로 동작하는 웹 어플리케이션”을 “SPA(Single Page
Application)” 라고 합니다.
* Vue.js는 배우기 쉽고 가벼운 SPA를 만들 수 있습니다
ㄴ SPA를 만드는 것이 가능한 라이브러리로 유명한 것은 구글이 만든 풀 스택 프레임워크 “Angular JS”, 페이스북이 만든 “React”
등이 있습니다. Angular JS나 React는 대규모 어플리케이션을 개발할 때 사용합니다.
사이트 전체를 제대로 구성하고 만들 때, 환경설정과 엄격한 설계 등을 진행하기에 적합합니다.
JAVA나 C# 등의 언어를 사용해본 개발자들이 사용하기에 용이합니다.
그에 반에 Vue.js는 가벼운 소규모 어플리케이션을 만드는 것을 목표로 만들어졌습니다.
ex)
* Vue.js 코드네임
ㄴ Vue.js 제작자 Evan You는 버전별로 애니메이션 명을 붙이고 있음
ex)
* 우리는 설치 안하고 CDN으로 사용한다. 설치하려면 node.js도 설치해야한다.
* Vue로 무엇을 만들수 있을까?
ㄴ 주소 : https://v3-docs.vuejs-korea.org/examples/#hello-world
ㄴ 데이터는 무엇인가? (Model)
ㄴ 웹 페이지에서 바뀌는 부분이 어디인지?
ㄴ 표시되는 요소는 무엇인가? (View)
ㄴ HTML의 어느 부분에서 어떤 형식으로 표시되는가?
ㄴ 어떤 식으로 연결되는가? (ViewModel)
ㄴ HTML의 어디가 조작될 때 데이터가 어떤 형식으로 변화되는가?
%
2장에서는 데이터를 표현하는 방법을 배웠습니다. 이번 장에서는 데이터를 HTML 태그의 속성으로 사용하는 방법을 배워봅니다. 주로 v-bind를
이용하는데, 말 그대로 데이터를 바인딩(묶는다, 엮다 정도의 의미)하는 것이라고 이해하면 됩니다. 이미지를 다양하게 묶어서 표현하거나 정렬 등도
자유롭게 할 수 있고 링크 또한 다양한 표현으로 구현할 수 있습니다.
%
* v-bind
ㄴ 요소의 속성을 데이터로 지정
* 이미지 지정하기
ex)
* 링크 지정하기
* 정렬 지정
ex)
* 인라인 스타일
ㄴ 표기법을 익혀둬야 한다.
** 표기법
ㄴ 케밥 표기법, 카멜 표기법, 파스칼 표기법
1) 케밥 표기법 :
단어-단어 font-size
<- HTML이나 css
2) 카멜 표기법 : 단어단어 두번째 단어의 첫글자를
대문자표기 fontSize <-
JavaScript
%
사용자는 브라우저에서 수동적으로 보기만 하지는 않습니다. 무언가 입력하고 선택하기도 하며 그 결과를 브라우저에 바로 볼 수도 있죠. 그렇다면
Vue.js는 이러한 사용자의 행위를 어떻게 처리할까요? 이러한 처리를 가능하게 해주는 v-model을 이용한 기술을 알아봅니다.
%
%
4장과 5장에서 사용자의 행위에 따라 만들어지는 데이터와 이벤트를 어떻게 처리할지를 배웠습니다.
6장에서는 좀더 구체적으로 조건과 반복을 Vue에서는 어떻게 처리하는지 배워봅니다.
조건은 v-if를 사용하고 반복은 v-for를 사용합니다. 프로그래밍에서 조건과 반복은 가장 중요한 기능입니다.
이 장을 잘 학습해두기 바랍니다.
#핵심_키워드
#조건 #반복 #v-if #v-for
%
* 렌더링을 이해하자
ㄴ Vue는 가상 DOM을 사용한다.
ㄴ 스크립 자체를 읽느냐 읽어놓고 display: none;으로 처리하냐의 차이
ㄴ v-if는 아예 읽지를 않는다.
ㄴ v-show는 읽어 놓고 display: none;으로 처리
* v-for와 v-if의 동시사용을 금지하는 이유는 우선순위에 있다.
ㄴ 2.x버전에서는 v-for가 더 높은 우선순위를 가진다.
ㄴ 3.x버전에서는 v-if가 더 높은 우선순위를 가진다.
* 조건에 따른 표시 : v-if
ㄴ 조건부 렌더링
ㄴ 스위칭 함수이다.
ㄴ v-if="조건", v-else-if="조건", v-else
ㄴ 조건에 부합하는 것만 true 처리해서 렌더링 해서 보여준다.
ㄴ 조건에 변수를 사용해서 true, false를 넣어주는 식으로 다룰 수도 있다.
ㄴ true일때 표시되고 false일때 사라진다.
** true 일때만 표시하는 예제
** true와 false를 ON/OFF로 표시하는 예제
** 두수를 입력 해서 아래에 표시 큰수와 작은 수를 표시
* v-on 이벤트 여러개 쓰기
ㄴ v-on:click="메소드(), 메소드()"
* :key="item.id"
ㄴ v-for에서 거의 의무적으로 사용한다.
ㄴ :key 속성은 반복문돌릴 때 꼭 필요합니다. 반복한 요소들을 각각 구분짓기 위한 속성입니다.
ㄴ 데이터 오류안나게 하려고
* 반복 표시 : v-for
ㄴ v-for 디렉티브를 사용해 배열기반 리스트 렌더링
ㄴ item in items 형태로 특별한 문법이 필요험(items은 원본 데이터 배열, item은 반복되는 배열의 값) / in 대신 of
사용 가능
ㄴ v-for="item in items"
ㄴ item는 가상으로 만들어 주는것. 여기에 데이터를 집어넣어주는것
ㄴ 데이터를 li를 사용해서 리스트로 출력할때 많이 사용한다.
** v-for안에 직접 숫자범위를 지정해서 출력 // v-for="작명 in 반복할횟수"
%
<div class="menu">
<a v-for="작명 in 3" :key="작명">Home</a>
</div>
%
** array, object 같은 data에서 가져올 수도 있다.
%
<div class="menu">
<a v-for="작명 in 메뉴들" :key="작명">Home</a>
</div>
%
1. 메뉴들안의 자료 갯수만큼 반복됩니다.
2. 작명한 변수는 반복될 때마다 메뉴들 안에 있던 자료들이 됩니다.
** v-for 안에 변수는 2개까지 작명이 가능합니다.
%
<div class="menu">
<a v-for="(작명,i) in 메뉴들" :key="i">
{{ 작명 }}</a>
</div>
%
() 소괄호를 여시면 작명을 두개까지 허용해줍니다.
첫째 작명한건 아까 설명했던 array안의 데이터가 되는 것이고
둘째 작명한건 0, 1, 2 .. 이런 식으로 1씩 증가하는 정수가 됩니다.
반복 횟수를 알려주는 숫자라고 보시면 되겠습니다.
그래서 i는 출력해보시면 반복될 때마다 0, 1, 2.. 이렇게 변할걸요
그리고 이걸 보통 관습적로 :key 안에 집어넣습니다.
%
* 데이터 형태와 다루기
** 숫자형은 그냥 숫자를 써준다.
** 문자형은 "" or ''로 묶어준다.
** 배열
변수명 : [데이터값1, 데이터값2, 데이터값3]
ㄴ 배열
** 오브젝트
ㄴ {변수명1: 데이터 값1, 변수명2: 데이터 값2, 변수명3: 데이터 값3}
** 오브젝트와 배열 같이 사용
ㄴ 변수명 : [{변수명1: 데이터 값1}, {변수명2: 데이터 값2}, {변수명3: 데이터 값3}]
* 프로퍼티
ㄴ 객체와 데이터 사이
ㄴ getter와 setter가 있다
ㄴ 객체란 이름(name)과 값(value)으로 구성된 프로퍼티의 정렬되지 않은 집합이다.
ㄴ 프로퍼티는 이름(name)과 값(value)으로 이루어진 한쌍이다.
ㄴ 프로퍼티 값으로는 메소드도 올 수 있다.
ㄴ 정적 프로퍼티, 인스턴스 프로퍼티
ㄴ 이름(String, symbol), 값(원시함수, 메소드, 참조변수)
ㄴ 객체의 프로퍼티를 참조하는 방법
ㄴ 객체이름.프로퍼티이름 or 객체이름["프로퍼티이름"] // 객체 프로퍼티 참조하기
ㄴ 객체이름.메소드이름() // 객체 메소드 참조하기
ㄴ 프로퍼티 명을 사용하여 참조 할 수 있다
ㄴ 자바스크립트에서는 숫자, 문자열, 불린, undefined 타입을 제외한 모든 것이 객체입니다.
ㄴ 하지만 숫자, 문자열, 불린과 같은 원시 타입은 값이 정해진 객체로 취급되어, 객체로서의 특징도 함께 가지게 됩니다.
* 배열 데이터를 리스트로 표시하는 예제
ㄴ 배열일땐 넣으면 알아서 하나씩 출력해줌
ㄴ <li v-for="item in myArray">{{ item }}</li><br>
** 배열 데이터를 리스트로 표시하는 예제
* 오브젝트 데이터를 리스트로 표시하는 예제
ㄴ 오브젝트일땐
** 오브젝트 배열 데이터를 리스트로 표시하는 예제
* 숫자를 반복하는 예제
ㄴ 구구단
** 데이터 없이 v-for만으로 구구단을 표시하는 예제
** 데이터를 사용해서 v-for로 구구단을 표시하는 예제
* 배열 데이터를 테이블로 표시하는 예제
* 배열 데이터의 추가와 삭제
ㄴ splice()함수
ㄴ splice(인자1, 인자2, 인자3)
ㄴ 인자1 : index
ㄴ 인자2 : 개수 - 삭제할 개수 / 0: 삭제x / 1: 1개 삭제
ㄴ 인자3 : 추가 또는 변경 데이터
** 버튼으로 리스트에 추가/삭제 예제
** 버튼을 클릭하면 소트하는 예제
ㄴ 음수는 내림차순(b-a: 거꾸로 사전순)
ㄴ 양수는 오름차순(a-b: 사전순)
ㄴ 삼항연산자 // (a < b ? -1 : 1);
ㄴ 문자같은 경우 // listdata.sort();
%
6장까지는 Vue.js의 기본에 대해 알아보았습니다.
7장부터는 좀더 기능적인 예제를 만들어보겠습니다.
그 시작으로 구글 차트를 활용한 예제입니다.
이번 장부터 Vue.js가 어떻게 쓰이는지 그리고 여러분의 프로젝트에 얻을 수 있는 아이디어를 얻을 수 있다면 좋겠습니다
#핵심_키워드
#구글_차트
%