vue开发规范

Vue 开发规范目录及说明

  • 规范目的
  • 命名规范
  • 结构化规范注
  • 释规范
  • 编码规范
  • CSS 规范
规范目的

为提高团队协作效率
便于后台人员添加功能及前端后期优化维护
输出高质量的文档

命名规范

为了让大家书写可维护的代码,而不是一次性的代码
让团队当中其他人看你的代码能一目了然
甚至一段时间时候后你再看你某个时候写的代码也能看

普通变量命名规范
  • 命名方法 :驼峰命名法
  • 命名规范 :
  1. 命名必须是跟需求的内容相关的词,如
let  productPageDetail = "产品详情页面";
  1. 命名是复数的时候需要加s,如
const productList = new Array(); 
常量
  • 命名方法 : 全部大写
  • 命名规范 : 使用大写字母匈牙利式命名法。
const MAX_COUNT = 10
const URL = 'https://www.cupshe.com/'
组件命名规范(驼峰式命名)
  • 公用组件以cupshe_AR(公司+项目名)开头如:
cupsheAR-TopBar,
cupsheDE-TopBar
  • 页面内部组件以组件模块名简写为开头,Item 为结尾,如:
addToCartItem,
checkoutItem
method 方法命名命名规范
  • 匈牙利式命名,统一使用动词或者动词+名词形式
get_user_list,
submit_cart_product
  • 请求数据方法,以 data 结尾
get_product_list_data
get_user_data
views下的文件命名
  • 尽量是名词,且使用驼峰命名法
productDetailPage
props 命名
  • 在声明 prop 的时候,使用驼峰命名法,在模板中使用 kebab-case
<script>
props: {
    greetingText: String
}
</script>
<welcome-message greeting-text="hi"></welcome-message>
结构化规范
目录文件夹及子文件规范

以下统一管理处均对应相应模块
以下全局文件文件均以 index.js 导出,并在 main.js 中导入
以下临时文件,在使用后,接口已经有了,发版后清除

src                               源码目录
|-- api                              接口,统一管理
|-- assets                           静态资源,统一管理
|-- components                       公用组件,全局文件
|-- filters                          过滤器,全局工具
|-- icons                            图标,全局资源
|-- datas                            模拟数据,临时存放
|-- lib                              外部引用的插件存放及修改文件
|-- mock                             模拟接口,临时存放
|-- router                           路由,统一管理
|-- store                            vuex, 统一管理
|-- views                         视图目录
|   |-- staffWorkbench               视图模块名
|   |-- |-- staffWorkbench.vue       模块入口页面
|   |-- |-- indexComponents          模块页面级组件文件夹
|   |-- |-- components               模块通用组件文件夹
vue 文件基本结构
<template>
    <div>
      
    </div>
  </template>
  <script>
    export default {
      components : {
      
      },
      data () {
        return {
        
        }
      },
      mounted() {
      
      },
      methods: {
      
      }
   }
  </script>
  <!--声明语言,并且添加scoped-->
  <style lang="scss" scoped>
  
  </style>
组件选项顺序
- components
- props
- data
- computed
- created
- mounted
- metods
- filter
- watch
注释规范
务必添加注释列表
  1. 公共组件使用说明
  2. 各组件中重要函数或者类说明
  3. 复杂的业务逻辑处理说明
  4. 特殊情况的代码处理说明,对于代码中特殊用途的变量、存在临界值、函数中使用的 hack、使用
  5. 了某种算法或思路等需要进行注释描述
  6. 多重 if 判断语句
  7. 注释块必须以/(至少两个星号)开头/
  8. 单行注释使用//
编码规范
指令规范
:class="{'show-left':true}"
@click="getListData"
v-for 循环必须加上 key 属性,在整个 for 循环中 key 需要唯一
<ul>
    <li v-for="todo in todos" :key="todo.id">
        {{ todo.text }}
    </li>
</ul>
避免 v-if 和 v-for 同时用在一个元素上(性能问题)
  • 将数据替换为一个计算属性,让其返回过滤后的列表
<ul>
    <li v-for="user in activeUsers" :key="user.id">
      {{ user.name }}
    </li>
  </ul>
 
  <script>
  computed: {
    activeUsers: function () {
      return this.users.filter(function (user) {
        return user.isActive
      })
    }
  }
  </script>
  • 将 v-if 移动至容器元素上 (比如 ul, ol)
<ul v-if="shouldShowUsers">
    <li v-for="user in users" :key="user.id">
        {{ user.name }}
    </li>
</ul>
Props 规范
props: {
  status: {
    type: String,
    required: true,
    validator: function (value) {
      return [
        'syncing',
        'synced',
        'version-conflict',
        'error'
      ].indexOf(value) !== -1
    }
  }
}
其他

避免 this.$parent调试信息
console.log() debugger 使用完及时删除

除了三目运算,if,else 等禁止简写

CSS 规范

统一使用"-"连字符
省略值为 0 时的单位
如果 CSS 可以做到,就不要使用 JS
建议并适当缩写值,提高可读性,特殊情况除外

padding-bottom: 0;
margin: 0;
  • 分类的命名方法

使用单个字母加上"-"为前缀
布局(grid)(.g-);
模块(module)(.m-);
元件(unit)(.u-);
功能(function)(.f-);
皮肤(skin)(.s-);
状态(.z-)。

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 159,219评论 4 362
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 67,363评论 1 293
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 108,933评论 0 243
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 44,020评论 0 206
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,400评论 3 287
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,640评论 1 219
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,896评论 2 313
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,597评论 0 199
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,327评论 1 244
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,581评论 2 246
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 32,072评论 1 261
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,399评论 2 253
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 33,054评论 3 236
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,083评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,849评论 0 195
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,672评论 2 274
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,585评论 2 270

推荐阅读更多精彩内容

  • 前端通用规范文档,猛戳这里 一.react一般规范 1.基本结构(使用mobx) ├── build ...
    lemonzoey阅读 3,246评论 2 4
  • 由于所在公司前端代码较不规范,近期应公司领导要求,整理出了一份公司内部的前端开发规范标准。这里参考了一些文章,并对...
    追寻1989阅读 1,120评论 0 3
  • 为了前端代码形成统一的风格,制定该代码规范(该规范部分参照VUE官网介绍的风格指南以及常用的规范) 1.文件夹命名...
    朋_朋阅读 553评论 0 1
  • 前言 好的命名规范可以让不用为取名字而苦恼,同时找bug时更快的定位到位置。 与它的功能相配套 不与其他业务组件命...
    呼呼X南风阅读 681评论 0 6
  • 目的 统一开发风格,使代码结构更加清晰明了。 前提条件 项目是用vue搭建的,前端vue打开项目是需要一个环境运行...
    风凌摆渡人阅读 467评论 1 4