라우팅

사용자가 접속한 주소에 따라 페이지(컴포넌트)가 달라지는 것을 "라우팅" 이라고 한다.

Vue와 같은 SPA(단일 페이지 애플리케이션)의 경우 페이지를 이동할 때마다 서버에 요청해서 페이지를 새로 갱신하는 것이 아니라 클라이언트에서 미리 가지고 있던 페이지를 라우팅을 이용해서 화면을 갱신하게 된다.

 

즉, 라우팅이란 클라이언트에서 url 주소에 따라 페이지가 전환되는 것으로 이해하면 된다.

 

Vue 프로젝트 내부에서는 미리 url 주소를 정의하고, 각 주소마다 Vue 페이지를 연결해 둔다.

사용자가 메뉴를 클릭하거나, 브라우저 주소를 직접 갱신했을 때 미리 정의된 url 주소에 해당하는 Vue 페이지로 화면을 전환한다.

 

Vue는 vue에서 제공하는 공식 플러그인인 vue-router를 이용해서 라우팅을 쉽게 구현할 수 있다.

 

Vue-Router 설치

vue add router

위 명령어를 통해 vue-router 설치 및 기본 설정을 모두 완료할 수 있다.

history mode 사용 여부

설치 중간에 history mode 사용 여부를 묻는 질문이 나오는데, Y를 입력한다.

router, views 폴더

@vue/cli-plugin-router가 설치된다.

설치가 끝나면 src 폴더 내에 router, views 폴더와 파일이 생성된다.

 

이 상태에서 다음 명령어를 통해 서버를 재시작한다.

npm run serve

크롬에 http://localhosts:8080 을 입력하여 아래 화면을 확인한다.

localhost

화면 상단에 Home, About 두 개의 링크가 있다.

번갈아서 링크를 클릭해보면 화면이 전환되는 것을 확인할 수 있다.

vue-router를 설치했더니 자동으로 시작 화면에 링크가 추가되고, router가 동작되는 샘플 파일이 자동으로 생성되었다.

새로 추가된 파일들을 좀 더 자세히 확인해보자.

 

App.vue

App.vue

링크에 대해 정의된 부분이 나온다.

브라우저의 url을 보면 Home을 클릭했을 때는 localhost:8080,

About을 클릭하면 localhost:8080/about 으로 바뀌는 것을 확인할 수 있다.

 

이제 router 폴더의 index.js 파일을 확인해보자.

 

index.js

index.js

routes 배열에 2개의 라우트가 등록되어 있다. 

첫번째는 Home 컴포넌트이고, 두번째는 About 컴포넌트에 대한 라우트이다.

 

{path: '/', name: 'Home', component: Home}

-> path: 브라우저에서 접속하는 url 주소를 정의

-> component: 지정된 path로 들어왔을 때 보여줄 vue 컴포넌트, 앞으로 구현할 vue 파일을 연결하고, 해당 파일을 실행시킨다.

 

index.js 파일 두번째 줄에 있는 import 문이 실제 src/views 경로 내에 있는 Home.vue 파일을 참조한다.

앞으로 개발할 화면에 해당하는 vue 파일을 이렇게 import하고, routes 안에 특정 path와 맵핑을 해주면 사용자가 접속하는 브라우저 url 주소에 따라 원하는 vue 파일을 보여줄 수 있다.

 

routes 배열의 두번째 값에 path와 name 밑에 주석 처리된 부분이 있다.

// route level code-splitting

=> 라우트 레벨에서 코드를 분할하는 방법.

// this generates a separate chunk (about. [hash].js) for this route

=> 이 라우트에 대한 chunk 파일이 분리되어 생성된다.

// which is lazy-loaded when the route is visited

=> 이 라우트에 방문했을 때 lazy-load(지연 로드) 된다.

component: () => import(/* webpackChunkName: "about" */  '../views/About.vue')

=> 주석처럼 라우트 레벨에서 코드를 분할한 후 별도의 chunk 파일을 생성하고, 실제 이 라우트를 방문했을 때 리소스를 다시 로드하게 된다. 여기서 chunk 파일은 about이라는 이름으로 생성된다. 컴포넌트 import 시 /* webpackChunkName: "about" */ 라는 주석으로 chunk 파일 이름을 정의했기 때문이다.

 

첫번째 라우트와 두번째 라우트의 가장 큰 차이는 첫번째는 사용자가 해당 경로에 접근하지 않아도 이미 vue 파일을 import 하는 것이고, 두번째 방법은 path에 접근하기 전까지는 vue 파일에 대한 import 가 일어나지 않는다.

 

Lazy Load(비동기 컴포넌트)

Vue CLI를 통해 빌드를 진행하면 소스 코드가 하나의 파일로 합쳐지는데, 프로젝트가 클수록 전체 코드가 하나로 합쳐지면서 파일 용량이 커지게 된다.

이로 인해, 사용자가 웹사이트에 처음 접속했을 때 한 번에 큰 파일을 다운로드하느라 초기 랜더링 시간이 길어지게 된다.

 

페이지가 한번 로드되고 나서는 페이지 전환이 매우 빠르기 때문에 굉장한 이점이 있긴 하다.

하지만 사용하는 페이지가 별로 없다고 한다면, 사용하지도 않을 페이지를 로드하는게 불편해지게 되는 것이다.

 

Lazy Load는 리소스를 컴포넌트 단위로 분리하여 컴포넌트 혹은 라우터 단위로 필요한 것들만 그때 그때 다운받을 수 있게 하는 방법이다.

Vue CLI3부터 prefetch 기능이 추가가 되었는데, prefetch 기능은 미래에 사용될 수 있는 리소스(about과 같은 비동기 컴포넌트)를 캐시에 저장함으로써 사용자가 접속했을 때 빠르게 리소스를 내려줄 수 있다.

굉장히 유용한 기능이지만, 비동기 컴포넌트로 정의된 모든 리소스를 당장 사용하지 않더라도 캐시에 담아야 하는 단점이 있다.

 

Vue CLI에서 prefetch 기능은 기본값으로 true이다.

때문에 Lazy Load가 적용된 컴포넌트는 모두 prefetch 기능이 적용되어 캐시에 저장된다.

 

prefetch 기능을 사용하지 않을 때

  • 요청 수가 훨씬 줄어든다.
  • 라우터가 이동될 때마다 해당 라우터에서 필요한 리소스를 그때 그때 가져온다.
    (한번 가져온 리소스는 다시 요청하지 않는다.)

prefetch 기능을 사용할 때

  • 요청 수가 많아진다.
  • 애플리케이션의 첫 화면 접속 시 랜더링 속도가 느려질 수 있다.
  • 첫 화면에서 사용되는 리소스는 마지막에 다운받게 되는데, 아직 사용하지 않는 화면의 리소스를 모두 내려받고 첫 화면의 리소스를 다운받기 때문이다.

오히려 초기 랜더링은 prefetch 기능을 사용하지 않아야 로딩이 빠르다.

prefetch 기능은 다른 화면에서 사용할 리소스를 미리 내려 받아, 빠른 화면 전환을 위해 사용되기 때문에..

"정말 필요한 컴포넌트에 대해 prefetch 기능을 적용하는 것이 좋다."

 

Vue CLI에서 prefetch 기능이 디폴트로 true이기 때문에 prefetch 기능을 끄는 법을 알아보자.

vue-project/blob/master/ 경로에 Vue.config.js 파일을 생성하고 다음 코드를 추가한다.

prefetch 기능을 삭제해도, 비동기 컴포넌트인 Lazy Load로 컴포넌트를 사용할 수 있다.

컴포넌트를 import할 때, 다음과 같이 처리하면 된다.

import(/* webpackPrefetch: true */ './views/About.vue');

/* webpackPrefetch: true */ 를 넣어주면 해당 컴포넌트에 대해 prefetch가 적용된다.

Vue 개발 시 기본적으로 prefetch 기능은 끄는 것을 추천한다.

 

routes/index.js의 첫번째 줄을 보면 vue에서 라우팅을 처리하기 위해 vue-router를 import 하는 것을 볼 수 있다.

이렇게 정의된 router는 main.js 에 등록을 해줘야 실제 적용이 되어 사용할 수 있다.

 

main.js 파일을 살펴보자.

main.js 파일

3번째 라인을 보면 './router' 를 통해 router 폴더의 index.js가 import 된다.

마지막 라인에서는 최상위 컴포넌트인 App.vue로 app을 생성하고, use(router) 코드로 App.vue에서 router가 사용될 수 있도록 추가했다.

그리고 App.vue를 public 폴더의 index.html에 정의되어 있는 id="app"인 html element에 마운트 시키는 것이다.

 

Home, About을 클릭할 때마다 연결되어 있는 vue 파일이 호출이 되고, 해당 파일의 코드가 실행되어서 화면에 나타나는 것을 보았다.

이렇게 .vue로 작성된 파일을 컴포넌트로 한다.

 

'Study > Front' 카테고리의 다른 글

[Vue.js] Vue CLI로 Vue 프로젝트 생성하기  (0) 2021.11.14
VSCode 단축키  (0) 2021.03.02
VSCode 확장 기능 설정하기  (0) 2021.02.23

Vue CLI - Vue Command Line Interface

Vue 프로젝트를 빠르게 구성하고, 빌드, 배포할 수 있게 도와주는 플러그인

 

Vue CLI 설치

npm install -g @vue/cli

 

npm에 등록된 패키지는 npm install 패키지명 을 통해 설치할 수 있다.

패키지를 설치할 때 사용가능한 옵션이 여러 가지 있지만, -g와 --save에 대해서만 짚고 넘어간다.

 

npm install -g 패키지명

-g(global) 옵션은 설치하는 패키지가 현재 디렉토리뿐만 아니라 앞으로 생성하게 되는 모든 프로젝트에서 사용할 수 있는 global 패키지로 등록된다.

 

npm install 패키지명 --save

현재 작업중인 디렉토리 내에 있는 ./node_modules에 패키지를 설치한다.

그 다음에 package.json 파일에 있는 dependencies 객체에 지금 설치한 패키지 정보를 추가한다.

설치되는 모든 패키지는 node_modules 디렉토리에 설치된다.

node_modules 디렉토리에서 현재 사용하고 있는 모든 패키지를 확인할 수 있다.

 

--save 옵션을 사용하면 package.json 파일에 설치한 패키지 정보가 추가되기 때문에

package.json 파일을 팀원들에게 공유하면 명령어 npm install을 통해 현재 내 프로젝트 디렉토리에 없는 패키지 전체를 한번에 설치할 수 있다.

 

vue create vue-project

디렉토리명을 vue-project 로 하여 프로젝트를 설치한다.

Vue 3 버전을 사용할 것이므로 아래의 Vue 3을 선택하여 설치를 진행한다.

그렇게 되면 왼쪽 패널에 Vue 프로젝트를 생성하면서 vue-project 의 이름으로 폴더가 생성되고,

프로젝트 폴더 하위로 Vue 프로젝트 개발을 위한 기본적인 파일들이 자동으로 생성된다.

 

Vue 프로젝트 실행

프로젝트 생성이 끝나면 터미널에 표시된 가이드대로 명령어를 입력하여 프로젝트를 실행해본다.

 

cd vue-project

프로젝트 폴더로 이동

 

npm run serve

서버가 시작되며, 프로젝트가 기본 포트 8080으롷 실행된다.

 - 기본 포트 이외의 포트를 사용하려면 npm run serve -- --port 포트번호  명령어로 직접 포트번호를 지정할 수 있다.

 ex) npm run serve -- --port 3000

 

크롬을 켜서 확인을 해보고, 아래 화면이 나타나면 Vue 프로젝트가 정상적으로 설치된 것이다.

Vue 프로젝트 실행 화면

 

 

Vue 프로젝트 파일 구조

설치된 프로젝트에 어떤 파일들이 생성되었는지 기본적인 구조를 살펴보자

Vue 프로젝트 파일 구조

node_modules npm으로 설치된 패키지 파일이 모여 있는 디렉토리
public 웹팩(webpack)을 통해 관리되지 않는 정적 리소스가 모여 있는 디렉토리
src/assets 이미지, css, 폰트 등을 관리하는 디렉토리
src/components Vue 컴포넌트 파일이 모여 있는 디렉토리
App.vue 최상위(root) 디렉토리
main.js 가장 먼저 실행되는 자바스크립트 파일로써, Vue 인스턴스를 생성하는 역할
.gitignore 깃허브에 업로드할 때 제외할 파일 설정
babel.config.js 바벨(Babel) 설정 파일
package-lock.json 설치된 package의 dependency 정보를 관리하는 파일
package.json 프로젝트에 필요한 package를 정의하고 관리하는 파일
README.md 프로젝트 정보를 기록하는 파일

 

package.json 파일 구성

name 프로젝트 이름을 입력
version 프로젝트의 버전 정보를 입력
private 이 옵션을 true로 설정 시, 해당 프로젝트를 npm으로 올릴 수 없다. 개발자가 실수로 해당 프로젝트를 npm에 올리더라도 이 옵션이 true로 되어 있으면 배포를 막을 수 있다.
scripts 프로젝트 실행과 관련된 명령어들을 등록한다.
프로젝트 실행, 빌드 등과 같이 프로젝트 개발, 운영 시 사용되는 다양한 scripts 명령어를 등록하고, 쉽게 사용할 수 있다.
개발자가 직접 정의한 script는 npm run 명령어로 사용하고, npm에서 제공되는 명령어는 npm 명령어로 사용한다.
dependencies 사용중인 패키지 정보를 입력한다.
devDependencies 프로젝트 배포 시 필요없는, 개발 시에만 필요한 패키지 정보가 등록되는 곳
eslintConfig ESLint는 일관성 있게 코드를 작성하고 버그를 식별하고 회피할 목적으로 ECMAScript/Javascript 코드에서 발견된 패턴을 개발자에게 알려주는 플러그인이다.
구문 분석을 위해 babel-eslint를 파서로 사용
browserslist 전 세계 사용 통계 속에서 상위 1% 이상 사용된 브라우저, 각 브라우저의 최신 버전 2개를 지원하도록 한다.

패키지를 설치하면 dependencies, devDependencies, eslintConfig 등은 자동으로 채워지며, 

name, version, private 등은 사용자가 직접 입력해서 등록한다.

 

사실 package.json을 이루는 옵션은 매우 많다.

표로 정리한 내용은 그 중에서도 Vue CLI를 통해서 작성된 옵션들이다.

 

 

'Study > Front' 카테고리의 다른 글

[Vue.js] Vue Router 설정  (0) 2021.11.15
VSCode 단축키  (0) 2021.03.02
VSCode 확장 기능 설정하기  (0) 2021.02.23

단축키는 정말 활용도가 높습니다..

쓰다 보면 또 손에 익기 때문에 쓰는 것을 추천!

 

자주 사용하는 단축키를 정리해보겠습니다!

 

단축키 설명
Ctrl + F 찾기
Ctrl + H 찾아서 바꾸기
Ctrl + \ 화면 분할
Ctrl + w 화면 끄기
Alt + Up 커서가 있는 줄 위로 1줄 이동
Alt + Down 커서가 있는 줄 아래로 1줄 이동
Shift + Alt + Up 커서가 있는 줄 위 줄에 복사
Shift + Alt + Down 커서가 있는 줄 아래 줄에 복사
Tab 들여쓰기
Shift + Tab 내어쓰기

 

제가 자주쓰는 단축키는 이정도가 되겠습니다!

특히 Alt+Up과 Alt+Down이 저한테는 굉장히 편리한 단축키라 몰랐다면 손해보는 느낌이었을 거 같네요 ^ㅇ^

단축키는 이정도만 알아도 굉장히 삶의 질을 높일 수 있기 때문에 모르셨다면 한번 사용해 보는 것도 추천드려용!

 

'Study > Front' 카테고리의 다른 글

[Vue.js] Vue Router 설정  (0) 2021.11.15
[Vue.js] Vue CLI로 Vue 프로젝트 생성하기  (0) 2021.11.14
VSCode 확장 기능 설정하기  (0) 2021.02.23

VSCode를 사용하기에 앞서 사용하면 편리한 확장 기능들을 설정해보려 합니다.

윈도우 기준이므로 맥과는 다른 부분이 있을 수 있습니다.

확장 기능은 아래 화면의 가장 아래 버튼인 Extension에서 설치를 통해 설정할 수 있습니다.

Extension


1. 한국어 확장 팩 for VSCode

Korean Language Pack for VSCode

우선 저는 영어를 잘하지만 필요한 분들이 있을 수 있으니 알려드리는 VSCode 한국어 확장 팩입니다!

설치를 진행하고 VSCode를 재시작하게 되면 한국어가 지원됨을 확인할 수 있습니다.

 

 

2. Beautify

Beautify

이름만 봐도 알 수 있듯이 예뻐질 수 있는 기능입니다.

어지럽게 작성된 코드를 Beautify 기능을 통해 예쁘게 만들어 주기 때문에 가독성을 높일 수 있습니다.

위와 같은 화면에서 설치을 진행하고~

 

파일 -> 기본 설정 -> 바로 가기 키

설정을 위해 VSCode 상단의 파일 -> 기본 설정 -> 바로 가기 키를 선택합니다!

 

 

Beautify selection

그리고 Beautify를 검색해서 Beautify selection을 선택합니다!

 

 

Ctrl + Alt + L 로 키 바인딩

키 바인딩을 눌러서 원하는 키로 설정합니다. (Ctrl + Alt + L)을 추천합니다^ㅇ^

바인딩을 마치고 사용을 한 번 해보겠습니다.

 

안 예쁜 코드

위처럼 안 예쁜 코드가 있을 때 예쁘게 만들어줄 부분을 선택하여~

 

Ctrl + Alt + L 키 입력

바인딩했던 키를 누르면~

 

예뻐진 코드

예쁘게 다듬어진 코드를 확인할 수 있습니다^^

 

3. Live Server

Live Server

Live Server는 실시간 미리보기 같은 기능입니다!

코드를 작성하고 로컬에서 확인이 가능하기 때문에 잘만 쓰면 유용하게 사용할 수 있습니다! 

위 화면에서 Live 

 

1. Go Live
2. 우클릭

설치가 끝나면 위와 같이 두가지 방법을 통해 Live Server을 활용할 수 있습니다!

 

1번 방법의 경우에 우측 하단의 Go Live 버튼을 클릭하여 실행할 수 있고,

2번 방법의 경우는 우클릭 -> Open with Live Server 를 통해 실행할 수 있습니다!

 

Live Server 활용

실행하게 되면 위와 같은 화면을 통해 작성한 코드를 실시간으로 미리보기 할 수 있습니다!

 

Live Server 종료

실행하게 되면 Go Live 버튼이 Port: 5500으로 바뀌게 되는데, 확인이 끝난 후 종료할 때 버튼을 클릭하여 종료할 수 있습니다!

 


이번 포스팅에서는 VSCode와 같이 사용하면 편리한 확장 기능들에 대해 알아보았습니다.

굳이 사용해야 하는 것은 아니지만, 사용하면 편리하고 삶의 질이 높아지기 때문에 유익한 것 같습니다.

다른 좋은 확장 기능들이 있다면 댓글로 공유하면 좋을 거 같습니다^ㅇ^

'Study > Front' 카테고리의 다른 글

[Vue.js] Vue Router 설정  (0) 2021.11.15
[Vue.js] Vue CLI로 Vue 프로젝트 생성하기  (0) 2021.11.14
VSCode 단축키  (0) 2021.03.02

+ Recent posts