VUEJS开发规范

  1. 基于组件化开发理解
  2. 组件命名规范
  3. 结构化规范
  4. 注释规范
  5. 编码规范

基于组件化开发理解

  • 什么是组件?


    组件其实就是页面组成的一部分,好比是电脑中的每一个元件(如硬盘、键盘、鼠标),它是一个具有独立的逻辑和功能或界面,同时又能根据规定的接口规则进行相互融化,变成一个完整的应用。
    页面只不过是这样组件的容器,组件自由组合形成功能完整的界面,当不需要某个组件,或者想要替换某个组件时,可以随时进行替换和删除,而不影响整个应用的运行。前端组件化的核心思想就是将一个巨大复杂的东西拆分成粒度合理的小东西。
  • 组件化开发的好处


    提高开发效率
    方便重复使用
    简化调试步骤
    提升整个项目的可维护性
    便于协同开发
    使其高内聚,低耦合,达到分治与复用的目的。
  • 组件化和模块化的区别


    组件化是从产品功能角度进行分割,模块化是从代码实现角度进行分割,模块化是组件化的前提和基础。
  • Vue组件化开发


    单文件系统,样式局部作用域
    基本组成结构:<template/> <script/> <style scoped/>
    组件注册方式:1)公共组件全局注册 2)其余组件局部注册

组件命名规范

Vue官方文档给予以下说明:


当注册组件 (或者 prop) 时,可以使用 kebab-case (短横线分隔命名)、camelCase (驼峰式命名) 或 PascalCase (单词首字母大写命名)。
PascalCase 是最通用的声明约定而 kebab-case 是最通用的使用约定。

命名可遵循以下规则:


1、有意义的名词、简短、具有可读性
2、以小写开头,采用短横线分割命名
3、公共组件命名以公司名称简拼为命名空间(app-xx.vue)
4、文件夹命名主要以功能模块代表命名
同时还需要注意:必须符合自定义元素规范: 使用连字符分隔单词,切勿使用保留字。app- 前缀作为命名空间: 如果非常通用的话可使用一个单词来命名,这样可以方便于其它项目里复用。

结构化规范

  • 基于Vue-cli脚手架的结构基础划分

       ├── index.html                      入口页面
    ├── build 构建脚本目录
    │ ├── build-server.js 运行本地构建服务器,可以访问构后的页面
    │ ├── build.js 生产环境构建脚本
    │ ├── dev-client.js 开发服务器热重载脚本,主要用来实现开发阶段的页面自动刷新
    │ ├── dev-server.js 运行本地开发服务器
    │ ├── utils.js 构建相关工具方法
    │ ├── webpack.base.conf.js wabpack基础配置
    │ ├── webpack.dev.conf.js wabpack开发环境配置
    │ └── webpack.prod.conf.js wabpack生产环境配置
    ├── config 项目配置
    │ ├── dev.env.js 开发环境变量
    │ ├── index.js 项目配置文件
    │ ├── prod.env.js 生产环境变量
    │ └── test.env.js 测试环境变量
    ├── mock mock数据目录
    │ └── hello.js
    ├── package.json npm包配置文件,里面定义了项目的npm脚本,依赖包等信息
    ├── src 项目源码目录
    │ ├── main.js 入口js文件
    │ ├── App.vue 根组件
    │ ├── components 公共组件目录
    │ │ └── title.vue
    │ ├── assets 资源目录,这里的资源会被wabpack构建
    │ │ ├── css 公共样式文件目录
    │ │ ├── js 公共js文件目录
    │ │ └── img 图片存放目录
    │ ├── routes 前端路由
    │ │ └── index.js
    │ ├── store 应用级数据(state)
    │ │ └── index.js
    │ └── views 页面目录
    │ ├── hello.vue
    │ └── notfound.vue
    ├── static 纯静态资源,不会被wabpack构建。
    └── test 测试文件目录(unit&e2e)
    └── unit 单元测试
    ├── index.js 入口脚本
    ├── karma.conf.js karma配置文件
    └── specs 单测case目录
    └── Hello.spec.js
  • vue文件基本结构

<template>
<div>
<!--必须在div中编写页面-->
</div>
</template>
<script>
export default {
components : {
},
data () {
return {
}
},
methods: {
},
mounted() { }
}
</script>
<!--声明语言,并且添加scoped-->
<style lang="less" scoped>
</style>
  • vue文件方法声明顺序


    - components
    - props
    - data
    - created
    - mounted
    - activited
    - update
    - beforeRouteUpdate
    - metods
    - filter
    - computed
    - watch

注释规范

代码注释在一个项目的后期维护中显的尤为重要,所以我们要为每一个被复用的组件编写组件使用说明,为组件中每一个方法编写方法说明。
以下情况,务必添加注释


1.公共组件使用说明
2.各组件中重要函数或者类说明
3.复杂的业务逻辑处理说明
4.特殊情况的代码处理说明,对于代码中特殊用途的变量、存在临界值、函数中使用的hack、使用了某种算法或思路等需要进行注释描述
5.注释块必须以/**(至少两个星号)开头**/;
6.单行注释使用//;
  • 单行注释


    普通方法一般使用单行注释// 来说明该方法主要作用
  • 多行注释


    组件使用说明,和调用说明
    <!--公用组件:数据表格
    /**
    * 组件名称
    * @module 组件存放位置
    * @desc 组件描述
    * @author 组件作者
    * @date 2017年12月05日17:22:43
    * @param {Object} [title] - 参数说明
    * @param {String} [columns] - 参数说明
    * @example 调用示例
    * <hbTable :title="title" :columns="columns" :tableData="tableData"></hbTable>
    */
    -->

编码规范

优秀的项目源码,即使是多人开发,看代码也如出一人之手。统一的编码规范,可使代码更易于阅读,易于理解,易于维护。尽量按照ESLint格式要求编写代码


1.使用ES6风格编码源码
定义变量使用let ,定义常量使用const
使用export ,import 模块化
2.组件 props 原子化
提供默认值
使用 type 属性校验类型
使用 props 之前先检查该 prop 是否存在
3.避免 this.$parent
4.谨慎使用 this.$refs
5.无需将 this 赋值给 component 变量
6.调试信息console.log() debugger 使用完及时删除

原文地址:https://segmentfault.com/a/1190000012610056

VUEJS开发规范的更多相关文章

  1. vue 开发规范

    本文档为前端 vue 开发规范 规范目的 命名规范 结构化规范 注释规范 编码规范 CSS 规范 规范目的 为提高团队协作效率 便于后台人员添加功能及前端后期优化维护 输出高质量的文档 命名规范 为了 ...

  2. 我的公司培训讲义(1):.NET开发规范教程

    这是1年多以前我在公司所做讲座的讲义,现在与园友们分享,欢迎拿去使用.一起讨论.文中有若干思考题,对园友们是小菜一碟.另有设计模式讲义一篇,随后发布.博文上了首页,感谢博客园团队推荐,也感谢所有园友的 ...

  3. 转载:移动web开发规范

    本文来源:http://blog.csdn.net/joueu/article/details/44329825 以下是规范建议,均是日常在开发当中的的一些经验,仅供参考. 移动web开发规范 一.头 ...

  4. php与数据库代码开发规范

    php与数据库代码开发规范 1/25/2016 6:00:31 PM php对各类变量命名规范 目录名 文件命名 局部变量命名 使用英文动词名词,用下划线作为单词的分割,所有字母均使用小写 目录 up ...

  5. 【敏捷开发】Android团队开发规范

    这里说的开发规范分成目录规范,项目和包名的命名规范,类,方法,变量和常量的命名规范这几种. 目录规范 目录规范——在开发中整体文件夹组织结构. Requirement——需求文档文件夹 Design— ...

  6. 从零开始编写自己的C#框架(3)——开发规范

    由于是业余时间编写,而且为了保证质量,对写出来的东西也会反复斟酌,所以每周只能更新两章左右,请大家谅解,也请大家耐心等待,谢谢大家的支持. 初学者应该怎样学习本系列内容呢?根据我自己的学习经验,一般直 ...

  7. 从零开始编写自己的C#框架(3)——开发规范(转)

    由于是业余时间编写,而且为了保证质量,对写出来的东西也会反复斟酌,所以每周只能更新两章左右,请大家谅解,也请大家耐心等待,谢谢大家的支持. 初学者应该怎样学习本系列内容呢?根据我自己的学习经验,一般直 ...

  8. Web前端开发规范文档(google规范)

    (Xee:其实没什么规范约束,但是养成一种好习惯,何乐而不为?) 区分大小写 xhtml  区分大小写,xhtml要求 标签名 属性名 值都要小写,并且要有双引号和 标签闭合. css 元素名称以及i ...

  9. 从" ThinkPHP 开发规范 "看 PHP 的命名规范和开发建议

    稍稍水一篇博客,摘抄自Think PHP 的开发规范,很有引导性,我们可以将这些规范实践到原生 PHP 中. 命名规范 使用ThinkPHP开发的过程中应该尽量遵循下列命名规范: 类文件都是以.cla ...

随机推荐

  1. Extjs toolbar 如何添加竖杆分隔符

    如下: { xtype:'button', text:'学生档案', iconCls:'file', handler:function(){ console.log(222) }, }, {xtype ...

  2. Eigen下载安装

    首先提供Eigen的两个重要网站 官方网站 下载地址 1.下载 wget http://bitbucket.org/eigen/eigen/get/3.3.5.tar.gz 2.解压缩 tar -zx ...

  3. Vue系列(二):发送Ajax、JSONP请求、Vue生命周期及实例属性和方法、自定义指令与过渡

    上一篇:Vue系列(一):简介.起步.常用指令.事件和属性.模板.过滤器 一. 发送AJAX请求 1. 简介 vue本身不支持发送AJAX请求,需要使用vue-resource.axios等插件实现 ...

  4. uboot的readme导读

    UBOOT的移植其实并没有想象中的难,这主要归功于众多的工程师已经将常见的平台代码写入了UBOOT,我们所要做的就是一点小小的更改,在网上看了很多相关的移植,也听到有人说其实看了UBOOT的readm ...

  5. 如何在 Linux 上安装 Nginx (源码安装)

    如何在 Linux( CentOS ) 上安装 Nginx 1.下载 nginx 链接 : https://pan.baidu.com/s/1sll0Hrf 密码 : xnem 2.安装 gcc ( ...

  6. java中的接口中的方法

    题目如下:(多选题)请选择以下接口定义正确的方法() A:public static void main (String[] args); B:private void test(); C:publi ...

  7. IE6浏览器不支持固定定位(position:fixed)解决方案(转)

    IE6浏览器不支持固定定位(position:fixed)解决方案   来源:互联网 作者:佚名 时间:12-04 10:54:05 [大 中 小] 点评:有些朋友在进行网页布局时,会遇到IE6浏览器 ...

  8. 深入理解Dalvik虚拟机- 解释器的执行机制

    Dalvik的指令运行是解释器+JIT的方式,解释器就是虚拟机来对Javac编译出来的字节码,做译码.运行,而不是转化成CPU的指令集.由CPU来做译码,运行.可想而知.解释器的效率是相对较低的,所以 ...

  9. MongoDB创建\更新\删除文档操作

     一.插入\创建文档 --当插入一个不存在的文档时,会自己主动创建一个文档 [root@racdb ~]# mongo MongoDB shell version: 2.4.14 connecti ...

  10. 从零開始学android<TabHost标签组件.二十九.>

    TabHost主要特点是能够在一个窗体中显示多组标签栏的内容,在Android系统之中每一个标签栏就称为一个Tab.而包括这多个标签栏的容器就将其称为TabHost.TabHost类的继承结构例如以下 ...