Vue

프로젝트 초기 설정

SeeQ 2023. 10. 20. 09:34
728x90
반응형

반응형 웹 디자인 태그 설정

반응형 웹 디자인은 하나의 웹 사이트로 PC, 모바일, 태블릿 등 어느 기기에서도 깨지지 않는 자연스러운 레이아웃을 제공하는 웹 디자인 방법입니다.

어썸 아이콘 CSS, 폰트와 파비콘 설정

어썸 아이콘 CSS, 폰트와 파비콘 설정 코드 화면

index.html에 코드를 추가합니다. 이 코드는 애플리케이션의 예쁜 UI를 위해 버튼은 일반 문자열 대신 어썸 아이콘을 활용합니다. 어썸 아이콘은 구글의 머티리얼 아이콘보다 더 많은 종류를 제공하며 대중적으로 사용하는 아이콘 CSS입니다.

애플리케이션에서 사용할 폰트와 파비콘을 설정합니다. 파비콘은 브라우저로 웹 앱을 실행했을 때 웹 사이트 제목의 왼쪽에 표시되는 로고를 의미합니다. 폰트는 구글 폰트 중 Ubuntu를 사용하고, 파비콘은 뷰에서 제공하는 기본 로고를 사용했습니다.

컴포넌트 생성

프로젝트 폴더에서 src 폴더 밑에 components 폴더에 있던 원래 파일은 삭제하고 그 아래에 TodoHeader.vue, TodoInput.vue, TodoList.vue, TodoFooter.vue를 생성합니다.

컴포넌트 같은 경우에는 관례상 src/components 폴더에서 관리를 합니다. 이렇게 컴포넌트를 한곳에 모아 두면 폴더 구조도 깔끔하고 추후에 재활용할 때도 접근하기 쉽습니다.

컴포넌트 생성 후 프로젝트 폴더 구조

그럼 각 컴포넌트를 한눈에 구분할 수 있도록 아래와 같이 간단한 코드를 삽입합니다.

TodoHeader.vue, TodoInput.vue, TodoList.vue, TodoFooter.vue

.vue 파일 4개의 파일을 다 똑같은 코드를 삽입합니다. 파일의 기본 구조에서 <template> 영역에 <div> 태그를 추가하고 컴포넌트 이름을 텍스트로 삽입하였습니다. 이렇게 하면 컴포넌트를 등록했을 때 다른 컴포넌트와의 구분이 쉬워집니다.

컴포넌트 등록

앞에서 생성한 4개의 컴포넌트를 등록하여 화면에 나타내 보겠습니다. 애플리케이션에서 사용할 컴포넌트는 모두 최상위 컴포넌트인 App.vue에 등록합니다. 기존 코드를 내용을 모두 지우고 아래 코드만 남깁니다.

불필요한 코드를 제거한 App.vue 파일

이 지역 컴포넌트 등록 형식을 App.vue 파일에 적용하면 아래와 똑같습니다.

App.vue에 등록한 지역 컴포넌트

하지만 이렇게 했을 때 과연 TodoHeader.vue, TodoInput.vue, TodoList.vue, TodoFooter.vue 내용을 올바르게 인식할 수 있을까요? 정답은 아닙니다. 이유는 App.vue 파일에서 TodoHeader.vue를 비롯해 4개의 컴포넌트 파일 내용을 불러오는 코드를 추가하지 않았기 때문이죠.

App.vue 파일에서 다른 컴포넌트의 내용을 import from 구문으로 다 받아와서 components 속성에 연결해 주기만 하면 됩니다. 아래와 같이 하시면 됩니다.

import 구문으로 컴포넌트 내용을 불러와서 등록하는 코드

컴포넌트 등록을 완료하였으니 마지막으로 컴포넌트 태그 4개를 App.vue의 <div id="app"> 태그 안에 추가합니다.

등록한 컴포넌트 4개를 HTML에 표시하는 코드

이렇게 추가한 후 파일을 저장합니다. 명령 프롬프트에서 npm run serve를 이용해 서버를 실행시키면 아래와 같은 화면이 나옵니다. 만약 이미 서버가 실행 중이라면 변경된 코드를 저장했을 때 자동으로 화면이 새로 고침됩니다.

컴포넌트가 모두 등록된 결과 화면과 뷰 개발자 도구를 실행한 화면

크롬 개발자 도구를 열어 뷰 개발자 도구를 확인하면 App이라는 최상위 컴포넌트 아래에 TodoHeader, TodoInput, TodoList, TodoFooter가 각각 하위 컴포넌트로 생성된 것을 확인할 수 있습니다.

728x90
반응형
LIST

'Vue' 카테고리의 다른 글

할 일 목록 만들기  (0) 2023.10.20
컴포넌트 내용 구현하기  (0) 2023.10.20
뷰 CLI 설치, 프로젝트 생성  (0) 2023.10.20
뷰 템플릿, 데이터 바인딩  (0) 2023.10.20
Axios  (0) 2023.10.20