# vue3 项目开发
# 1、项目框架
- vue3 + typescript 框架
 - vue-router4 路由管理
 - pinia 状态管理
 - vite 构建
 - naive-ui 组件库
 - xicons 图标
 - less css 预处理
 - axios 请求库
 - pnpm 包管理器
 
# 2、安装
(1)安装框架
pnpm create vite my-vue-app -- --template vue-ts
其他命令安装:
# npm 6.x
npm init vite@latest my-vue-app --template vue-ts
# npm 7+, 需要额外的双横线:
npm init vite@latest my-vue-app -- --template vue-ts
# yarn
yarn create vite my-vue-app --template vue-ts
 1
2
3
4
5
6
7
8
2
3
4
5
6
7
8
(2)安装库
pnpm install
pnpm install vue-router pinia naive-ui axios @vicons/antd @vicons/ionicons5
pnpm install -D less
 1
2
3
4
5
2
3
4
5
# 3、运行
pnpm run dev
# 4、修改 vite 配置
vite.config.ts
export default defineConfig({
  plugins: [vue()],
  server: {
    host: true,
    port: 8001,
  },
});
 1
2
3
4
5
6
7
2
3
4
5
6
7
# 5、配置路由
# 5.1 修改 App.vue
/src/app.vue
使用路由 router-link 和 router-view 组件
<template>
  <nav>
    <router-link to="/">Home</router-link> |
    <router-link to="/about">About</router-link>
  </nav>
  <router-view></router-view>
</template>
 1
2
3
4
5
6
7
2
3
4
5
6
7
router-link 相当于 <a> 标签,进行跳转
router-view 是视图,用于装载即将跳转的页面
# 5.2 创建 views 目录,编写 vue 页面
在 src 目录下创建 views 目录
在 views 目录下创建 home.vue 和 about.vue
/src/views/home.vue
<template>
  <div>Home</div>
</template>
 1
2
3
2
3
/src/views/about.vue
<template>
  <div>About</div>
</template>
 1
2
3
2
3
# 5.3 配置路由
在 src 目录下创建 router 目录
在 router 目录下创建 index.ts
/src/router/index.ts
import { createRouter, createWebHistory, RouteRecordRaw } from 'vue-router';
const routes: Array<RouteRecordRaw> = [
  {
    path: '/',
    name: 'home',
    component: () => import(/* webpackChunkName: "home" */ '../views/home.vue'),
  },
  {
    path: '/about',
    name: 'about',
    component: () =>
      import(/* webpackChunkName: "about" */ '../views/about.vue'),
  },
];
const router = createRouter({
  history: createWebHistory(),
  routes,
});
export default router;
 1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
在 main.ts 中导入 router 配置
/src/main.ts
import { createApp } from 'vue';
import App from './App.vue';
import router from './router';
createApp(App).use(router).mount('#app');
 1
2
3
4
5
2
3
4
5
# 6、配置路径别名
(1)在 vite.config.ts 中增加配置
import { defineConfig } from 'vite';
import vue from '@vitejs/plugin-vue';
import path from 'path';
// https://vitejs.dev/config/
export default defineConfig({
  base: '/',
  plugins: [vue()],
  server: {
    host: true,
    port: 8001,
  },
  resolve: {
    alias: {
      '@': path.resolve(__dirname, './src'),
    },
  },
});
 1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
(2)安装 node 的类型声明文件
在 vite.config.ts 中配置@时使用到了 path,此时会报错,告诉你缺少 @types/node,需要再安装一下
pnpm i --save-dev @types/node
(3)修改 tsconfig.json,增加如下配置
{
  "compilerOptions": {
    // ...
    "baseUrl": ".",
    "paths": {
      "@/*": ["src/*"]
    }
  }
}
 1
2
3
4
5
6
7
8
9
2
3
4
5
6
7
8
9
(4)最后重启服务