vue.js

[Vue.js] #5 뷰 템플릿(template)이란?

로춘남 2021. 11. 11. 10:41
728x90


뷰 템플릿(Template)란?

: HTML, CSS 등의 마크업 속성과 뷰 인스턴스에서 정의한 데이터 및 로직들을 연결하여 사용자가 브라우저에서 볼 수 있는 형태의 HTML로 변환해주는 속성

 

템플릿에서 사용하는 뷰의 속성과 문법

 

1) 데이터 바인딩(Data Binding)

: HTML 화면 요소를 뷰 인스턴스의 데이터와 연결하는것을 의미.

{{ }} - 콧수염 괄호

: 뷰 인스턴스의 데이터를 HTML 태그에 연결하는 가장 기본적인 텍스트 삽입 방식.

v-bind

: 아이디, 클래스, 스타일 등의 HTML 속성 값에 뷰 데이터 값을 연결 할 때 사용하는 데이터 연결 방식

 

2) 자바스크립트 표현식

 

3) 디렉티브(Directive)

: HTML 태그 안에 v- 접두사를 가지는 모든 속성을 의미.

ex)

<a v-if="flag">두잇</a>

* 주요 디렉티브

디렉티브 이름 역  할
v-if 지정한 뷰 데이터 값의 참, 거짓 여부에 따라 해당 HTML 태그를 화면에 표시하거나 표시하지 않음.
v-for 지정한 뷰 데이터의 개수만큼 해당 HTML 태그를 반복 출력
v-show v-if와 유사하게 데이터의 진위 여부에 따라 해당 HTML 태그를 화면에 표시하거나 표시하지 않음. 다만, v-if는 해당 태그를 완전히 삭제하지만 v-show는 css 효과만 display:none;으로 주어 실제 태그는 남아 있고 화면 상으로만 보이지 않음.
v-bind HTML 태그의 기본 속성과 뷰 데이터 속성을 연결
v-on 화면 요소의 이벤트를 감지하여 처리 할 때 사용. for example ! v-on:click은 해당 태그의 클릭 이벤트를 감지하여 특정 메시드를 실행 할 수 있음
v-model form에서 주로 사용되는 속성. 폼에 입력한 값을 뷰 인스턴스의 데이터와 즉시 동기화. 화면에 입력된 값을 저장하여 서버에 보내거나 watch와 같은 고급 속성을 이용하여 추가 로직 수행 가능. <input>, <select>, <textarea> 태그에만 사용 가능
<html>
  <head>
    <title>Vue Template - Directives</title>
  </head>
  <body>
    <div id="app">
      <a v-if="flag">두잇 Vue.js</a>
      <ul>
        <li v-for="system in systems">{{ system }}</li>
      </ul>
      <p v-show="flag">두잇 Vue.js</p>
      <h5 v-bind:id="uid">뷰 입문서</h5>
      <button v-on:click="popupAlert">경고 창 버튼</button>
    </div>

    <script src="https://cdn.jsdelivr.net/npm/vue@2.5.2/dist/vue.js"></script>
    <script>
      new Vue({
        el: '#app',
        data: {
          flag: true,
          systems: ['android', 'ios', 'window'],
          uid: 10
        },
        methods: {
          popupAlert: function() {
            return alert('경고 창 표시');
          }
        }
      });
    </script>
  </body>
</html>

4) 이벤트 처리

 

5) 고급 템플릿 기법

computed 속성 : 첫 번째 장점. data 속성 값의 변화에 따라 자동으로 다시 연산. 두 번째 장점. 캐싱.(연산의 결과값을 미리 저장하고 있다가 필요할 떄 불러오는 동작)

 

computed속성과 methods 속성의 차이점

: moethods 속성은 호출할 때만 해당 로직이 수행. computed 속성은 대상 데이터의 값이 변경되면 자동적으로 수행. 다시말해... 수동적으로 데이터를 갱신하느냐, 능동적으로 데이터를 갱신하느냐?

 

watch 속성

: 데이터 변화를 감지하여 자동으로 특정 로직을 수행. computed속성과 유사하지만 computed는 내장 API를 활용한 간단한 연산 정도로 적합. watch속성은 데이터 호출과 같이 시간이 상대적으로 더 많이 소모되는 비동기 처리에 적합.

 

뷰 프로젝트 구성방법

 

싱글 파일 컴포넌트 체계란?

.vue 파일로 프로젝트 구조를 구성하는 방식을 말함.

.vue파일 1개는 뷰 애플리케이션을 구성하는 1개의 컴포넌트와 동일.

 

[.vue 파일의 기본 구조]

[화면에 표시할 요소들을 정의하는 영역]
ex) HTML + 뷰 데이터 바인딩

<template>
	<!--HTML태그 내용-->
</template>

[뷰 컴포넌트의 내용을 정의하는 영역]
ex) template, data, methods 등
<script>

[템플릿에 추가한 HTML 태그의 CSS 스타일을 정의하는 영역]
export default {
	//자바스크립트 내용
    }
</script>

<style>
	/* CSS 스타일 내용 */
</style>

※ 뷰 CLI

싱글 파일 컴포넌트 체계를 사용하기 위해서는 .vue 파일을 웹 브라우저가 인식할 수 있는 형태의 파일로 변환해 주는 웹팩(Webpack)이나 브라우저리파이(Browserify)와 같은 도구가 필요함. → (웹팩과 브라우저리파이는 꽤나 깊어서 다음에 따로 학습)

 

깊은 도구를 대신하여 뷰 개발자들이 좀더 편하게 작업하기 위해 뷰 코어 팀에서 CLI를 제공.

[뷰CLI 설치하는법]

해당 명령을 입력해주면 설치가 진행되고,

npm install vue-cli -global

vue 라는 명령어를 입력했을때, 결과화면처럼 나왔다면 설치가 완료된 것이다.

 

뷰 CLI명령어

템플릿 종류 설 명
vue init webpack 고급 웹팩 기능을 활용한 프로젝트 구성 방식. 테스팅, 문법 검사 등을 지원
vue init webpack-simple 웹팩 최소 기능을 활용한 프로젝트 구성 방식. 빠른 화면 프로토타이핑용
vue init browserify 고급 브라우저리파이 기능을 활용한 프로젝트 구성 방식. 테스팅, 문법 검사 등을 지원
vue init broiwserify-simple 브라우저리파이 최소 기능을 활용한 프로젝트 구성 방식. 빠른 화면 프로토타이핑용
vue init simple 최소 뷰 기능만 들어간 HTML 파일 1개 생성
vue init pwa 웹팩 기반의 프로그레시브 웹 앱(PWA, Progressive Web App) 기능을 지원하는 뷰 프로젝트

webpack-simple 실행하여 npm install까지 진행하면 프로젝트 구조가 완성된다.

그러면 본인이 설치할떄 설정한 폴더에 위와 같은 파일들이 생성된 것을 확인 할 수 있음.

 

설치가 된 이후

npm run dev

를 실행시켜주면 브라우저가 실행되면서 다음과 같은 화면이 나타난다.

프로젝트 파일의 index.html이 실행된 모습
npm run dev 이후 명령 크롬프트 모습

로컬8080에서 구동되며 웹팩 결과(output)이 /dist/에서 제공이 된다는 의미

 

 

뷰 로더(Vue Loader)

: 웹팩에서 지원하는 라이브러리. 싱글 파일 컴포넌트 체계에서 사용하는 .vue를 브라우저에서 실행 가능한 웹 페이지의 형태로 변환해줌.

 

아래는 웹팩의 뷰 로더 처리 부분

module: {
	rules: [
    	{
        	test: \/.vue$/,					//대상 파일 지정
            loader: 'vue-loader',			//사용할 로더 지정
            options: {
            	loaders: {
                }
             }   
           },

프로젝트 구조에 뷰 로더가 적용된 모습

 

[뷰 CLI로 프로젝트를 구성하는 과정]

1) 뷰 CLI 설치 npm i vue-cli -g

2) 프로젝트 생성 vue init webpack-simple

3) 관련 라이브러리 설치 npm install

4) 프로젝트 구동 npm run dev

 

Do it! vue.js 입문 완독완료

뒷부부은 프로젝트 실습과 + 고급개발자로 가는 Tip

프로젝트 실습 이후 vue.js에 대해 알아보았다. 단순하게 맛보기라 더 심화적으로 공부를 해봐야겠지.


참조 : Do it! vue.js 입문

728x90

'vue.js' 카테고리의 다른 글

[Vue.js] #4 뷰 라우터(Router)란?  (0) 2021.11.10
[Vue.js] #3 뷰 컴포넌트란?  (3) 2021.11.09
[Vue.js] #2 뷰 인스턴스란?  (0) 2021.11.08
[Vue.js] #1 Vue.js 란? 뷰제이에스  (0) 2021.11.08