Page Routes
Learn how to create and manage pages in your app using Nuxt file based routing.
Setup
Nuxt automatically generates routes from files in the app/pages/ directory. You only need to customize routing when using definePageMeta.
- Add a page
- Create a
.vuefile inapp/pages/(example:app/pages/about.vuecreates/about).app/pages/about.vue<template> <div>About ShipAhead</div> </template>
- Create a
- Dynamic Routes:
- Use square brackets for parameters (e.g.,
app/pages/blogs/[slug].vuecreates/blogs/my-post). - Example:
app/pages/blogs/[slug].vue
<template> <div>Blog: {{ useRoute().params.slug }}</div> </template>
- Use square brackets for parameters (e.g.,
- Nested Routes:
- Use folders with
index.vue(example:app/pages/dashboard/index.vuecreates/dashboard). - Add child routes in the same folder (example:
app/pages/dashboard/settings.vue→/dashboard/settings).
- Use folders with
Usage
- Basic Routing: Add
.vuefiles toapp/pages/to create pages automatically. - Customizing Pages: Use
definePageMetato set a layout or middleware:app/pages/admin/index.vuedefinePageMeta({ layout: 'admin', requireAuth: true, });layout: 'admin': Applies the admin layout fromlayouts/admin.vue.requireAuth: true: Restricts access to authenticated users, defined in ShipAhead’s middleware.
- Dynamic Parameters: Access values like
slugusinguseRoute(). - Verify Routes: Run
npm run devand navigating to URL (e.g.,http://localhost:3000/about). - Learn More: See Nuxt routing docs at Nuxt Pages Documentation.