npm install vue-router
SPA-routing i Vue.js ekosystem https://router.vuejs.org/
Version 4 är kompatibel med Vue 3
import { createRouter, createWebHistory } from 'vue-router';
import Home from '../views/Home.vue';
import About from '../views/About.vue';
// Definiera "rutterna"
const routes = [
{
path: '/',
name: 'Home',
component: Home,
},
{
path: '/about',
name: 'About',
component: About,
},
// fler...
];
// Skapa router instansen och exportera den
const router = createRouter({
history: createWebHistory(process.env.BASE_URL),
routes,
});
export default router;
src/router/index.ts
import { createApp } from 'vue';
import App from './App.vue';
import router from './router';
const app = createApp(App);
app.use(router);
app.mount('#app');
main.ts
<template>
<div id="app">
<h1>Welcome to Vue 3 App</h1>
<nav>
<router-link to="/">Home</router-link> |
<router-link to="/about">About</router-link>
</nav>
<router-view/> <!-- Här uppdateras vyn/komponenten -->
</div>
</template>
<script>
export default {
name: 'App',
// ...
};
</script>
App.vue
import { createRouter, createWebHistory } from 'vue-router';
import Home from '../views/Home.vue';
import About from '../views/About.vue';
// Definiera "rutterna"
const routes = [
{
path: '/',
name: 'Home',
component: Home,
},
{
path: '/users/:id', // dynamisk route
name: 'UserProfile',
component: UserProfile,
},
// fler...
];
// Skapa router instansen och exportera den
const router = createRouter({
history: createWebHistory(process.env.BASE_URL),
routes,
});
export default router;
src/router/index.ts
<template>
<div>
<h1>User Profile</h1>
<p>User ID: {{ userId }}</p>
</div>
</template>
<script>
export default {
name: 'UserProfile',
computed: {
userId() {
return this.$route.params.userId;
}
}
};
</script>
UserProfile.vue
<template>
<h1>Movies</h1>
<ul>
<li v-for="movie in movies" :key="movie.id">{{ movie.title }} </li>
</ul>
</template>
<script>
export default {
name: 'MovieList',
data() {
return {
movies: []
}
},
methods: {
async fetchMovies() {
try {
const response = await fetch('http://localhost:3000/movies')
const data = await response.json()
this.movies = data
} catch (error) {
console.error(error)
}
}
},
mounted() {
console.log('MovieList mounted')
},
created() {
console.log('MovieList created')
this.fetchMovies()
}
}
</script>
<style scoped></style>
MovieList.vue
Olika steg i en apps livscykel.
Fråga: När är det lämpligt att fetcha data från API?