当前位置: 首页 > web >正文

Vue3项目目录结构规范建议

以下是一个推荐的 Vue 3 项目目录结构规范,适用于中大型项目并遵循最佳实践:


基础目录结构

bash

src/
├─ assets/               # 静态资源
│  ├─ images/           # 图片文件
│  ├─ fonts/            # 字体文件
│  └─ styles/           # 全局样式
│     ├─ variables.scss # SCSS 变量
│     └─ global.scss    # 全局样式入口
│
├─ components/          # 公共组件
│  ├─ common/           # 基础通用组件(如按钮、输入框)
│  └─ ui/               # 业务无关的 UI 组件
│
├─ router/              # 路由配置
│  └─ index.ts          # 路由入口文件
│
├─ store/               # 状态管理(Pinia)
│  ├─ modules/          # Pinia 模块化存储
│  └─ index.ts          # Pinia 初始化
│
├─ views/               # 页面级组件(路由页面)
│
├─ composables/         # Composition API 逻辑复用
│  ├─ useFetch.ts       # 示例:数据请求逻辑
│  └─ useEventListener.ts
│
├─ services/            # API 请求封装
│  ├─ api.ts            # Axios 实例配置
│  └─ user.service.ts   # 用户相关接口
│
├─ types/               # TypeScript 类型定义
│  └─ user.d.ts         # 用户相关类型
│
├─ utils/               # 工具函数
│  ├─ validators.ts     # 表单校验工具
│  └─ helpers.ts        # 通用辅助函数
│
├─ App.vue              # 根组件
└─ main.ts              # 应用入口

可选目录(根据项目规模)

bash

public/                # 纯静态文件(直接拷贝到 dist)
├─ favicon.ico
└─ robots.txttests/                 # 测试文件
├─ unit/               # 单元测试
└─ e2e/                # E2E 测试plugins/               # Vue 插件
├─ i18n.ts             # 国际化插件
└─ directives.ts       # 自定义指令config/               # 构建/环境配置
├─ env.ts             # 环境变量处理
└─ vite/              # Vite 相关配置

中大型项目推荐结构

对于复杂项目,可采用 模块化组织

bash

src/
└─ modules/            # 功能模块├─ auth/            # 认证模块│  ├─ components/   # 模块私有组件│  ├─ store/        # 模块专属 Pinia│  ├─ types/        # 模块类型定义│  └─ hooks/        # 模块专属逻辑│└─ dashboard/       # 另一个功能模块├─ api/          # 模块接口└─ utils/        # 模块工具

核心规范建议

  1. 命名规范

    • 组件:PascalCase(如 UserProfile.vue

    • 组合式函数:useXxx 前缀(如 usePagination

    • 类型定义:T 前缀(如 TUser

  2. 代码组织原则

    • 按功能而非类型组织代码

    • 单一组件不超过 500 行

    • 公共组件保持纯 UI 展示

  3. 静态资源管理

    • 小图标优先使用 SVG Sprite

    • 全局样式变量通过 SCSS/Less 管理

    • 第三方字体通过 @font-face 引入

  4. 请求层规范

    typescript

    // services/api.ts
    export const http = axios.create({baseURL: import.meta.env.VITE_API_URL,timeout: 10000
    })
  5. 类型安全

    typescript

    // types/user.d.ts
    interface TUser {id: numbername: stringemail: string
    }

示例结构解析

bash

my-vue-app/
├─ .env.development    # 开发环境变量
├─ .eslintrc           # ESLint 配置
├─ tsconfig.json       # TypeScript 配置
├─ vite.config.ts      # Vite 配置
│
└─ src/├─ main.ts          # 初始化 Vue 实例├─ App.vue          # 根组件│└─ features/        # 功能模块(替代 views)├─ product/      # 商品模块│  ├─ components/│  ├─ api/│  └─ store/│└─ order/        # 订单模块

注意事项

  1. 避免过度设计,小型项目保持简单结构

  2. 使用 alias 简化导入路径:

    javascript

    // vite.config.js
    resolve: {alias: {'@': path.resolve(__dirname, 'src')}
    }
  3. 测试文件建议与组件同级:

    bash

    components/
    ├─ Button.vue
    └─ Button.spec.ts

根据实际项目需求灵活调整,保持目录结构的可扩展性和可维护性是核心目标。

http://www.xdnf.cn/news/2538.html

相关文章:

  • 【测控系统】测控仪器技术概述与专业选择
  • 【项目实训个人博客】multi-agent调研(1)
  • XMOS直播声卡——可支持实时音频DSP处理的低延迟音频方案
  • Web前渗透
  • JavaScript基础(七)之web APIs
  • 开源项目实战学习之YOLO11:ultralytics-cfg-datasets-VOC、xView.yaml文件(八)
  • 设计模式--桥接模式详解
  • 【C++贪心 滑动窗口】P7990 [USACO21DEC] Closest Cow Wins S|省选-
  • UE5 在旋转A的基础上执行旋转B
  • 复杂背景下无人机影像小目标检测:MPE-YOLO抗遮挡与抗背景干扰设计
  • 深度学习算法:开启智能时代的钥匙
  • FastAPI中的依赖注入详解与示例
  • 假设检验学习总结
  • SQL优化,关联查询非常慢,前台页面控件卡顿
  • 使用 Playwright 构建高效爬虫:原理、实战与最佳实践
  • 大模型应用实战:深入理解模型上下文协议 MCP
  • Linux-UDP套接字编程
  • 小结: DHCP
  • 【SpringMVC】概念引入与连接
  • Spark-Streaming2
  • 深入解析Vue.js:构建现代Web应用的高效之道
  • BIOES 标签的含义
  • 三分钟音乐社:8、构建(自然)大调的音阶
  • 【嵌入式系统设计师(软考中级)】第二章:嵌入式系统硬件基础知识——④定时器计数器和系统总线及通信接口
  • 全面解析Java(上)------多线程编程:从线程生命周期到并发机制的深度剖析与实践指南
  • 组件的基本知识
  • 力扣hot100,739每日温度(单调栈)详解
  • 【Spring Boot】Maven中引入 springboot 相关依赖的方式
  • linux
  • Maven 使用教程