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

Vue3的命名规范

命名规范

一、组件命名规范

  1. 单文件组件命名
    • 使用 PascalCase(大驼峰) 命名法,如 UserProfile.vue

    • 必须由 2-3 个单词组成,避免与 HTML 原生标签冲突(如 <header><AppHeader>

    • 文件名与组件名严格一致,便于代码追踪

  2. 全局注册命名
    • 全局组件推荐使用 PascalCase,保持与单文件命名一致

    • 示例:app.component('UserProfile', UserProfile)

  3. 局部注册命名
    • DOM 模板中优先使用 kebab-case(短横线分隔),如 <user-profile>

    • JavaScript 中仍使用 PascalCase 导入

  4. 命名语义化原则
    • 名称需体现功能(如 SearchInputImageGallery

    • 基础组件可添加统一前缀(如 BaseButtonAppHeader

    • 父子组件采用关联前缀(如 TodoListTodoListItem


二、Props 命名规范

  1. 声明方式
    • JavaScript 中采用 camelCase(小驼峰),如 userName

    • 模板中使用 kebab-case 转换,如 <user-profile user-name="value">

  2. 类型与验证
    • 必须显式声明类型和验证规则:

    props: {status: {type: String,required: true,validator: (v) => ['success', 'error'].includes(v)}
    }
    

三、事件命名规范

  1. 命名规则
    • 使用 kebab-case,遵循 动词-名词 结构(如 update:user-info

    • 状态变更事件建议用 名词-动词(如 state-change

  2. 声明方式
    • 推荐通过 defineEmits 显式定义参数类型:

    const emit = defineEmits({'search': (query: string) => !!query.trim()
    })
    

四、组合式 API 规范

  1. 可组合函数命名
    • 以 use 开头,采用 PascalCase(如 useFetchuseCounter

    • 返回多个值时可使用复数形式(如 useFormValidators

  2. 响应式变量
    • 基础类型用 ref,对象类型用 reactive

    • 解构时通过 toRefs 保持响应性


五、代码风格规范

  1. 变量与方法
    • 使用 camelCase 命名(如 currentPagegetUserInfo

    • 避免单个单词命名(如 datauserData

  2. 模板指令
    v-for 必须绑定唯一 key

    • 禁止 v-ifv-for 同级使用,优先用计算属性过滤数据

  3. 样式命名
    • CSS 类名使用 BEM 规范(如 .user-profile__title--active

    • 组件样式添加 scoped 属性隔离作用域


六、路由与状态管理

  1. 路由命名
    • 路径参数用 kebab-case(如 /user/:user-id

    • 路由配置采用 camelCase(如 userProfile

  2. 状态模块
    • Pinia/Vuex 模块名使用 camelCase(如 userStore

    • 复杂状态拆分到独立模块(如 cartStoreauthStore


七、其他核心原则

原则说明示例/参考
一致性项目内统一命名风格,可通过 ESLint 自动检查配置 .eslintrc
可读性避免缩写(如 UsrUser),优先完整单词Dashboard vs Dash
类型安全组合式 API 中优先使用 TypeScript 类型标注interface User
性能优化大型列表使用 v-virtual-scroll,避免不必要的响应式数据虚拟滚动方案

总结建议

  1. 工具集成
    通过 Volar + ESLint + Prettier 实现自动化规范检查
  2. 文档对齐
    复杂组件需编写 .md 文档说明 Props/Events 用法
  3. 团队协作
    使用 .editorconfig 统一编辑器配置,减少格式冲突
http://www.xdnf.cn/news/5723.html

相关文章:

  • 从ES5到ES6+:JavaScript语法演进与实现解析
  • 《汽车软件升级通用技术要求》 GB 44496-2024——解读
  • 仿函数和函数对象
  • Java中堆栈
  • vue实现进度条带指针
  • Elasticsearch 字段映射与数据类型
  • 面试专栏-03-Git的常用命令
  • 异构计算时代:混合编程的崛起与未来
  • 大型视频学习平台项目问题解决笔记
  • Megatron系列——流水线并行
  • KUKA机器人安装包选项KUKA.PLC mxAutomation软件
  • 产品功能更新迭代后需要重做算法备案吗?
  • Linux系统管理与编程20:Apache
  • 关于mac配置hdc(鸿蒙)
  • Nginx部署前端项目深度解析
  • 使用 Syncthing 在两台电脑之间同步文件:简单教程
  • 用drawdb.app可视化创建mysql关系表
  • 开源 RPA 工具深度解析与官网指引
  • 学习黑客Windows 病毒与威胁防护
  • Clickhouse 迁移到 Doris 的最佳实践
  • PyTorch 中的 Autograd 实现细节解析和应用
  • TCPIP详解 卷1协议 九 广播和本地组播(IGMP 和 MLD)
  • 力扣算法ing(69 / 100)
  • MongoDB使用x.509证书认证
  • 单片机Day10
  • 【Mysql基础】二、函数和约束
  • 职坐标IT培训:互联网行业核心技能精讲
  • Model.eval() 与 torch.no_grad() PyTorch 中的区别与应用
  • Scala和Spark的介绍
  • window server 2012安装sql server2008 r2