-
라우터&HTTP 통신Vue.js 2020. 2. 13. 22:52
- 상용 웹 앱을 개발할 경우 여러 페이지로 구성되어 있기 때문에 페이지 간에 이동을 돕는 라우터를 사용해야한다.
- 사용자에게 의미 있는 데이터를 보여주기 위해 서버에서 데이터를 가져오는 HTTP 통신도 필요하다.
라우팅
- 웹 페이지 간의 이동 방법을 말함.
- 싱글 페이지 어플리 케이션(SPA)에서 주로 사용
*싱글 페이지 어플리케이션
- 페이지를 이동할 때마다 서버에 요청하여 새로 갱신하는게 아니라 미리 해당 페이지를 받아 놓음
- 페이지 이동시에 클라이언트의 라우팅을 이용하여 화면을 갱신하는 패턴
라우팅의 장점
- 화면 간의 전환이 매끄럽다.
뷰 라우터
- 뷰에서 라우팅 기능을 구현할 수 있도록 지원하는 라이브러리
- 뷰 라우터를 구현할 때 필요한 특수 태그와 기능
-<router-link to ="URL 값">
-<router-view>
*<router-link to ="URL 값">
- 페이지 이동태그. 화면에서는 <a>로 표시 클릭하면 URL로 넘어간다.
*<router-view>
- 페이지 표시 태그. 변경 되는 URL에 따라 해당 컴포넌트를 뿌려주는 영역
*mount()
- el 속성과 동일하게 인스턴스를 화면에 붙이는 역할을 한다.
- 인스턴스를 생성할때 el를 넣지 않았더라도 생성하고 나서 mount()를 사용하면 인스턴스를 화면에 붙일 수 있다.
- 공식문서에는 el을 지정하지 않고 $mount()를 붙이는 식으로 안내하고 있다.
*주소의 # 없애기
- 주소의 hash 값을 없애려면 history mode를 사용한다.
여러 개의 컴포넌트 동시 표현하기
- 네스티드 라우터와 네임드 뷰를 사용한다.
네스티드 라우터
- 페이지를 이동할 때 최소 2개 이상의 컴포넌트를 화면에 나타낼수 있다.
- 상위 컴포넌트 1개에 하위 컴포넌트 1개를 포함하는 구조로 되어 있다.
- 네스티드 라우터를 사용하면 URL에 따라 컴포넌트의 하위 컴포넌트가 다르게 표시된다.
*주소를 하나씩 치고 들어갔을 때 결과
- 첫번째 url 입력
- user의 하위 컴포넌트 url 입력
- user의 다른 하위 컴포넌트 url 입력
네임드 뷰
- 특정 페이지로 이동했을 때 여러 개의 컴포넌트를 동시에 표시하는 라우팅 방식
- 네스티드 라우터와 달리 같은 레벨에서 여러 개의 컴포넌트를 한번에 표시
- router-view를 추가하고 이름을 부과한다. script에서 components 속성에 정의하는 컴포넌트와 매칭하기 위함이다.
- 컴포넌트를 생성한다.
- new VueRouter를 하나 정의하고 라우터 정보를 그 안에 정의한다.
컴포넌트는 router-view의 이름과 동일하게 해준다.
- 인스턴스 해준다.
뷰 HTTP 통신
- 웹 앱 HTPP통신의 대표적인 사례는 제이쿼리의 ajax가 존재한다.
- ajax를 지원하기 위한 vue의 라이브러리가 존재한다. -뷰 리소스 , 액시오스-
액시오스
- 가장 많이 사용되는 HTTP 통신 라이브러리
- Promise 기반의 API형식이 제공되어 별도의 로직을 구현할 필요 없이 API만으로도 간편하게 원하는 로직 구현
*Promise
- 서버에 데이터를 요청하여 받아오는 동작과 같은 비동기 로직 처리에 유용한 자바스크립트 객체
- 데이터를 요청하고 받아올 때까지 기다렸다가 화면에 나타내는 로직을 실행해야 할 때 주로 사용
-자바스크립트는 단일 스레드로 코드를 처리하기 때문에 특정 로직의 처리가 끝날때까지 기다려주지 않음- - 데이터를 받아 왔을 때 Promise로 데이터를 화면에 표시하거나 연산을 수행하는 등의 특정 로직을 수행
- 해당 URL 주소에 대해 HTTP GET ,POST요청을 보낸다.
- 서버에서 데이터를 받아오면 then()안의 로직이 처리한다.
- 데이터를 받아올 때 오류가 생기면 catch()가 처리한다.
- 결과값을 보면 data 속성이 일반 문자열 형식이 아닌 객체 형태이다.
'Vue.js' 카테고리의 다른 글
뷰 프로젝트 구성방법 (0) 2020.02.14 화면 개발을 위한 기본 지식과 팁 (0) 2020.02.14 같은 레벨의 컴포넌트 간 통신 (0) 2020.02.12 상-하위 컴포넌트의 관계 (0) 2020.02.12 [뷰 컴포넌트 통신] 컴포넌트 간 통신과 유효 범위 (0) 2020.02.10