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

Vue3 + TypeScript 组件和文件命名规范及 setup 导入顺序规范

前言

在 Vue3 项目中,合理的文件命名规范和导入顺序不仅有助于提高代码的可读性,还能增强团队协作的效率。特别是在使用 TypeScript 和 Composition API 的项目中,清晰的组件和文件结构尤为重要。本文将详细介绍 Vue3 + TypeScript 项目中的组件、文件命名规范,以及 setup 中的导入顺序建议,帮助开发者更高效地组织代码。

文件和组件命名规范

1.1 组件文件命名

  • 全局通用组件:使用 PascalCase 命名,例如 MyButton.vueUserCard.vue。这些组件一般放置在 src/components 文件夹下。
  • 业务特定组件:也采用 PascalCase 命名,例如 UserProfile.vueOrderSummary.vue。放置在特定业务模块目录下,如 src/views/user/components

1.2 非组件文件命名

  • 工具函数文件:使用 kebab-case,如 date-utils.tsarray-helpers.ts。通常放在 src/utils 下。
  • 常量和配置文件:使用 kebab-case,如 app-config.tstheme-constants.ts。放在 src/constantssrc/config 下。
  • API 文件:使用 kebab-case 命名,例如 auth.tsuser.ts。放置在 src/api 文件夹中。
  • 枚举文件:使用 PascalCase,如 ThemeEnum.tsUserRole.ts。放在 src/enums 文件夹中。
  • 类型定义文件:通常在类型前缀使用 I 或直接以功能命名,文件采用 PascalCase,如 UserType.tsAuthTypes.ts。放置在 src/typessrc/interfaces 下。

1.3 其他文件命名

  • Store 文件:使用 kebab-case 命名,例如 user.tstags-view.ts,存放在 src/store 文件夹中。
  • 路由文件:使用 kebab-case 命名,例如 auth-routes.tsdashboard-routes.ts,放在 src/router 下。

导入顺序

在 Vue3 的 setup 中编写 TypeScript 代码时,保持清晰的导入顺序可以提升代码的可读性。推荐的导入顺序如下:

  1. Vue 和 Composition API:先导入 Vue 核心库以及 Composition API 钩子,如 refcomputedreactivewatchuseRoute 等。
  2. 第三方库:导入第三方库或插件的类型定义和函数,如 axioselement-plus 等。
  3. 项目内配置和常量:如全局配置文件和常量,放在 /src/settings/src/constants 下。
  4. 枚举和类型定义:包括常用的枚举(Enum)和类型定义(types),通常存放在 /src/enums/src/types 中。
  5. Store 状态管理:引入项目的 Pinia store 模块,通常放在 src/store 中。
  6. API 和工具函数:导入项目内的 API 接口(api)和工具函数(utils)。
  7. 业务组件:导入页面或模块专用的子组件。业务组件放在特定页面或模块下的 components 文件夹中。
  8. 局部样式:在组件中引入其特定样式。
  9. 图片和其他资源:根据需要导入。

示例代码: 以下是根据上述导入顺序的示例代码:

<script lang="ts" setup>// Vue 和 Composition API
import { ref, computed, watch } from 'vue';
import { useRoute } from 'vue-router';// 第三方库
import type { FormInstance } from 'element-plus';// 项目内配置和常量
import defaultSettings from '@/settings';
import { BASE_API_URL } from '@/constants/api-constants';// 枚举和类型定义
import { ThemeEnum } from '@/enums/ThemeEnum';
import type { UserType } from '@/types/UserType';// API 和工具函数
import AuthAPI from '@/api/dict-data';
import { formatDate } from '@/utils/date-utils';// Store 状态管理
import { useUserStore } from '@/store/user';
import { useTagsViewStore } from '@/store/tagsView';// 业务组件
import UserProfile from '@/views/user/components/UserProfile.vue';
import UserExport from '@/views/user/components/UserExport.vue';import logo from "@/assets/logo.png";</script>

组件与文件结构建议

为了方便项目的扩展和维护,以下是推荐的文件与组件组织结构:

src/
├── api/                        # API 请求文件
│   ├── auth.ts
│   └── dict-data.ts
├── components/                 # 全局通用组件
│   ├── MyButton.vue
│   └── UserCard.vue
├── constants/                  # 项目中的常量
│   └── api-constants.ts
├── enums/                      # 枚举定义
│   ├── ThemeEnum.ts
├── store/                      # Pinia store
│   ├── user.ts
│   └── tags-view.ts
├── types/                      # 类型定义文件
│   └── UserType.ts
├── utils/                      # 工具函数
│   ├── date-utils.ts
│   └── array-helpers.ts
├── views/                      # 业务页面和组件└── user/├── index.vue           # 用户主页面└── components/         # 用户模块特有组件├── UserProfile.vue└── UserExport.vue

命名规范总结

  • 组件命名:全局组件和业务组件均使用 PascalCase 命名,方便区分组件和 HTML 标签。
  • 文件命名:非组件文件使用 kebab-case 命名,包括工具、API、常量、store 等文件。
  • 导入顺序:按照上述推荐的顺序组织导入项,保持代码一致性和清晰性。

结语

在 Vue3 + TypeScript 项目中,遵循统一的命名规范和导入顺序,可以有效提升代码的可读性和维护性。合理的组件组织结构也有助于团队间的协作,便于扩展和复用。希望本文的规范建议能帮助你在项目中建立清晰、高效的代码结构,提高整体的开发体验。

http://www.lryc.cn/news/476541.html

相关文章:

  • netty之处理连接源码分析
  • Dockerfile文件编写
  • Oracle SQL 使用 ROWNUM 分页查询速度太慢的问题及解决方案!
  • Django3 + Vue.js 前后端分离书籍添加项目Web开发实战
  • 楼梯区域分割系统:Web效果惊艳
  • Day10加一
  • UTF-8简介
  • 基于Openwrt系统架构,实现应用与驱动的实例。
  • SQL进阶技巧:如何利用三次指数平滑模型预测商品零售额?
  • HTB:Cicada[WriteUP]
  • 小张求职记四
  • 适用于 c++ 的 wxWidgets框架源码编译SDK-windows篇
  • flink 内存配置(二):设置TaskManager内存
  • 【C++ 算法进阶】算法提升八
  • 阿里云实时数据仓库HologresFlink
  • 生成式语言模型的文本生成评价指标(从传统的基于统计到现在的基于语义)
  • 【网安案例学习】暴力破解攻击(Brute Force Attack)
  • 时间序列预测(十八)——实现配置管理和扩展命令行参数解析器
  • Vue问题汇总解决
  • Spark学习
  • 一些小细节代码笔记汇总
  • L4.【LeetCode笔记】链表题的VS平台调试代码
  • JavaCV 之高斯滤波:图像降噪与细节保留的魔法
  • VsCode显示空格
  • .Net C# 基于EFCore的DBFirst和CodeFirst
  • w012基于springboot的社区团购系统设计
  • 笔记本降频超鬼锁屏0.39电脑卡到不行解决办法实操记录
  • 优选算法第四讲:前缀和模块
  • ubuntu20.04 加固方案-设置限制su命令用户组
  • TDengine数据备份与恢复