# 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)安装库

pnpm install

pnpm install vue-router pinia naive-ui axios @vicons/antd @vicons/ionicons5

pnpm install -D less
1
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

# 5、配置路由

# 5.1 修改 App.vue

/src/app.vue

使用路由 router-linkrouter-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

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

/src/views/about.vue

<template>
  <div>About</div>
</template>
1
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

在 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

# 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)安装 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

(4)最后重启服务

上次更新: 11/28/2023, 7:06:34 PM