# vue代码规范 
好的 👍 我来帮你整理一份 适用于 Vue 语法的 UniApp 项目代码规范文档,以 Markdown 格式 给出,涵盖:项目结构、文件命名、Vue 组件规范、样式规范、注释规范、JavaScript 逻辑编写等。
下面是完整的内容,你可以直接复制到 CODE_STYLE.md 或 开发规范.md 中使用:
# UniApp 项目代码规范文档
# 1. 项目结构
uniapp-project/ │── pages/ # 页面目录 │ ├── index/ # 首页 │ │ ├── index.vue │ │ └── index.scss │ └── user/ # 用户相关页面 │ ├── login.vue │ └── register.vue │ │── components/ # 公共组件 │ ├── my-header.vue │ └── my-footer.vue │ │── uni_modules/ # 插件目录 │ │── static/ # 静态资源(图片、字体、音频等) │ ├── images/ │ ├── fonts/ │ └── audio/ │ │── common/ # 公共方法与工具类 │ ├── utils.js │ ├── request.js │ └── config.js │ │── store/ # 状态管理(Vuex/Pinia) │ │── manifest.json # 配置文件 │── pages.json # 页面路由配置 │── uni.scss # 全局样式✅ Copy success!
# 2. 文件命名规范
页面/组件文件:统一使用 小写 + 中划线
- ✅
user-center.vue - ❌
UserCenter.vue
- ✅
目录命名:统一使用 小写 + 中划线
- ✅
user-info/
- ✅
静态资源:
- 图片:
模块名-功能名.png→user-avatar.png - 样式:
index.scss与index.vue同名
- 图片:
# 3. Vue 文件规范
# 3.1 组件结构顺序
<template> <view class="user-center"> <text class="title">{{ title }}</text> </view> </template> <script> export default { name: "user-center", // 组件名称,统一小写-中划线 props: { title: { type: String, default: "用户中心" } }, data() { return { userInfo: {} } }, computed: { isLogin() { return !!this.userInfo.token } }, watch: { userInfo(val) { console.log("用户信息更新", val) } }, methods: { async getUserInfo() { try { let res = await uni.request({ url: "/api/user/info" }) this.userInfo = res.data } catch (e) { console.error("获取用户信息失败", e) } } }, onLoad() { this.getUserInfo() } } </script> <style lang="scss" scoped> .user-center { padding: 20rpx; .title { font-size: 32rpx; color: #333; } } </style>✅ Copy success!
# 4. CSS/SCSS 命名规范
使用 BEM 规范(Block-Element-Modifier)
.card {}→ Block.card__title {}→ Element.card--active {}→ Modifier
示例:
.card { padding: 20rpx; &__title { font-size: 32rpx; } &--active { background-color: #f5f5f5; } }✅ Copy success!
# 5. JS/TS 书写规范
变量命名:
camelCase小驼峰- ✅
userInfo - ❌
User_Info
- ✅
常量命名:
UPPER_CASE- ✅
API_BASE_URL
- ✅
类命名:
PascalCase- ✅
UserService
- ✅
函数命名:动词开头
- ✅
getUserInfo() - ✅
setUserInfo()
- ✅
# 6. 注释规范
# 6.1 文件头部注释
/** * @description 用户请求封装 * @author *** * @date 2025-08-28 */✅ Copy success!
# 6.2 方法注释
/** * 获取用户信息 * @param {String} userId 用户ID * @returns {Promise<Object>} 用户信息 */ async function getUserInfo(userId) { return await uni.request({ url: `/api/user/${userId}` }) }✅ Copy success!
# 6.3 逻辑注释
// 校验用户是否已登录 if (!this.isLogin) { uni.navigateTo({ url: "/pages/login/login" }) }✅ Copy success!
# 7. 页面/组件交互规范
页面内方法以
handle开头- ✅
handleLoginClick() - ✅
handleSubmitForm()
- ✅
接口请求方法以
get/post/put/delete开头- ✅
getUserList()
- ✅
公共工具方法以动词开头
- ✅
formatDate()
- ✅
# 8. Git 提交规范
feat: 新功能fix: 修复 Bugdocs: 文档修改style: 样式修改(不影响功能逻辑)refactor: 代码重构test: 添加测试chore: 构建或辅助工具变动
示例:
feat: 新增用户登录功能 fix: 修复登录页面跳转 bug style: 调整首页标题样式✅ Copy success!
# 9. 代码风格约定
- 使用 ESLint + Prettier 保持统一格式
- 统一缩进:
2个空格 - 语句结束必须加
; - 单引号
'代替双引号"
# 10. 其他规范
- 所有接口地址统一维护在
common/config.js - 不允许在页面直接写接口,需封装到
common/request.js - 页面逻辑保持单一,复杂逻辑抽离到
utils.js
✅ 以上就是一份 完整的 UniApp Vue 开发代码规范文档,涵盖了常用开发场景。
👉 这样一来:
点击/切换/输入等 UI 事件 → onXxx
具体业务逻辑 → handleXxx
接口调用 → get/post/put/deleteXxx
通用工具方法 → 动词 + 名词
形成清晰分层,团队代码一眼就能区分逻辑职责。
=============== 明白了 ✅ 你是希望我把 常用的 on... 方法命名场景 全部列出来,做成一份清单,开发时直接对照就能用了。
我帮你整理一个 「on事件命名清单」,涵盖 点击、输入、切换、提交、选择、加载、滚动、拖拽、刷新等常见场景。
# 11. 方法命名规范(补充常用 on...)
# 11.1 点击类
onClickButton()—— 点击按钮onClickLogin()—— 点击登录onClickLogout()—— 点击退出onClickItem(item)—— 点击列表项onClickBack()—— 点击返回
# 11.2 输入/修改类
onInputChange(e)—— 输入框内容变化onInputSearch(e)—— 搜索框输入onChangeSwitch(val)—— 开关切换onChangeCheckbox(val)—— 复选框切换onChangeRadio(val)—— 单选框切换onChangeTab(index)—— Tab 切换onChangeDate(val)—— 日期选择
# 11.3 提交/确认类
onSubmitForm(data)—— 提交表单onConfirmDialog()—— 确认弹窗onCancelDialog()—— 取消弹窗
# 11.4 选择类
onSelectItem(item)—— 选择某个选项onSelectAddress(addr)—— 选择地址onSelectFile(file)—— 选择文件onSelectImage(img)—— 选择图片
# 11.5 加载/刷新类
onLoadPage()—— 页面加载完成onRefreshData()—— 页面刷新onPullDownRefresh()—— 下拉刷新onReachBottom()—— 触底加载更多
# 11.6 滚动/拖拽类
onScrollPage(e)—— 页面滚动onScrollToTop()—— 滚动到顶部onScrollToBottom()—— 滚动到底部onDragStart(e)—— 拖拽开始onDragMove(e)—— 拖拽中onDragEnd(e)—— 拖拽结束
# 11.7 其他场景
onOpenModal()—— 打开弹窗onCloseModal()—— 关闭弹窗onPlayAudio()—— 播放音频onPauseAudio()—— 暂停音频onErrorRequest(err)—— 请求出错onSuccessRequest(res)—— 请求成功
# 代码示例
<template> <view> <button @click="onClickLogin">登录</button> <input @input="onInputChange" /> <switch @change="onChangeSwitch" /> <form @submit="onSubmitForm"></form> <scroll-view @scrolltolower="onReachBottom"></scroll-view> </view> </template> <script> export default { methods: { onClickLogin() { this.handleLogin() }, onInputChange(e) { this.searchKey = e.detail.value }, onChangeSwitch(val) { this.isOpen = val }, onSubmitForm(data) { this.handleSubmit(data) }, onReachBottom() { this.handleLoadMore() } } } </script>✅ Copy success!
这样整理之后,团队就可以直接对照使用,看到 onClickXXX 就知道是 UI交互事件,看到 handleXXX 就知道是 业务逻辑方法。
要不要我帮你把 这些 on...清单 也合并进之前的 完整代码规范文档,出一个最终整合版 CODE_STYLE.md?