Nuxt module to use router.js instead of pages/ directory
Use your own router.js
to handle your routes into your Nuxt.js application.
- Install
@nuxtjs/router
dependency withyarn
ornpm
into your project - Add
@nuxtjs/router
tomodules
section ofnuxt.config.js
:
{
modules: [
'@nuxtjs/router'
]
}
or
{
modules: [
['@nuxtjs/router', { keepDefaultRouter: true }]
]
}
- If you are using SPA mode, add an index
/
route togenerate
section ofnuxt.config.js
:
{
generate: {
routes: [
'/'
]
}
}
This module disable the pages/
directory into Nuxt and will use a router.js
file at your srcDir
directory:
components/
my-page.vue
router.js
router.js
need to export a createRouter
method like this:
import Vue from 'vue'
import Router from 'vue-router'
import MyPage from '~/components/my-page'
Vue.use(Router)
export function createRouter() {
return new Router({
mode: 'history',
routes: [
{
path: '/',
component: MyPage
}
]
})
}
If you use the module with { keepDefaultRouter: true }
, you can access the default router:
import { createRouter as createDefaultRouter } from './defaultRouter'
export function createRouter(ssrContext) {
const defaultRouter = createDefaultRouter(ssrContext)
return new Router({
...defaultRouter.options,
routes: fixRoutes(defaultRouter.options.routes)
})
}
function fixRoutes(defaultRoutes) {
// default routes that come from `pages/`
return defaultRoutes.filter(...).map(...)
}
Copyright (c) Sebastien Chopin [email protected]