Vue.js 2 multiple routing files

I don't know if it's the best approach to use JS itself I created files like

import Profile from '../views/user/Profile'
import Login from '../views/user/Login'

export default [
 {
   path: '/',
   name: 'Login',
   component: Login,
   meta: {
      allowAnonymous: true
   }
 },
{
   path: '/profile',
   name: 'Profile',
   component: Profile,
   beforeEnter: (to, from, next) => {
     if (!store.state.userIsLogged) next({ path: '/', replace: true })
     else next()
   }
 }
]

and in the index.js file I import the file that creates and uses the spread operator

import UserRouter from './user'

const routes = [
   ...UserRouter,
]

any observation can speak


You can put each group of routs in its own file, then import those files and merge the routes using spread operator.

Here is an example:

router/index.js

import moduleRoutes1 from "./path/to/moduleRoutes1"
import moduleRoutes2 from "./path/to/moduleRoutes2"

const router = new Router({
    mode: 'history',
    routes: [
      ...moduleRoutes1,
      ...moduleRoutes2
      //etc. 

      //Note '...' here is a "spread operator" and not ellipsis
    ]

router/moduleRoutes1

let VuePage1 = () => import(/* webpackChunkName: MyChunk */ '@/path/to/VuePage1')
let VuePage2 = () => import(/* webpackChunkName: MyChunk */ '@/path/to/VuePage2')

import moduleRoutes1_1 from "./path/to/moduleRoutes1_1"

export default [
    {
        path: '/some/path/1',
        name: 'pathName1',
        component: VuePage1,
    },
    {
        path: '/some/path/2',
        name: 'pathName2',
        component: VuePage2,
    },
    ...moduleRoutes1_1 //dividing modules further if needed
]

router/moduleRoutes2

... //now it's ellipsis
You've got the idea

You can definitely do this, but at the end of the day you'll want to import them all into a single routes.js file.

This article covers your situation with one solution: https://medium.com/@disjfa/lets-route-a-vue-app-aa9c3f3dbdf8

Another way I'd consider implementing this is by exporting a const of routes from each module, importing them into the top level routes.js, and using that file in App.vue.

Good luck!