6.vue-router
10967 단어 vue-router
라우팅 인식
라우팅
위키백과: 루트(routing)는 인터넷을 통해 정보를 원본 주소에서 목적 주소로 전송하는 활동이다.라우팅은 패킷이
에서
까지의 경로를 결정합니다.입력단의 데이터를 적당한 출력단으로 전송합니다.루트 중에는 매우 중요한 개념을 루트표라고 한다.루트 테이블은 본질적으로 하나의 맵으로 데이터 패키지의 방향을 결정한다.백엔드 라우팅 단계
백엔드 라우팅 개념
초기 웹 사이트 개발의 전체 HTML 페이지는 서버가 렌더링했습니다.서버는 클라이언트에게 렌더링된 HTML 페이지를 직접 되돌려줍니다.그러나 한 사이트에서 이렇게 많은 페이지 서버를 어떻게 처리합니까?한 페이지에 해당하는 사이트 주소가 있습니다
URL
.URL
는 서버에 전송되고 서버는 정규를 통해 이 URL
를 일치하며 마지막으로 한 Controller
에게 처리됩니다.Controller
각종 처리를 하여 최종적으로 HTML
또는 데이터를 생성하여 전단으로 되돌려준다.이것은 IO
조작을 완성했다.이런 조작은 바로 백엔드 루트이다.백엔드 라우팅의 이점:
우리 페이지에서 서로 다른 경로 내용을 요청할 때, 서버에 맡겨서 처리하고, 서버는 전체 페이지를 렌더링하고, 페이지를 클라이언트에게 되돌려줍니다.이런 상황에서 좋은 페이지를 렌더링하면 js와 css를 단독으로 불러올 필요가 없고 브라우저에 직접 보여줄 수 있어 SEO의 최적화에 도움이 된다.
백엔드 라우팅의 단점:
한 가지 상황은 전체 페이지의 모듈을 백엔드 인원이 작성하고 유지하는 것이다.또 다른 상황은 전방 개발자가 페이지를 개발하려면 PHP와 자바 등 언어를 통해 페이지 코드를 작성해야 한다는 것이다.그리고 통상적으로 HTML 코드와 데이터, 그리고 대응하는 논리가 혼합되어 작성과 유지보수는 매우 나쁜 일이다.
프런트엔드 라우팅 단계
앞뒤 끝 분리 단계:
Ajax
의 출현에 따라 전후단이 분리된 개발 모델이 생겼다.백엔드는 API
만 데이터를 되돌려주고, 백엔드는 Ajax
를 통해 데이터를 가져오며, JavaScript
을 통해 데이터를 페이지에 렌더링할 수 있습니다.이렇게 하면 가장 큰 장점은 앞뒤의 책임이 명확하고 뒷부분은 데이터에 집중하며 앞부분은 상호작용과 시각화에 전념하는 것이다.또한 이동단(iOS/Android)이 나타나면 백엔드는 아무런 처리도 하지 않고 이전의 API를 사용하면 된다.현재 많은 사이트들이 여전히 이런 모델을 채택하여 개발하고 있다.단일 페이지 적용 단계:
SPA 페이지: 단일 페이지를 복용하고 html 페이지가 하나밖에 없습니다. 이후에 루트 관계를 유지합니다.가장 주요한 특징은 앞뒤가 분리된 기초 위에 전단 루트를 덧붙인 것이다.즉, 프런트엔드에서 루트 규칙을 유지하는 것이다.프런트엔드 라우팅의 핵심: URL을 변경하지만 전체 페이지를 새로 고치지 않습니다.URL이 변화할 때 서버에서 다운로드한 자원에서 해당하는 js 코드를 추출하여 전체 페이지를 새로 고치지 않습니다.
프런트엔드 라우팅 규칙
URL을 변경하는 방법은 있지만 페이지는 전체적으로 새로 고침되지 않습니다.
URL의 hash
URL의hash는 바로 닻점(#)이며 본질적으로
window.location
의 속성을 바꾸는 것이다.우리는 직접 할당 href
을 통해 location.hash
을 변경할 수 있지만, 페이지는 새로 고침되지 않습니다.HTML5의 history 모드
History 인터페이스는 HTML5에 추가된 것으로 페이지를 새로 고치지 않고 URL을 바꾸는 다섯 가지 모드가 있습니다.
href
등가history.back()
history.go(-1)
등가history.forward()
이 세 인터페이스는 브라우저 인터페이스의 전진 후퇴와 같다.vue-router 기본 사용
vue-router는 Vue입니다.js 공식 루트 플러그인, 그것과 vue.js는 깊이 있게 통합되어 단일 페이지 구축에 적합합니다.vue-router는 루트와 구성 요소를 기반으로 합니다.라우팅은 액세스 경로를 설정하고 경로와 구성 요소를 매핑하는 데 사용됩니다.vue-router의 단일 페이지 응용 프로그램에서 페이지의 경로 변경은 구성 요소의 전환입니다.
설치 및 사용
1단계: vue-router 설치
npm install vue-router --save
단계 2: 모듈식 프로젝트에서 사용 (플러그인이므로 Vue.use () 를 통해 라우팅 기능을 설치할 수 있음) 첫 번째 단계: 라우팅 객체를 가져오고 Vue를 호출합니다.use(VueRouter) 2단계: 라우팅 인스턴스 작성 및 라우팅 맵 프로비저닝 3단계: Vue 인스턴스에서 생성된 라우팅 인스턴스 마운트
router --> index,js
import Vue from 'vue'
import VueRouter from 'vue-router'
// 1. Vue.use( ),
Vue.use(VueRouter)
// 2.
const routes = [];
const router = new VueRouter({
//
routes,
})
// 3. router Vue
export default router
Vue 인스턴스에 마운트
import Vue from 'vue'
import App from './App'
import router from './router'
new Vue({
el: '#app',
router, //
render: h => h(App)
})
vue-router를 사용하려면
1단계: 라우팅 구성 요소 만들기 2단계: 라우팅 매핑 구성: 구성 요소 및 경로 매핑 관계 3단계: 라우팅 사용: 통과 및
history.go(1)
: 이 레이블은
에 이미 내장된 구성 요소로 레이블로 렌더링됩니다.vue-router
: 레이블이 기준으로 하는 구성 요소입니다.현재의 경로는 서로 다른 웹 페이지의 다른 내용을 동적으로 과장한다. 예를 들어 맨 위의 제목/네비게이션, 또는 밑에 있는 일부 판권 정보 등은 같은 등급에 있을 것이다.라우팅 전환 시 마운트된 구성 요소는
로 전환되며 다른 내용은 변경되지 않습니다.의 속성:
: 점프 경로를 지정할 수 있습니다.**to**
: 나중에 렌더링할 구성 요소를 지정할 수 있습니다.// ,
**tag**
: 리플레이스는history 기록을 남기지 않습니다.replace를 지정한 경우, 후퇴 키는 이전 페이지로 돌아갈 수 없습니다.**replace**
: 대응하는 루트가 일치하면 현재 요소에 **active-class**
의class를 자동으로 설정합니다. 설정router-link-active
은 기본 이름을 수정할 수 있습니다.루트 실례를 만들 때 추가할 수도 있습니다 active-class
.강조 표시된 내비게이션 메뉴나 밑에 있는 tabbar를 할 때 이 종류를 사용합니다.그러나 클래스의 속성을 수정하지 않고 기본router-link-active를 사용하면 됩니다. const router = new VueRouter({
routes,
linkActiveClass: 'active'
})
router-->index.js
:
const routes = [
{
path: '/home',
component: Home,
},
{
path: '/about',
component: About,
},
]
App.vue
기타 문제
라우팅 코드 점프
페이지의 점프는 대응하는 자바스크립트 코드를 실행해야 할 수도 있습니다. 이 때 두 번째 점프 방식을 사용할 수 있습니다.
export default {
name: 'App',
data() {
return {}
},
methods: {
userClick() {
this.$router.push('/user/' + this.userId)
},
profileClick() {
this.$router.push({
path: '/profile',
query: {
name: 'kobe',
age: 19,
height: 1.87
}
})
}
}
}
주의:
linkActiveClass: 'active'
직접 vue-router
방법으로 경로를 바꾸지 마세요.history
기본적으로 모든 구성 요소에 Vue-router
이 대상을 추가합니다.이 대상은 이전에 new에서 나온 라우터의 실례입니다.라우팅의 기본 경로
$router
은 리디렉션입니다.const routes = [
{
path: '',
// redirect
redirect: '/home'
},
]
Histoty 모드
기본적으로 경로 변경에 사용된 URL의 경우
redirect
.HTML5의 hash
모드를 사용하려면 다음과 같이 구성합니다.const router = new VueRouter({
routes,
mode: 'history',
})
동적 라우팅
history
이 대상은 이전 뉴에서 나온 라우터의 실례입니다.this.$router
이 대상은 현재 활발한 경로이다.//
//
{
path: '/user/:userId',
component: User,
}
//
{{$route.params.id}}
라우팅 게으름
패키지가 응용 프로그램을 구축할 때 Javascript 패키지는 매우 커서 페이지 불러오는 데 영향을 줍니다.만약 서로 다른 루트가 대응하는 구성 요소를 서로 다른 코드 블록으로 분할한 후에 루트가 접근할 때 대응하는 구성 요소를 불러올 수 있다면 더욱 효율적일 것이다.루트 게으름의 주요 역할은 루트에 대응하는 구성 요소를 하나하나의 js 코드 블록으로 포장하는 것이다.이 루트가 접근할 때만 대응하는 구성 요소를 불러옵니다.게으른 로드 방식
const Home = () => import('../components/Home.vue')
vue-router 플러그인 경로
중첩 라우팅을 수행하려면 다음 두 단계가 있습니다.
router-->index.js
const Home = () => import('../components/Home')
const HomeNews = () => import('../components/HomeNews')
const HomeMessage = () => import('../components/HomeMessage')
const routes = [
{
path: '',
redirect: '/home'
},
{
path: '/home',
component: Home,
meta: {
title: ' '
},
children: [
{
path: '',
redirect: 'news'
},
{
path: 'news',
component: HomeNews
},
{
path: 'message',
component: HomeMessage
}
]
},
{
path: '/about',
component: About,
}
]
const router = new VueRouter({
routes,
mode: 'history',
})
// 3. router Vue
export default router
Home.vue
vue-router 매개 변수 전달
매개 변수를 전달하는 방식
전달 매개 변수는 주로 두 가지 유형이 있는데
this.$route
과params
이다.params 유형:
루트 형식 설정:/router/: id 전달 방식: path 뒤에 대응하는 값을 따라 전달된 경로:/router/123,/router/abc
query 유형:
루트 형식 설정:/router, 즉 일반 설정 전달 방식: 대상에서query의 키를 전달 방식으로 사용한 후 형성된 경로:/router?id=123,/router?id=abc 사용 방식도 두 가지가 있다.
query
방식과
코드 방식JavaScript
방식
코드 방식매개변수 가져오기
매개변수는
JavaScript
객체를 통해 가져옵니다.사용된 응용 프로그램에서는 라우팅 객체가 각 구성 요소에 주입되고 값$route
이 부여되며 라우팅이 전환되면 라우팅 객체가 업데이트됩니다.루트와 루트와 루트의 차이
vue-router
VueRouter 인스턴스이며 다른 URL로 이동하려면 $router를 사용합니다.push 방법this.$route
은 현재router 점프 대상입니다.name,path,query,params 등을 얻을 수 있습니다vue-router 내비게이션 수위
**$router**
가 제공한 내비게이션 수위는 주로 루트의 진입과 이탈을 감청하는 데 쓰인다.**$route**
vue-router
과vue-router
의 갈고리 함수를 제공하여 루트가 바뀌기 전과 바뀌기 전에 촉발됩니다.탐색 갈고리의 세 가지 매개 변수 해석:갈고리
beforeEach
: 곧 들어갈 목표의 루트 대상.afterEach
: 현재 떠나려는 라우팅 객체를 탐색합니다.to
: 이 방법을 사용해야 다음 갈고리에 들어갈 수 있습니다.후면 갈고리 (afterEach) 라면 넥스트 () 함수를 주동적으로 호출할 필요가 없습니다
// (guard)
router.beforeEach((to, from, next) => {
// from to。to from route
// matched[0]
document.title = to.matched[0].meta.title
next()
})
// (hook)
router.afterEach((to, from) => {
})
네비게이션 수위는 전역 수위, 루트 단독 수위, 구성 요소 내의 수위로 나뉜다.
keep-alive
from
는 포함된 구성 요소의 상태를 유지하거나 다시 렌더링되지 않도록 하는 Vue 내장 구성 요소입니다.두 가지 중요한 속성:
next
- 일치하는 구성 요소만 캐시되는 문자열 또는 정규 표현keep-alive
- 일치하는 구성 요소가 캐시되지 않는 문자열 또는 정규 표현식include
(활약)와exclude
(활약적이지 않음)activated
deactivated
안에 직접 포함되면 모든 경로가 일치하는 보기 구성 요소가 캐시됩니다.
저는 홈 구성 요소입니다.
export default {
name: "Home",
data() {
return {
path: '/home/news'
}
},
// , keep-alive ,
activated() {
this.$router.push(this.path);
console.log('Home activated');
},
deactivated() {
console.log('Home deactivated');
},
created() {
console.log("Home ");
},
destroyed() {
console.log("Home ");
},
beforeRouteLeave(to, from, next) {
console.log(this.$route.path);
this.path = this.$route.path;
next();
}
}
Keep-alive가 겪는 문제b 구성 요소에 d, e 구성 요소가 있습니다. b에서keep-alive를 사용하지 않으면 D, e 구성 요소의 상태가 보존되지 않습니다.그러나 d, e 구성 요소에서activated와deactivated를 사용할 수 있습니다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
【Vue.js】컴포넌트의 3개의 네비게이션 가드일에서 사용하게 되었기 때문에 1부터 Vue.js에 대해 배웠다. 그 이름에서 알 수 있듯이 무언가를 가드하기위한 처리로, 대체로 페이지 천이 전에 특정 처리를 실행시켜 페이지 천이시키지 않게 한다. Vue.js의 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.