vue 实现文件目录
Vue 实现文件目录结构
Vue 项目通常采用模块化设计,合理的目录结构有助于代码维护和团队协作。以下是常见的 Vue 项目目录结构及说明:
基础目录结构(基于 Vue CLI 生成)
project-name/
├── node_modules/ # 依赖库
├── public/ # 静态资源(直接复制到构建目录)
│ ├── index.html # 主 HTML 文件
│ └── favicon.ico # 网站图标
├── src/ # 核心代码目录
│ ├── assets/ # 静态资源(由 webpack 处理)
│ ├── components/ # 可复用组件
│ ├── views/ # 页面级组件
│ ├── router/ # 路由配置
│ ├── store/ # Vuex 状态管理
│ ├── services/ # API 服务层
│ ├── utils/ # 工具函数
│ ├── styles/ # 全局样式
│ ├── App.vue # 根组件
│ └── main.js # 入口文件
├── .gitignore # Git 忽略配置
├── package.json # 项目依赖配置
└── README.md # 项目说明
关键目录详细说明
src/assets
存放静态资源(图片、字体等),这些资源会经过 webpack 处理(如压缩、哈希命名)。
src/components
放置可复用的 Vue 组件,通常按功能或模块划分子目录:
components/
├── common/ # 全局通用组件(如按钮、弹窗)
├── layout/ # 布局组件(如头部、侧边栏)
└── module-name/ # 业务相关组件
src/views
存放页面级组件,与路由一一对应。建议按业务模块组织:
views/
├── Home.vue
├── user/
│ ├── Login.vue
│ └── Profile.vue
└── product/
├── List.vue
└── Detail.vue
src/router
路由配置通常分为:
index.js:主路由配置routes.js:路由表定义(可拆分模块化)guard.js:路由守卫逻辑
src/store
Vuex 状态管理目录结构(模块化示例):
store/
├── modules/ # 模块化状态
│ ├── user.js
│ └── cart.js
├── actions.js # 全局 actions
├── getters.js # 全局 getters
└── index.js # 主入口
进阶优化建议
按功能划分的目录结构
对于大型项目,可采用功能优先(Feature-based)的组织方式:
src/
├── features/
│ ├── auth/ # 认证功能
│ │ ├── components/
│ │ ├── store/
│ │ └── routes.js
│ └── dashboard/ # 面板功能
│ ├── components/
│ └── utils/
└── shared/ # 跨功能共享代码
├── components/
└── utils/
配置分离
将环境变量、请求配置等抽离:
config/
├── dev.env.js # 开发环境配置
├── prod.env.js # 生产环境配置
└── api/ # API 配置
├── base.js # 基础配置
└── modules/ # 模块化 API
代码示例
路由懒加载配置
在 router/index.js 中实现动态导入:
const routes = [
{
path: '/dashboard',
component: () => import('@/views/Dashboard.vue')
}
]
Vuex 模块化示例store/modules/user.js:
export default {
namespaced: true,
state: () => ({
token: null
}),
mutations: {
SET_TOKEN(state, payload) {
state.token = payload
}
}
}
注意事项
- 保持目录命名一致性(全小写或 kebab-case)
- 避免过度嵌套(建议不超过 4 层)
- 测试文件建议与源码同目录,例如
Component.vue和Component.spec.js相邻存放 - 对于 TypeScript 项目,可添加
types/目录存放全局类型定义






