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

一些基本的 Vue 规范

一、项目结构规范

推荐的目录结构

src/
├── assets/         # 静态资源(如图片、字体)
├── components/     # 全局组件
├── views/          # 页面组件(用于路由)
├── router/         # 路由配置
├── store/          # Vuex 状态管理
├── composables/    # 封装的可复用逻辑(Vue 3)
├── services/       # 接口请求逻辑
├── utils/          # 工具函数
├── App.vue         # 根组件
├── main.js         # 入口文件

二、组件命名规范

文件命名

  • 组件文件使用 PascalCase(大驼峰命名)或 kebab-case(短横线连接):
    • MyComponent.vue
    • my-component.vue
    • myComponent.vue

组件命名

  • 组件的 name 属性使用 PascalCase:
    <script>
    export default {name: 'MyComponent'
    }
    </script>
    

组件注册

  • 本地组件使用驼峰命名或短横线均可,但保持一致。
  • 全局组件建议使用 Base 前缀(如:BaseButton)表示通用组件。

三、模板规范(template)

模板结构顺序

组件结构推荐顺序为:

<template>
</template><script>
</script><style scoped>
</style>

使用简洁语法

  • 使用 v-bind: 简写:

    :src="imageUrl" 代替 v-bind:src
    
  • 使用 v-on: 简写:

    @click="handleClick" 代替 v-on:click
    

属性顺序

推荐顺序(Vue 官方 Style Guide):

  1. v-if / v-for / v-show
  2. ref / key / slot
  3. class / style
  4. v-model
  5. 事件 @click
  6. 其他自定义属性

四、脚本规范(script)

Composition API(Vue 3)推荐使用

<script setup>
import { ref } from 'vue'const count = ref(0)
</script>

Options API(Vue 2 / Vue 3兼容)

export default {data() {return {count: 0}},methods: {increment() {this.count++}}
}

方法命名

  • 方法应使用动词开头,表意明确:
    • fetchUserInfo
    • handleClick
    • data1

五、样式规范(style)

使用 scoped 避免样式污染

<style scoped>
.button {color: red;
}
</style>

命名规范

  • 使用 BEM 命名规范:
    .card {}
    .card__title {}
    .card--active {}
    

六、代码风格规范

Vue 官方推荐使用 ESLint + Prettier 来规范代码风格,常见配置有:

  • eslint-plugin-vue
  • @vue/eslint-config-prettier

示例 .eslintrc.js:

module.exports = {extends: ['plugin:vue/vue3-essential','eslint:recommended','@vue/prettier']
}

七、其他推荐规范

单文件组件长度

  • 一个 .vue 文件控制在合理行数(如 200 行以内)。
  • 逻辑复杂的可以拆分为多个组件或组合函数(composables)。

路由命名规范

  • 路由 name 建议与页面组件名一致,便于跳转维护。

使用 definePropsdefineEmits(Vue 3)

<script setup>
const props = defineProps(['title'])
const emit = defineEmits(['submit'])
</script>

相关文章:

  • NEUOJ网格路径
  • 变量在template里不好使,在setup好使?
  • 从并发问题衍生出的Spring的七种事务传播行为
  • 问题:raw.githubusercontent无法访问
  • 《解锁快速记忆法:开启高效学习的大门》
  • 消息中间件RabbitMQ02:账号的注册、点对点推送信息
  • 4.23学习总结
  • 如何设计一个实时数据同步方案
  • 抱佛脚之学SSM六
  • 集成电路过流保护:基于 hiccup 模式的设计与解析
  • MVCWebAPI使用FromBody接受对象的方法
  • Windows上使用Python 3.10结合Appium-实现APP自动化
  • Apache Flink 深度解析:流处理引擎的核心原理与生产实践指南
  • 2025.04.23华为机考第一题-100分
  • 数据库1个
  • Vue3速通笔记
  • QT软件安装(12)
  • VBA批量读取access数据库(.mdb)
  • 淘宝平台关键字搜索接口接入指南(含代码示例及商品标题解析)
  • 机器学习分类算法详解:原理、应用场景与测试用例
  • 印度军方否认S-400防空系统被摧毁
  • 巴基斯坦称对印度发起军事行动
  • 中国证监会印发2025年度立法工作计划
  • 一周文化讲座|城市移民与数字时代的新工作
  • 两部门发布山洪灾害气象预警:北京西部、河北西部等局地山洪可能性较大
  • 中消协点名新能源汽车行业:定金退款争议频发