Úvod
Vue-Router je balíček JavaScriptu, který vám umožňuje nastavit směrování pro jednostránkové aplikace (SPA).
SPA označuje webovou aplikaci, která obsluhuje pouze jeden index.html
stránku a dynamicky vykresluje obsah, což je způsob, jakým se s největší pravděpodobností nastavují moderní rámce JavaScriptu, jako je React.js nebo Vue.js.
Proč používat Vue-Router?
Použití SPA má mnoho výhod, ale jednou z hlavních výhrad je, že všechny součásti webové stránky jsou dodávány, přidávány nebo odstraňovány pomocí JavaScriptu, aniž by se ze serveru načítaly žádné další stránky HTML. To je to, o čem jsou SPA, ale hlavním problémem je schopnost procházet "stránky", jak jsou uživatelé zvyklí u většiny webových stránek.
Zde je Vue-Router začíná!
Instalace a nastavení
Pokud používáte Vue CLI, možná jste se již setkali se situací, kdy jste byli dotázáni, zda chcete zahrnout Vue-Router do konfigurace projektu.
Vue-Router lze snadno nainstalovat pomocí vašeho preferovaného správce balíčků, ať už je to NPM nebo Příze :
$ npm install vue-router
OR
$ yarn add vue-router
Tím přidáte vue-router
do vašeho package.json
soubor a můžete začít.
Doporučuje se zapsat kód související se směrovačem do samostatného souboru s názvem router.js
a přidejte jej do aplikace Vue uvnitř main.js
soubor:
import Vue from 'vue'
import App from './App'
import Router from './router // Router being imported
Vue.config.productionTip = false
/* eslint-disable no-new */
new Vue({
el: '#app',
router: Router, // Router added to the Vue instance
components: { App },
template: '<App/>'
})
Soubor router.js:Vytváření tras
Nejprve musíme importovat router
z balíčku Vue-Router a přidejte jej do Vue jako plugin metodou use
.
Poté se k routeru chováme jako k objektu, který pojme všechny trasy. A samozřejmě jej musíme exportovat, aby k němu měl přístup zbytek aplikace.
import Vue from 'vue'
import Router from 'vue-router'
Vue.use(Router)
export default new Router({
routes: []
})
routes
property je pole, které bude obsahovat objekty, z nichž každý bude specifickou cestou pro vaši webovou stránku. Ten nejzákladnější by vypadal takto:
const Home = { template: '<div>Welcome to Stack Abuse!</div>' }
routes: [
{
path: '/',
name: 'Home',
component: Home
}
]
Vue-Router přijímá velké množství vlastností pro směrované objekty:
-
path
:Toto je relativní cesta k základní trase vaší webové aplikace, kde chcete, aby byla určitá komponenta vykreslena. -
name
:Vlastnost name bude užitečná při odkazování na tento konkrétní objekt uvnitř vašich komponent Vue. -
component
:S touto vlastností bude komponenta Vue vložena do trasy, kterou přiřadíte. -
redirect
:Trasa komponenty může být přesměrována na jinou trasu, když se shoduje. -
alias
:Docela podobné přesměrování, ale kdykoli zadáte cestu aliasu, router zobrazí kořenovou cestu routeru.
const router = new VueRouter({
routes: [
{
path: '/users',
component: Users,
alias: '/alias' // When entering '/alias' the content of the component Users will render
}
]
})
children
:Toto je pole s více cestami, které budou zřetězeny k cestě, zatímco nadřazená cesta zůstane v adrese URL.
const router = new VueRouter({
routes: [
{
path: '/users/',
component: Users,
children: [
{
// when /users/profile gets matched
path: 'profile',
component: UserProfile
},
{
// when /users/info gets matched
path: 'info',
component: UserInfo
}
]
}
]
})
-
params
:Toto jsou vlastnosti nebo určité informace, které mohou být předány komponentě. -
meta
:Kdykoli trasa (nebo více tras) odpovídá cestě, bude k dispozici vlastnost meta. To je užitečné zejména při používání navigačních stráží.
Můžeme také přidat mode
vlastnost na Router
objekt. Ve výchozím nastavení je Vue-Router nastaven na hash
režim, což znamená, že všechny adresy URL budou mít #
na konci. To lze odstranit, jak pravděpodobně budete chtít, nastavením mode
vlastnost na history
:
export default new Router({
mode: 'history',
routes: []
})
Tento režim však přichází s problémem. Bez správné konfigurace, přístup, například, http://localhost:8080/user/id
, přímo v jejich prohlížeči se zobrazí 404 chyba.
Zdarma e-kniha:Git Essentials
Prohlédněte si našeho praktického průvodce učením Git s osvědčenými postupy, průmyslově uznávanými standardy a přiloženým cheat sheetem. Přestaňte používat příkazy Google Git a skutečně se naučte to!
Chcete-li to vyřešit, musíte na svůj server přidat jednoduchou záložní trasu. Pokud cesta neodpovídá žádným statickým podkladům, měla by zobrazovat stejné index.html
.
Pokud byste například chtěli nastavit režim historie na serveru Node.js, můžete to nastavit takto:
const http = require('http')
const fs = require('fs')
const httpPort = 80
http.createServer((req, res) => {
fs.readFile('index.htm', 'utf-8', (err, content) => {
if (err) {
console.log('We cannot open "index.htm" file.')
}
res.writeHead(200, {
'Content-Type': 'text/html; charset=utf-8'
})
res.end(content)
})
}).listen(httpPort, () => {
console.log('Server listening on: http://localhost:%s', httpPort)
})
Přístup k routeru z komponenty
Vzhledem ke konkrétní komponentě můžete přistupovat k objektu routeru pomocí $
zápis, aby reagoval na vstup uživatele nebo byl schopen vykreslovat trasy v závislosti na určitých podmínkách.
Chcete-li, aby byly trasy Vue-Router vykresleny, budete muset předat <router-view>
tag uvnitř komponenty Vue.
Můžete také přistupovat k trasám z <a>
tag, ale to spustí opětovné vykreslení stránky. Chcete-li se tomuto chování vyhnout, můžete použít router-link
s to
vlastnost namísto href
. Tato speciální značka říká routeru, aby přešel na danou "stránku".
<template>
<div>
<h3> Vue Router - Stack Abuse </h3>
<h4> { $router.params.id } </h4>
<button @click="goBack"> Go Back </button>
<router-view></router-view>
<router-link :to="/users"> Users Route </router-link>
</div>
</template>
export default {
methods: {
goBack () {
this.$router.go(-1)
}
}
}
K objektu routeru jsou připojeny určité metody, které vám pomohou přesměrovat vaši aplikaci na požadovanou adresu URL:
-
$router.go()
:Vezme číslo jako parametr, který odkazuje na počet pozic, o které se chcete posunout vpřed nebo za v poli zásobníku historie prohlížeče. -
$router.push()
:Tato funkce může mít řetězec odkazující na název nebo cestu trasy, ke které chcete přistupovat, nebo na objekt s konfigurací trasy.
router.push(
{
name: 'users'
params: { id: 1 }
}
)
$router.replace()
:Téměř stejné jako push, místo toho, kromě přidání nového záznamu do zásobníku historie prohlížeče, nahradí aktuální záznam tím, který přidáváme.
Strážci trasy
Většina aplikací potřebuje způsob, jak zakázat přístup k určitým trasám. To lze snadno provést pomocí strážců trasy, o kterých jsme hovořili dříve, když jsme mluvili o meta
vlastnost.
Každá trasa má tok rozlišení navigace a existují určité háčky, které lze využít ve váš prospěch.
beforeEach
:Určitě nejužitečnější, když potřebujete globálního hlídače, aby se uživatelé nedostali do zakázaných oblastí, můžete nastavit funkci zpětného volání, která obdržíto
,from
,next
zbeforeEach
funkce, která vás informuje o tom, odkud a kam navigujete, a také o dalším kroku:
router.beforeEach((to, from, next) => {
if (to.matched.some(record => record.meta.auth)) {
if (!userIsLoggedIn)
next('/')
console.log('Not allowed here')
} else {
next('/secret-endpoint')
}
}
})
-
beforeEnter
:Spustí se předtím, než uživatel vstoupí na určitou trasu. -
afterEach
:Volá se vždy, když byla navigace pro každou trasu úspěšná.
Závěr
Vue-Router je nezbytným nástrojem, pokud vytváříte jakoukoli jednostránkovou aplikaci Vue.js, poskytuje vám flexibilitu, abyste mohli plně spravovat navigaci uživatele.
Více informací můžete vždy získat na oficiální stránce Vue-Router.