Nuxt.js module to use router.js instead of pages/ directory
Use your own router.js to handle your routes into your Nuxt.js application.
@nuxtjs/router dependency to your projectyarn add --dev @nuxtjs/router # or npm install --save-dev @nuxtjs/router
@nuxtjs/router to the buildModules section of nuxt.config.jsexport default {
buildModules: [
// Simple usage
'@nuxtjs/router',
// With options
['@nuxtjs/router', { /* module options */ }]
]
}
⚠️ If you are using Nuxt < v2.9 you have to install the module as a dependency (No --dev or --save-dev flags) and use modules section in nuxt.config.js instead of buildModules.
export default {
buildModules: [
'@nuxtjs/router'
],
routerModule: {
/* module options */
}
}
If you are using SPA mode, add an index / route to generate section of nuxt.config.js:
export default {
generate: {
routes: [
'/'
]
}
}
pathStringsrcDirLocation of you route file.
fileNameStringrouter.jsName of you route file.
keepDefaultRouterBooleanfalseCan access the default router.
parsePagesBoolean'keepDefaultRouter'Can disable/enable the pages/ directory into Nuxt.
This module, by default, 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
}
]
})
}
The components defined as routes have access to the same special attributes and functions (head, asyncData, validate, etc.) as the Nuxt Page component.
If you use the module with { keepDefaultRouter: true }, you can access the default router:
⚠️ If you are using Nuxt < 2.9.0, the parameter routerOptions is not available.
⚠️ If you are using Nuxt < 2.15.0, the parameter config is not available.
⚠️ If you are using Nuxt < 2.16.0, the parameter store is not available.
export function createRouter(ssrContext, createDefaultRouter, routerOptions, config, store) {
const options = routerOptions ? routerOptions : createDefaultRouter(ssrContext, config).options
return new Router({
...options,
routes: fixRoutes(options.routes, store)
})
}
function fixRoutes(defaultRoutes, store) {
// default routes that come from `pages/`
// Filter some routes using the content of the store for example
return defaultRoutes.filter(...).map(...)
}
yarn install or npm installnpm run devCopyright (c) Nuxt Community