Vue 项目命名规范指南
📚 Vue 项目命名规范指南(适用于 Vue 3 + Pinia + Vue Router)
目的:统一命名风格,提升可读性、可维护性和团队协作效率。
一、通用原则
类型 | 命名风格 | 示例 |
---|---|---|
变量 | camelCase | userName , isLoading |
常量 | UPPER_SNAKE_CASE | MAX_RETRY_COUNT , DEFAULT_TIMEOUT |
函数/方法 | camelCase | fetchData , validateForm |
类 / 组件 / 枚举 / 路由 name | PascalCase | UserProfile , ErrorBoundary |
自定义指令(Vue) | kebab-case | v-focus , v-tooltip |
URL 路径 | kebab-case | /user-profile , /settings/account |
二、组件相关命名规范
1. 组件文件名
- 使用 PascalCase 或 KebabCase。
- 推荐使用 PascalCase,便于在 JS 中直接引用。
components/UserProfile.vue ✅ 推荐userProfile.vue ❌ 不推荐(容易与变量混淆)user-profile.vue ✅ 在模板中使用时推荐
2. 组件注册与使用
- 注册时使用 PascalCase:
import UserProfile from './components/UserProfile.vue'
- 模板中使用 kebab-case:
<template><user-profile :user="user" />
</template>
3. Props 命名(组件间传参)
- 使用 camelCase(JS 中),模板中用 kebab-case。
- 避免缩写(除非是通用缩写如
id
,url
)。
props: {userName: String,isActive: Boolean,userId: Number
}
<template><UserCard :user-name="name" :is-active="true" />
</template>
三、Vue Router 相关命名规范
1. 路由路径(URL)
- 使用 kebab-case,清晰表达资源结构。
{path: '/user-profile',name: 'UserProfile',component: () => import('../views/UserProfile.vue')
}
2. 路由名称(name)
- 使用 PascalCase,与组件名保持一致。
name: 'UserProfile'
3. 动态参数命名
- 参数名使用 kebab-case(URL),JS 中访问使用 camelCase。
path: '/user/:user_id' // URL 中使用
$route.params.userId // JS 中自动转为 camelCase
四、Pinia 状态管理命名规范
1. Store 文件名
- 使用小驼峰命名,以
.store.js
或.store.ts
结尾。
stores/userStore.jscartStore.js
2. State 属性命名
- 使用 camelCase,语义明确。
state: () => ({user: null,isLoading: false,activeTab: 'dashboard'
})
3. Actions 命名
- 动词开头 + 名词,表示动作。
actions: {async fetchUser(userId) {},updateUser(userData) {}
}
4. Getters 命名
- 名词或形容词为主,表示派生状态。
getters: {isLoggedIn: (state) => !!state.user,fullName: (state) => `${state.firstName} ${state.lastName}`
}
五、变量与函数命名规范
1. 变量命名
- 使用 camelCase。
- 避免模糊命名(如
data
,info
),应具体说明用途。
let currentUser = null;
let loadingCount = 0;
2. 函数命名
- 动词开头,描述行为。
function validateForm() {}
function submitData(data) {}
3. 布尔类型变量命名
- 以
is
,has
,should
开头。
let isActive = false;
let hasPermission = true;
六、常量命名规范
- 使用全大写 + 下划线分隔。
- 通常用于配置项、枚举、固定值等。
const MAX_RETRY_COUNT = 3;
const USER_ROLES = ['admin', 'editor', 'viewer'];
七、事件命名规范(Vue 组件通信)
- 使用 kebab-case,在子组件中
$emit
时使用:
this.$emit('update:loading', false);
- 在父组件中监听:
<template><ChildComponent @update:loading="handleLoadingChange" />
</template>
八、自定义指令命名规范
- 使用 kebab-case,符合 HTML 规范。
app.directive('focus', {mounted(el) {el.focus();}
});
使用方式:
<input v-focus />
九、样式类命名建议(可选)
- 推荐使用 BEM 风格或 CSS-in-JS 工具。
- 如果使用 SCSS/CSS,建议命名清晰:
.user-card {}
.user-card__header {}
.user-card--active {}
十、模块化命名建议
如果你的项目采用模块化结构(如多个 store、路由模块、功能模块),建议在命名中加入上下文前缀。
示例:
类型 | 示例 |
---|---|
Store | userStore.js , productStore.js |
路由模块 | userRoutes.js , orderRoutes.js |
组件 | UserList.vue , UserDetail.vue |
十一、附录:命名风格总结表
类型 | 命名风格 | 示例 |
---|---|---|
组件名 | PascalCase | UserProfile.vue |
模板标签 | kebab-case | <user-profile /> |
Props | camelCase(JS) / kebab-case(模板) | userName , user-name |
路由 name | PascalCase | 'UserProfile' |
路由路径 | kebab-case | /user-profile |
动态路由参数 | kebab-case(URL) / camelCase(JS) | :user_id → params.userId |
变量 | camelCase | userName , isLoading |
常量 | UPPER_SNAKE_CASE | MAX_RETRY_COUNT |
函数 | camelCase | fetchData , submitForm |
布尔变量 | is/has/should + 描述 | isActive , hasPermission |
Pinia state | camelCase | user , cartItems |
Pinia actions | 动词 + 名词 | fetchUser , addToCart |
Pinia getters | 名词/形容词 | isLoggedIn , totalPrice |
自定义指令 | kebab-case | v-focus |
十二、工具建议(可选)
- 使用 ESLint 和 Prettier 来自动格式化和校验命名风格。
- 使用 Vue Language Features (Volar) 提升 Vue 开发体验。
- 使用 TypeScript 增强类型安全和命名一致性。
✅ 总结
一个良好的命名规范能显著提升代码质量与团队协作效率。建议将此文档纳入项目初期的技术规范文档,并结合 ESLint/Prettier 工具进行自动化检查。
相关文章:
Vue 项目命名规范指南
📚 Vue 项目命名规范指南(适用于 Vue 3 Pinia Vue Router) 目的:统一命名风格,提升可读性、可维护性和团队协作效率。 一、通用原则 类型命名风格示例变量camelCaseuserName, isLoading常量UPPER_SNAKE_CASEMAX_RET…...

【笔记】开源通用人工智能代理 Suna 部署全流程准备清单(Windows 系统)
#工作记录 一、基础工具与环境 开发工具 Git 或 GitHub Desktop(代码管理)Docker Desktop(需启用 WSL2,容器化部署)Python 3.11(推荐版本,需添加到系统环境变量)Node.js LTS…...

海康工业相机SDK二次开发(VS+QT+海康SDK+C++)
前言 工业相机在现代制造和工业自动化中扮演了至关重要的角色,尤其是在高精度、高速度检测中。海康威视工业相机以其性能稳定、图像质量高、兼容性强而受到广泛青睐。特别是搞机器视觉的小伙伴们跟海康打交道肯定不在少数,笔者在平常项目中跟海康相关人…...
前端面试准备-5
1.Node.js中的process.nectTick()有什么作用 将一个回调函数插入到当前执行栈的尾部,在下一次事件轮询之前调用这个回调函数 2.什么是Node.js中的事件发射器,作用是什么,如何使用 提供一种机制,可以创建、触发和监听自定义事件…...
Spring Boot 启动流程深度解析:从源码到实践
Spring Boot 启动流程深度解析:从源码到实践 Spring Boot 作为 Java 开发的主流框架,其 “约定大于配置” 的理念极大提升了开发效率。本文将从源码层面深入解析 Spring Boot 的启动流程,并通过代码示例展示其工作机制。 一、Spring Boot 启…...

深度学习|pytorch基本运算-乘除法和幂运算
【1】引言 前序学习进程中,已经对pytorch张量数据的生成和广播做了详细探究,文章链接为: 深度学习|pytorch基本运算-CSDN博客 深度学习|pytorch基本运算-广播失效-CSDN博客 上述探索的内容还止步于张量的加减法,在此基础上&am…...
嵌入式通用集成电路卡市场潜力报告:物联网浪潮下的机遇与挑战剖析
一、嵌入式通用集成电路卡概述 嵌入式通用集成电路卡(Embedded Universal Integrated Circuit Card,简称 eUICC),是一种将传统 SIM 卡功能直接嵌入到设备主板上的芯片解决方案 。与传统可插拔式 SIM 卡不同,eUICC 采…...

4.2.4 Spark SQL 数据写入模式
在本节实战中,我们详细探讨了Spark SQL中数据写入的四种模式:ErrorIfExists、Append、Overwrite和Ignore。通过具体案例,我们演示了如何使用mode()方法结合SaveMode枚举类来控制数据写入行为。我们首先读取了一个JSON文件生成DataFrame&#…...

论文笔记: Urban Region Embedding via Multi-View Contrastive Prediction
AAAI 2024 1 INTRO 之前基于多视图的region embedding工作大多遵循相同的模式 单独的单视图表示多视图融合 但这种方法存在明显的局限性:忽略了不同视图之间的信息一致性 一个区域的多个视图所携带的信息是高度相关的,因此它们的表示应该是一致的如果能…...
Android 缓存应用冻结器(Cached Apps Freezer)
一、核心功能与原理 1. 功能概述 目标:通过冻结后台缓存应用的进程,减少其对 CPU、内存等系统资源的消耗,优化设备性能与续航。适用场景:针对行为不当的后台应用(如后台偷偷运行代码、占用 CPU)ÿ…...

初学者如何微调大模型?从0到1详解
本文将手把手带你从0到1,详细解析初学者如何微调大模型,让你也能驾驭这些强大的AI工具。 1. 什么是大模型微调? 想象一下,预训练大模型就像一位博览群书但缺乏专业知识的通才。它掌握了海量的通用知识,但可能无法完美…...

西瓜书第十一章——降维与度量学习
文章目录 降维与度量学习k近邻学习原理头歌实战-numpy实现KNNsklearn实现KNN 降维——多维缩放(Multidimensional Scaling, MDS,MDS)提出背景与原理重述1.**提出背景**2.**数学建模与原理推导**3.**关键推导步骤** Principal Component Analy…...

Portainer安装指南:多节点监控的docker管理面板-家庭云计算专家
背景 Portainer 是一个轻量级且功能强大的容器管理面板,专为 Docker 和 Kubernetes 环境设计。它通过直观的 Web 界面简化了容器的部署、管理和监控,即使是非技术用户也能轻松上手。Portainer 支持多节点管理,允许用户从一个中央控制台管理多…...
NanoGPT的BenchMarking.py
1.Benchmarking是一种评估和比较性能的过程。在深度学习领域,它通常涉及对模型的训练速度、推理速度、内存占用等指标进行测量,以便评估不同模型、不同硬件配置或者不同软件版本之间的性能差异。 例如,当你尝试比较两个不同架构的模型&#x…...
测试用例及黑盒测试方法
一、测试用例 1.1 基本要素 测试用例(Test Case)是为了实施测试而向被测试的系统提供的一组集合,这组集合包含:测试环境、操作步骤、测试数据、预期结果等4个主要要素。 1.1.1 测试环境 定义:测试执行所需的软硬件…...
CentOS 7 环境下部署 LAMP
在 CentOS 7 环境下部署 LAMP(Linux Apache MySQL 5.7 PHP 7.4) 环境的详细步骤如下: 1. 系统准备 1.1 更新系统 sudo yum update -y 1.2 安装依赖 sudo yum install -y gcc pcre pcre-devel zlib zlib-devel openssl openssl-devel e…...

vscode实用配置
前端开发安装插件: 1.可以更好看的显示文件图标 2.用户快速打开文件 使用步骤:在html文件下右键点击 open with live server 即可 刷力扣: 安装这个插件 还需要安装node.js即可...

React 项目中封装 Excel 导入导出组件:技术分享与实践
文章目录 前言一、为什么需要封装 Excel 组件?二、技术选型三、核心实现1. 安装依赖2. 封装Excel导出3. 封装导入组件 (UploadExcel) 总结 前言 在 React 项目中,处理 Excel 文件的导入和导出是常见的业务需求。无论是导出报表数…...
【PhysUnits】15.1 引入P1后的加一特质(add1.rs)
一、源码 代码实现了类型系统中的"加一"操作(Add1 trait),用于在编译期进行数字的增量计算。 //! 加一操作特质实现 / Increment operation trait implementation //! //! 说明: //! 1. Z0、P1,、N1 1࿰…...

【2025CCF中国开源大会】RISC-V 开源生态的挑战与机遇分论坛重磅来袭!共探开源芯片未来
点击蓝字 关注我们 CCF Opensource Development Committee 开源浪潮正从软件席卷硬件领域,RISC-V作为全球瞩目的开源芯片架构,正在重塑计算生态的版图!相较于成熟的x86与ARM,RISC-V生态虽处爆发初期,却蕴藏着无限可能。…...

python完成批量复制Excel文件并根据另一个Excel文件中的名称重命名
import openpyxl import shutil import os # 原始文件路径 original_file "C:/Users/Administrator/Desktop/事业联考面试名单/郑州.xlsx" # 读取包含名称的Excel文件 # 修改为您的文件名 wb openpyxl.load_workbook( "C:/Users/Administrator/Desktop/事…...

Vue-2-前端框架Vue基础入门之二
文章目录 1 计算属性1.1 计算属性简介1.2 计算属性示例 2 侦听器2.1 简单的侦听器2.2 深度监听2.3 监听对象单个属性 3 vue-cli3.1 工程化的Vue项目3.2 Vue项目的运行流程 4 vue组件4.1 Vue组件的三个部分4.1.1 template4.1.2 script4.1.3 style 4.2 组件之间的关系4.2.1 使用组…...

CPT208 Human-Centric Computing 人机交互 Pt.7 交互和交互界面
文章目录 1. 界面隐喻(Interface metaphors)1.1 界面隐喻的应用方式1.2 界面隐喻的优缺点 2. 交互类型2.1 Instructing(指令式交互)2.2 Conversing(对话式交互)2.3 Manipulating(操作式交互&…...
ubuntu20.04.5-arm64版安装robotjs
ubuntu20.04.5arm上使用robotjs #ssh,可选 sudo apt update sudo apt install openssh-server sudo systemctl status ssh sudo systemctl enable ssh sudo systemctl enable --now ssh #防火墙相关,可选 sudo ufw allow ssh sudo ufw allow 2222/tc…...

[网页五子棋][匹配模块]前后端交互接口(消息推送机制)、客户端开发(匹配页面、匹配功能)
让多个用户,在游戏大厅中能够进行匹配,系统会把实力相近的两个玩家凑成一桌,进行对战 约定前后端交互接口 消息推送机制 匹配这样的功能,也是依赖消息推送机制的 玩家 1 点击开始匹配按钮,就会告诉服务器࿱…...

【数据分析】Matplotlib+Pandas+Seaborn绘图
【数据分析】MatplotlibPandasSeaborn绘图 (一)Matplotlib绘图1.1 matplotlib绘图方式1: 状态接口1.2 matplotlib绘图方式2: 面向对象1.3 通过安斯科姆数据集, 说明可视化的重要性1.4 MatPlotlib绘图-单变量-直方图1.5 MatPlotlib绘图-双变量-散点图1.6 …...

NLP学习路线图(十五):TF-IDF(词频-逆文档频率)
在自然语言处理(NLP)的浩瀚宇宙中,TF-IDF(词频-逆文档频率) 犹如一颗恒星,虽古老却依然璀璨。当ChatGPT、BERT等大模型光芒四射时,TF-IDF作为传统方法的代表,其简洁性、高效性与可解…...

[Redis] Redis命令在Pycharm中的使用
初次学习,如有错误还请指正 目录 String命令 Hash命令 List命令 set命令 SortedSet命令 连接pycharm的过程见:[Redis] 在Linux中安装Redis并连接桌面客户端或Pycharm-CSDN博客 redis命令的使用见:[Redis] Redis命令(1…...

openpnp - 给M4x0.7mm的直油嘴加油的工具选择
文章目录 openpnp - 给M4x0.7mm的直油嘴加油的工具选择概述如果换上带卡口的M4x0.7直油嘴END openpnp - 给M4x0.7mm的直油嘴加油的工具选择 概述 X导轨用了一个HG15的滑块 滑块上的注油口的黄油嘴是M4x0.7mm的直油嘴。 外表面是6边形的柱子,没有可以卡住加油嘴工…...
Azure Devops 系列之三- vscode部署function app
Azure Function App 是 Microsoft Azure 提供的一项无服务器计算服务,它允许您运行事件驱动的应用程序,而无需管理底层基础架构。它使您能够执行代码来响应各种事件,例如 HTTP 请求、队列消息、计时器以及许多其他类型的触发器。 Azure Function App 的主要功能: 无服务器…...