安装依赖

npm init vite
yarn add vue-router@next pinia axios less
yarn add element-plus
yarn add -D unplugin-vue-components unplugin-auto-import

  1. import { defineConfig } from 'vite'
  2. import AutoImport from 'unplugin-auto-import/vite'
  3. import Components from 'unplugin-vue-components/vite'
  4. import { ElementPlusResolver } from 'unplugin-vue-components/resolvers'
  5. import vue from '@vitejs/plugin-vue'
  6. // https://vitejs.dev/config/
  7. export default defineConfig({
  8. plugins: [
  9. vue(),
  10. AutoImport({
  11. resolvers: [ElementPlusResolver()],
  12. }),
  13. Components({
  14. resolvers: [ElementPlusResolver()],
  15. }),
  16. ]
  17. })

路由设置

新建router/index.ts
vue2里需要引入vue,并且使用vue.use(VueRouter)来设置路由器为全局对象
use方法的实质是调用参数或者参数上的install方法。此时会将route和router挂载在vue.prototype上,因此可以在其他项目文件里直接访问this.$router

vue3引入路由的方法不一样

  1. import {createRouter, createWebHistory, RouterHistory,RouteRecordRaw} from 'vue-router'
  2. const routes:RouteRecordRaw[] = [
  3. {
  4. path: '/login',
  5. name: 'login',
  6. component: () => import('../views/login/login.vue')
  7. }
  8. ]
  9. const router = createRouter({
  10. history: createWebHistory(), //history模式
  11. //路由配置
  12. routes
  13. })
  14. export default router
  1. import router from './router'
  2. createApp(App).use(router).mount('#app')

App.vue中要设置路由出口

image.png
router-view是什么时候开始生效的呢?
还是在use(router)这里,注册了router-view为component

亮点:封装路由初始化方法

好处:可以不暴露路由对象

  1. export const initRouter = (app: App<Element>) => {
  2. app.use(router);
  3. }
  1. import {initRouter} from './router'
  2. const app = createApp(App)
  3. //初始化路由
  4. initRouter(app)
  5. app.mount('#app')