vue3 官网
vite官网
vite文档
创建vue项目
npm create vite@latest my-vue-app -- --template vue
yarn create vite my-vue-app --template vue
npm install vue-router@4
yarn add vue-router@4
├── src
│ ├── router
│ ├── index.js
│ ├── views
│ ├── about
│ ├── index.vue
│ ├── page.js
│ ├── home
│ ├── index.vue
│ ├── page.js
│ ├── user
│ ├── index.vue
│ ├── page.js
│ ├── index.vue
│ ├── page.js
│ ├── App.vue
│ ├── main.js
│ ├── style.css
└── index.html
在vite中自动生成路由
export default {
title: 'index',
menuOrder: 0
};
import { createRouter, createWebHistory } from 'vue-router';
const comps = import.meta.glob('../views/**/index.vue');
const pages = import.meta.glob('../views/**/page.js', {
eager: true,
import: 'default'
});
const routes = Object.entries(pages).map(([path, meta]) => {
const compPath = path.replace('page.js', 'index.vue');
path = path.replace('../views', '').replace('/page.js', '') || '/';
const name = path.split('/').filter(Boolean).join('-') || 'index';
return {
path,
name,
meta,
component: comps[compPath]
}
});
console.log(routes);
export const router = createRouter({
history: createWebHistory(),
routes
});
[
{
"path": "/about",
"name": "about",
"meta": {
"title": "关于",
"menuOrder": 3
},
component: () => import("/src/views/about/index.vue")
},
{
"path": "/home",
"name": "home",
"meta": {
"title": "首页",
"menuOrder": 1
},
component: () => import("/src/views/home/index.vue")
},
{
"path": "/",
"name": "index",
"meta": {
"title": "index",
"menuOrder": 0
},
component: () => import("/src/views/index.vue")
},
{
"path": "/user",
"name": "user",
"meta": {
"title": "用户",
"menuOrder": 2
},
component: () => import("/src/views/user/index.vue")
}
]
import { createApp } from 'vue'
import App from './App.vue'
import { router } from './router'
createApp(App)
.use(router)
.mount('#app')
运行打包dist
npm install -g http-server
http-server dist -p 8000