import { createRouter, createWebHistory } from 'vue-router'

/**
 * 路由缓存机制:
 * 1. 设置路由的meta属性为{ cache: true }，表示需要缓存
 * 2. App.vue中使用RouteCache组件，通过路由的name来进行匹配
 * 3. 路由的name默认是文件名,如果文件名与name不一致,通过defineOptions({ name: 'componentName' })来设置
 */
const router = createRouter({
	history: createWebHistory('/'),
	//   history: createWebHistory(import.meta.env.VITE_APP_URL),
	routes: [
		{
			path: '/',
			redirect: '/index'
		},
		{
			path: '/index',
			name: 'index',
			component: () => import('../views/login/index.vue'),
			meta: { notToken: true }
		},
		{
			path: '/login',
			name: 'login',
			component: () => import('../views/login/login.vue'),
			meta: { notToken: true }
		},
		{
			path: '/register',
			name: 'register',
			component: () => import('../views/login/register.vue'),
			meta: { notToken: true }
		},
		{
			path: '/retrievepass',
			name: 'retrievepass',
			component: () => import('../views/login/retrieve-password.vue'),
			meta: { notToken: true }
		},
		{
			path: '/nuic',
			name: 'nuic',
			component: () => import('../views/nuic/index.vue')
		},
		{
			path: '/home',
			name: 'home',
			component: () => import('../views/home/index.vue'),
			children: [
				{
					path: 'test',
					name: 'test',
					component: () => import('../views/home/test.vue'),
					meta: { topNavStyle: '2' }
				},
				{
					path: '/home/versionTree',
					name: 'versionTree',
					component: () => import('../views/home/VersionTree.vue'),
					meta: { topNavStyle: '2' }
				},
				{
					path: 'mainInput',
					name: 'mainInput',
					component: () => import('../views/home/mainInput.vue')
				},
				{
					path: 'agent/:id',
					name: 'agent',
					component: () => import('../views/home/agent/index.vue')
				}
			]
		},
		{
			path: '/canvastest',
			name: 'canvastest',
			component: () => import('../components/Canvas/CanvasTest.vue'),
			meta: { notToken: true }
		},

		{
			path: '/:pathMatch(.*)',
			name: '404',
			component: () => import('../views/404.vue'),
			meta: { notToken: true }
		}
	]
})

export default router
