现在位置: 首页 > Vue3 教程 > 正文

Vue3 目录结构

上一章节中我们使用了 npm 安装项目(Vue-cli 和 Vite),我们在 IDE(Vscode、Atom 等) 中打开该目录,结构如下所示:

命令行工具 vue-cli(runoob-vue3-test):

Vite(runoob-vue3-test2)

一个标准的 Vue 3 项目,通常可以拆成三层:

  • 项目根目录:构建工具与工程配置
  • public 目录:不参与构建的静态资源
  • src 目录:几乎所有业务代码都在这里,平时开发基本在这个目录里面。

典型的 Vue 项目结构:

vue-project/
├── public/                  # 静态资源,直接复制到构建输出目录
│   └── favicon.ico          # 网站图标
├── src/
│   ├── assets/              # 静态资源(如图片、字体、CSS)
│   │   └── logo.png
│   ├── components/          # 可复用的通用组件
│   │   └── CommonHeader.vue
│   ├── composables/         # 可复用的 Composition API 逻辑(可选)
│   │   └── useFetch.js
│   ├── router/              # 路由配置
│   │   └── index.js
│   ├── stores/              # Pinia 状态管理(或 store/ 用于 Vuex)
│   │   └── index.js
│   ├── utils/               # 工具函数(如请求封装、格式化)
│   │   └── request.js
│   ├── views/               # 页面级组件(对应路由页面)
│   │   ├── HomeView.vue
│   │   └── AboutView.vue
│   ├── App.vue              # 根组件
│   └── main.js              # 入口文件(创建 Vue 应用)
├── index.html               # HTML 入口模板
├── vite.config.js           # Vite 配置文件
├── package.json             # 项目依赖与脚本
├── .gitignore               # Git 忽略文件
├── .env                     # 环境变量(开发)
├── .env.production          # 环境变量(生产)
└── README.md                # 项目说明

目录解析

路径 描述
public/ 存放不会被构建工具处理的静态资源,直接复制到 dist 目录,常用于 favicon、robots.txt 等
public/favicon.ico 网站图标(favicon)
src/ 项目源代码主目录,所有开发代码放在这里
src/assets/ 存放图片、字体、全局 CSS 等静态资源,会被 Vite 处理(支持导入)
src/components/ 存放可复用的通用组件(如按钮、卡片、布局组件)
src/composables/ 存放可复用的 Composition API 逻辑函数(Vue 3 推荐的代码复用方式)
src/router/ Vue Router 配置目录,通常包含 index.js 定义路由表
src/stores/ Pinia 状态管理目录(Vue 3 官方推荐),存放各个 store 模块
src/utils/ 存放工具函数,如 axios 封装、时间格式化、常量等
src/views/ 存放页面级组件,通常与路由一一对应(路由页面)
src/App.vue Vue 应用的根组件,包含 <router-view> 等入口渲染点
src/main.js 项目入口文件,创建 Vue 应用实例、挂载插件(router、pinia 等)并挂载到 #app
index.html HTML 模板文件,包含 <div></div> 挂载点
vite.config.js Vite 构建工具配置文件,可自定义插件、别名、代理等
package.json 项目依赖、脚本命令(如 dev、build、preview)
.gitignore Git 忽略文件,通常忽略 node_modules、dist、.env 等
.env / .env.production 环境变量文件,用于不同环境配置 API 地址等(Vite 以 VITE_ 开头变量)
README.md 项目说明文档

随着项目变大,还可能需要添加这些文件夹:

  • src/layouts/:不同页面布局(如 AdminLayout.vue、GuestLayout.vue)。
  • src/plugins/:自定义 Vue 插件(如全局组件自动注册)。
  • src/directives/:自定义指令(如 v-loading)。
  • src/types/:全局 TypeScript 类型声明。
  • tests/tests/:单元/E2E 测试(Vitest + Vue Test Utils)。
  • src/api/:分离 API 接口调用模块(比 utils/request 更细粒度)。

接下来,我们以 runoob-vue3-test2 为例,打开目录下的 src/APP.vue 文件,代码如下(解释在注释中):

src/APP.vue 文件代码

<!-- 展示模板 -->
<template>
  <img alt="Vue logo" src="./assets/logo.png" />
  <HelloWorld msg="Hello Vue 3.0 + Vite" />
</template>
<!-- Vue 代码 -->
<script>
/* 从 src/components/HelloWorld.vue 中引入 HelloWorld 组件 */
import HelloWorld from './components/HelloWorld.vue'

export default {
  name: 'App',
  components: {
    HelloWorld
  }
}
</script>

接下来我们可以尝试修改下初始化的项目,将 src/APP.vue 修改为以下代码:

src/APP.vue 文件代码

<template>
  <img alt="Vue logo" src="./assets/logo.png" />
  <HelloWorld msg="欢迎来到菜鸟教程!" />
</template>

<script>
import HelloWorld from './components/HelloWorld.vue'

export default {
  name: 'App',
  components: {
    HelloWorld
  }
}
</script>

打开页面 http://localhost:3000/,一般修改后会自动刷新,显示效果如下所示: