vue开发规范

目的

统一开发风格,使代码结构更加清晰明了。

前提条件

项目是用vue搭建的,前端vue打开项目是需要一个环境运行的。

软件环境

  1. 脚手架: vue-cli 2.0
  2. PC端Vue项目UI框架:ElementUI
  3. 移动端Vue项目UI框架: 未定
  4. css 预处理: sass/scss
  5. 网络请求: axios
  6. 公共组件库: ******
  7. 图表:echarts
  8. 规范语言:es6

开发规范

一、目录结构

├── node_modules  // 项目依赖包文件夹
├── build   // 编译配置文件,一般不用管
│   ├── build.js
│   ├── check-versions.js
│   ├── dev-client.js
│   ├── dev-server.js
│   ├── utils.js
│   ├── vue-loader.conf.js
│   ├── webpack.base.conf.js
│   ├── webpack.dev.conf.js
│   └── webpack.prod.conf.js
├── config  // 项目基本设置文件夹
│   ├── dev.env.js  // 开发配置文件
│   ├── index.js  // 配置主文件
│   └── prod.env.js  // 编译配置文件
├── index.html   // 项目入口文件
├── package-lock.json  // npm5 新增文件,优化性能
├── package.json  // 项目依赖包配置文件
├── src    // 我们的项目的源码编写文件
│   ├── App.vue  // APP入口文件
│   ├── assets  // 初始项目资源目录,回头删掉
│   │   └── style // 全局样式
│   │       └── index.scss
│   │   └── utils  //公用事件
│   │       └── index.js
│   ├── components // 组件目录
│   │   └──Hello 
│   │       └──Hello.vue // 公用组件
│   ├── views
│   │   ├─ home
│   │   │    ├── components
│   │   │    │   ├── Sidebar
│   │   │    │   │   ├─ index.vue
│   │   │    │   │   ├─ Item.vue
│   │   │    │   │   └─ SidebarItem.vue
│   │   │    │   ├─ AppMain.vue
│   │   │    │   ├─ index.js
│   │   │    │   └─ Navbar.vue
│   │   │    └─ index.vue
│   │   └─ pages
│   ├── main.js // 主配置文件
│   └── serve // 路由配置文件夹
│       └── Home.api.js   // 路由配置文件
│   └── units // 路由配置文件夹
│       └── index.js   // 路由配置文件
│   └── router // 路由配置文件夹
│       └── index.js   // 路由配置文件
└── static // 资源放置目录

二、文件名要求 (摘录云栖社区)

  • index.js 或者 index.vue,统一使用小写字母开头的(kebab-case)命名规范
  • 属于组件或类的,统一使用大写字母开头的(PascalCase)命名规范
  • 其他非组件或类的,统一使用小写字母开头的(kebab-case)命名规范
Why

文件夹命名: camelCase VS kebab-case

展开node_modules 中的项目依赖,会发现,几乎所有的项目文件夹命名都是kebab-case命名的,使用kebab-case命名的文件夹比camelCase命名的文件夹看起来更清晰

组件命名:kebab-case VS PascalCase

vue的官方的风格指南中关于组件文件名的推荐:单文件组件文件的大小写强烈推荐
单文件组件的文件名应该要么始终是单词大写开头 (PascalCase),要么始终是横线连接 (kebab-case)。单词大写开头对于代码编辑器的自动补全最为友好,因为这使得我们在 JS(X) 和模板中引用组件的方式尽可能的一致。然而,混用文件命名方式有的时候会导致大小写不敏感的文件系统的问题,这也是横线连接命名同样完全可取的原因。

属于components文件夹下的子文件夹,使用大写字母开头的PascalBase风格;

./components文件夹下每个components文件夹下最多只有一层文件夹,且文件夹名称为组件的名称,文件夹下必须有index.vue或index.js,

全局通用的组件放在 /src/components下示例

 components // 组件目录
   ├─ Breadcrumb 
   │   └──index.vue
   └─ SvgIcon 
       └──index.vue

业务页面内部封装的组件,放在各自页面下的示例

  - views
    ├─ home
       └─ components
           ├─Sidebar
           │  └─ index.vue
           ├─Item.vue
           ├─SidebarItem.vue
           ├─ AppMain.vue
           ├─ index.js
           └─ Navbar.vue`

其他业务页面中的组件,放在各自页面下的 ./components文件夹下
每个components文件夹下最多只有一层文件夹,且文件夹名称为组件的名称,文件夹下必须有index.vue或
index.js,其他.vue文件统一大写开头(Pascal case),components下的子文件夹名称统一大写开头(PascalCase)
其他文件夹统一使用kebab-case的风格
全局公共组件:/src/components示例

三、文件命名规范

  • *.js文件命名规范
  1. 属于类的.js文件,除index.js外,使用PascalBase风格
  2. 其他类型的.js文件,使用kebab-case风格
  3. 属于Api的,统一加上Api后缀
  • *.vue文件命名规范
  1. 除index.vue之外,其他.vue文件统一用PascalBase风格
  • *.scss文件命名规范
  1. 统一使用kebab-case命名风格

四、 JS内容要求

  1. 需要用请求和公共方法的文件,要用import引入:

import store from '@/vuex/store'

import {_SendData,_SendDataRes} from '@/service/service.js';

  1. 子组件引入方式:
  • 公共组件经常使用如: header,footer等会一起打包到公共js文件。
import {xyHeader,xySide} from '@/components';

components: {
  xyHeader,
  xySide
}
  • 单独组件,不是经常使用的,会单独打包出来,需要引入自己加载出来。
 'xyDrowDown': () => import('component/drowDown.vue')    
  1. 暴露出去的部分,要按顺序:
<script>
import WorkFlowMap from '../components/WorkFlowMap' // 流程图

export default {
  name: 'Index',
  components: {
    WorkFlowMap
  },
  data () {
    return {
      text: ''
    }
  },
  mounted () {
    // 默认意见按钮是否显示
    this.loadList()
  },
  methods: {
    loadList () {
    }
  }
  watch: {                                                // 监听
    gongWenInfoId (newId) {
      this.loadList(newId)
    }
  }
}
</script>

五、 语法规范

语法规范请遵循vue风格指南 至少B级,推荐C

六、 Css要求

  1. css用sass写,.vue以局部css来写~~

<style lang="scss" scoped>
.custom-view {
  width: 100%;
  background: #f8f8f8;
  & div {
    width: 800px;
    margin: 30px auto 0 auto;
    background: #fff;
  }
  &:first-child {
    &:after {
      content: "";
      background: #fff;
      margin: 0 auto 30px auto;
    }
  }
}
</style>

只作用于当前vue文件。

PS: 个人整理的有不合适的地方请务必留言指出,谢谢

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

推荐阅读更多精彩内容

  • 前端通用规范文档,猛戳这里 一.react一般规范 1.基本结构(使用mobx) ├── build ...
    lemonzoey阅读 3,328评论 2 4
  • 前言 好的命名规范可以让不用为取名字而苦恼,同时找bug时更快的定位到位置。 与它的功能相配套 不与其他业务组件命...
    呼呼X南风阅读 723评论 0 6
  • Vue 开发规范目录及说明 规范目的 命名规范 结构化规范注 释规范 编码规范 CSS 规范 规范目的 为提高团队...
    凌枝阅读 5,261评论 1 49
  • 文件或文件夹的命名遵循以下原则:index.js 或者 index.vue,统一使用小写字母开头的(kebab-c...
    WHU_凌晨_Bin阅读 35,407评论 2 17
  • 为了前端代码形成统一的风格,制定该代码规范(该规范部分参照VUE官网介绍的风格指南以及常用的规范) 1.文件夹命名...
    朋_朋阅读 579评论 0 1