[Vue] Vue Router

Jinga·2023년 5월 9일
0

Vue

목록 보기
7/13
post-thumbnail

UX&UI

    UX

    • User Experience의 약어로, 사용자 경험을 뜻한다.
    • 제품, 서비스, 앱, 웹사이트 등 사용자와 상호작용하는 모든 디지털 혹은 물리적인 제품이나 서비스의 사용성과 만족도를 높이는 것을 목표로 한다.
    • UX 디자인은 사용자가 제품이나 서비스를 이용하는 과정에서 불편한 점이나 불만족스러운 부분을 최소화하고, 사용자가 제품 혹은 서비스를 쉽고 간편하게 이용할 수 있도록 설계하는 것을 중심으로 한다.
    • 예시

      • Google : 사용자의 경험을 이해하기 위한 통계 모델을 설계
      • MS : 리서치를 기획하고 사용자에 대한 지표를 정의
      • Meta : 정성적인 방법과 정량적인 방법을 사용해서 사용자 조사를 실시

    UI

    • User Interface의 약자로, 사용자 인터페이스를 의미한다.
    • 소프트웨어나 웹사이트 등의 디지털 제품에서 사용자가 프로그램을 조작하거나 정보를 입력하고 출력하는 등의 모든 상호작용을 위한 인터페이스를 말한다.
    • 사용자가 제품을 보다 쉽고 빠르게 사용할 수 있도록 설계하는 것이 UI 디자인의 목표이다.
    • 예시

      • Google : 다양한 디자인 프로토타이핑 툴을 사용해서 개발 가이드를 제공
      • MS : 시각 디자인을 고려해서 체계적인 디자인 컨셉을 보여준다
      • Meta : 제품을 이해하고 더 나은 UI Flow와 사용자 경험을 디자인

    Interface

    • 시스템 내에서 서로 다른 두 개의 대상이 서로 상호 작용할 수 있도록 만들어 주는 연결 부분을 의미한다.
    • 즉, 사용자가 기기를 쉽게 동작 시키는데 도움을 주는 시스템이라고 할 수 있다.
    • 인터페이스는 기술적인 측면에서만 존재하는 것이 아니라, 디자인, 사용성 등과 같은 다양한 영역에서도 사용된다.

Routing

    Routing

    • 네트워크에서 경로를 선택하는 프로세스
    • 웹 애플리케이션에서 클라이언트 요청을 처리하고, 적절한 응답을 반환하는 과정이다.
    • 이를 위해 URI(Uniform Resource Identifier)를 분석하고 해당 URI에 대응하는 컴포넌트 혹은 페이지를 렌더링한다.
    • 예시 : /articles/index/에 접근하면 articles의 index에 대한 결과를 보내주는것

    Routing in SSR

    • Server가 모든 라우팅을 통제한다.
    • URL로 요청이 들어오면 응답으로 완성된 HTML을 제공 => Django로 보낸 요청의 응답 HTML은 완성본인 상태였다.
    • 즉, Routing(URL)에 대한 결정권을 서버가 가진다.

    Routing in SPA / CSR

    • 서버는 하나의 HTML(index.html)만을 제공한다.
    • 이후에 모든 동작은 하나의 HTML 문서 위에서 JavaScript 코드를 활용한다.
      • DOM을 그리는데 필요한 추가적인 데이터가 있다면 axios와 같은 AJAX요청을 보낼 수 있는 도구를 사용하여 데이터를 가져오고 처리한다
    • 즉, 하나의 URL만 기잘 수 있다.

    Routing를 사용하는 이유

    • 사용자 경험 개선: Routing을 사용하면 SPA(Single Page Application)을 구현할 수 있으며, 이는 사용자가 페이지를 이동할 때마다 새로운 페이지를 로드하는 것이 아니라 동적으로 컨텐츠를 변경하여 사용자 경험을 향상시킨다.
    • URL 관리: Routing은 URL을 사용하여 사용자가 어떤 페이지에 있는지 알려줍니다. 이를 통해 사용자가 즐겨찾기에 추가하거나 브라우저의 뒤로가기 버튼을 사용하여 이전 페이지로 돌아갈 수 있다.
    • 검색 엔진 최적화(SEO): 검색 엔진은 웹사이트의 페이지를 인덱싱하기 위해 URL을 사용합니다. Routing을 사용하면 URL이 정리되고 의미 있는 정보를 전달하므로 검색 엔진에서 웹사이트를 더 잘 인식할 수 있다.
    • 유지보수 및 코드 관리: Routing을 사용하면 코드를 모듈화하고 재사용할 수 있습니다. 이를 통해 코드를 더 쉽게 유지보수하고 관리할 수 있다.

Vue Router

    Vue Router란?

  • Vue를 위한 공식 라우터 라이브러리이며, 애플리케이션에서 클라이언트 사이드 라우팅을 구현할 수 있도록 지원하며, SPA(Single Page Application)를 개발할 때 많이 사용된다.
  • Vue Router를 사용하면 사용자가 브라우저에서 URL을 변경하거나 링크를 클릭할 때 Vue.js애플리케이션 내에서 컴포넌트를 동적으로 로드하고 표시할 수 있다.
  • Routes에 컴포넌트를 매핑한 후, 어떤 URL에서 렌더링 할지 알려준다.
    • 즉, SPA를 MPA처럼 URL을 이동하면서 사용 가능하다.
    • SPA의 단점 중 하나인 "URL이 변경되지 않는다."를 해결 해 준다.

    Vue Router 설치

    • Vuex와 같은 방식으로 설치 및 반영
    • router 설치

    Vue Router 용어 설명

      History mode

      • 브라우저의 History API를 활용한 방식으로 새로고침 없이 URL 이동 기록을 남길 수 있다.
      • History mode는 http://localhost:8080/index hash mode는 http://localhost:8080#index

      router-link

      • 브라우저에서 클릭 이벤트가 발생할 때 새로운 페이지를 로드하는 것이 아니라, Vue Router의 라우팅 시스템을 사용하여 페이지를 업데이트하고 컴포넌트를 렌더링한다.
      • a 태그와 비슷한 기능으로 URL을 이동시킨다.
        • routes에 등록된 컴포넌트와 매핑된다.
        • 히스토리 모드에서 router-link는 클릭 이벤트를 차단하여 a태그와 달리 브라우저가 페이지를 다시 로드 하지 않도록 한다.
        • 목표 경로는 'to' 속성으로 지정된다.
        router_link

      router-view

      • 주어진 URL에 대해 일치하는 컴포넌트를 렌더링 하는 컴포넌트이다.
      • router-link를 클릭하면 routes에 매핑된 컴포넌트를 렌더링한다.
      • Django에서의 block tag와 비슷하다.
        • App.vue는 base.html 역할
        • router-view는 block 태그로 감싼 부분

      views/ 와 components/

      • views/
        • routes에 매핑되는 컴포넌트, 즉 의 위치에 렌더링 되는 컴포넌트를 모아두는 폴더이다.
        • 다른 컴포넌트와 구분하기 위해 View로 끝나도록 만드는 것을 권장한다.
      • components/
        • routes에 매핑된 컴포넌트의 하위 컴포넌트를 모아두는 폴더

Vue Router 실습

    선언적 방식 네비게이션

    • router-link의 'to' 속성으로 주소 전달
    • routes에 등록된 주소와 매핑된 컴포넌트로 이동
    • Named Routes
      • 이름을 가지는 routes로, Django에서 path함수의 name 인자의 활용과 같은 방식이다.
      • named_routes names_routes_v-bind
    • 동적인 값을 사용하기 때문에 v-bind를 사용해야 정상적으로 작동한다.

    프로그래밍 방식 네비게이션

    • Vue 인스턴스 내부에서 라우터 인스턴스에 $router로 접근 할 수 있다.
    • 다른 URL로 이동하려면 this.$router.push를 사용한다
      • history stack에 이동할 URL을 넣는(push)방식
      • history stack에 기록이 남기 때문에 사용자가 브라우저의 뒤로 가기 버튼을 클릭하면 이전 URL로 이동할 수 있다.
    • URL의 특정 값을 변수처럼 사용해 동적 인자를 전달할 수 있다.
      • Django에서의 variable routing 처럼
      프로그래밍 방식

      코드 실습

      • 사용 할 view 파일 생성
      • 동적인자전달_view
      • index.js에 routes 작성
      • 동적인자전달_index
      • App.vue에서 router-link 사용가능
      • 동적인자전달_App
      • 결과 확인
      • 동적인자전달_결과

      Dynamic Route Matching실습

      • Vue Router에서 동적인 경로 매칭을 위한 기능이며, 이를 사용하면 URL의 일부분을 변수로 사용할 수 있다.
      • 사용 할 view 작성
      • dynamic_view1 dynamic_view2
      • 결과 확인
      • dynamic_결과1 dynamic_결과2

      Lazy-loading

      • 모든 파일을 한 번에 로드하려고 하면 모든 걸 다 읽는 시간이 매우 오래 걸린다.
      • 미리 로드를 하지 않고 특정 라우트에 방문 할 때 매핑된 컴포넌트의 코드를 로드하는 방식을 활용할 수 있다.
        • 모든 파일을 한 번에 로드하지 않아도 되기 때문에 최초에 로드하는 시간이 빨라진다.
        • 당장 사용하지 않을 컴포넌트는 먼저 로드하지 않는 것이 핵심이다.
      • 참고
        Lazy-Loading이란1
        Lazy-Loading이란2

profile
다크모드가 보기 좋아요

0개의 댓글