序言

为了统一前端的技术栈问题,技术开发二部规定开发技术必须以Vue为主。

为了更好的规范公司的前端框架,现以我前端架构师为主,编写以下开发规范,如有不当的地方,欢迎批评教育并慢慢改善该开发文档,谢谢合作。

我们在做产品不只是实现功能,还要考虑到以后的优化升级,那么就需要一套标准的代码规范,使得代码易懂,养成代码规范的习惯,有助于程序员自身的成长。那么我们现在就来谈谈,前端代码的规范。

一、编码规范

1、样式文件命名说明

注:【css处理程序统一使用stylus,并放在“src/common/stylus”目录下】

(1)重置样式:reset.stylus

(2)基础布局样式:base.stylus

(3)公共样式:public.stylus

(4)变量样式:variable.stylus

(5)icon样式:icon.stylus

(6)混合类型(函数样式):mixin.stylus

2、样式规范化

(1)连字符CSS选择器命名规范

长名称或词组可以使用“中横线”来为选择器命名。 不建议使用“_”下划线来命名CSS选择器,例:class=”page page-index”。

(2)使用16进制表示颜色值,除非表示的是透明度,例:#F62AB5

(3)以下常用的css命名规则;

page-hd、page-bd、page-ft、tit、cnt、desc、info、left-bar、search-bar

 

3、文件目录

(1)存放其它图片文件夹命名规范:imgaes

(2)存放广告图的文件夹banner

(3)文件名应该全部小写,多个单词以下划线“_”分开

(4)JS文件:驼峰命名方式,首字母小写,例:getUserInfo.js

(5)确保文档或模板中只包含html,把用到的样式都写到样式表文件中,把脚本都写到js文件中,采用外链引入形式,使页面的结构与行为分离。

4、 Javascript

(1)因vue脚手架有自动编译的功能,为了代码的整洁,每行js代码不必带“;”作为结束,但需遵循一个语句一行的编码方式;

5、命名规范

(1)文件命名:以英文命名,后缀为.js,例:(共用)common.js,其他命名可根据模块需求命名;

(2)变量命名:驼峰式命名,原生JavaScript变量要求是纯英文字母, 首字母须小写,变量集中声明, 避免全局变量
(3)类命名:首字母大写, 驼峰式命名。eg:StudentInfo、UserInfo、ProductInfo;

(4)函数命名:首字母小写驼峰式命名。eg:getUserInfo;

(5)命名语义化,尽可能利用英文单词或其缩写。

(6)常量:必须采用全大写的命名,且单词以_分割,常量通常用于ajax请求url,和一些不会改变的数据;

命名规范:使用大写字母和下划线来组合命名,下划线用以分割单词。

例:const MAX_LENGTH = 20;const URL = 'http://www.star.com'

(7)变量:必须采用小驼峰式命名法,例:let maxCount = 10;

6项目命名

全部采用小写方式, 以下划线分隔。例:my_project_name

7、函数

命名方法:小驼峰式命名法;

命名规范:前缀应当为动词;

命名建议:可使用常见动词约定。

动词

含义

返回值

can

判断是否可执行某个动作(权限)

函数返回一个布尔值。true:可执行;false:不可执行

has

判断是否含有某个值

函数返回一个布尔值。true:含有此值;false:不含有此值

is

判断是否为某个值

函数返回一个布尔值。true:为某个值;false:不为某个值

get

获取某个值

函数返回一个非布尔值

set

设置某个值

无返回值、返回是否设置成功或者返回链式对象

load

加载某些数据

无返回值或者返回是否加载完成的结果

8、类 & 构造函数

命名方法:大驼峰式命名法,首字母大写;例:Person

命名规范:前缀为名称。

示例:

class Person {

public name: string;

constructor(name) {

this.name = name;

}

}

const person = new Person('mevyn');

9、类的成员

类的成员包含:

公共属性和方法:跟变量和函数的命名一样。

私有属性和方法:前缀为_(下划线),后面跟公共属性和方法一样的命名方式。

示例:

class Person {

private _name: string;

constructor() { }

// 公共方法

getName() {

return this._name;

}

// 公共方法

setName(name) {

this._name = name;

}

}

const person = new Person();

person.setName('star');

person.getName(); // ->'star'

10、注释规范

js 支持三种不同类型的注释:行内注释、单行注释和多行注释:

  1. 行内注释
  • 说明:行内注释以两个斜线开始,以行尾结束。
  • 语法:code // 这是行内注释
  • 使用方式://(双斜线)与代码之间保留一个空格,并且//(双斜线)与注释文字之间保留一个空格。

命名建议:

// 用来显示一个解释的评论
// -> 用来显示表达式的结果,
// >用来显示 console 的输出结果,

示例:

function test() { // 测试函数

console.log('Hello World!'); // >Hello World!

return 3 + 2; // ->5

}

  1. 单行注释
  • 说明:单行注释以两个斜线开始,以行尾结束。
  • 语法:// 这是单行注释
  • 使用方式:单独一行://(双斜线)与注释文字之间保留一个空格。

示例:

// 调用了一个函数;1)单独在一行setTitle();

  1. 多行注释
  • 说明:以 /* 开头, */ 结尾
  • 语法:/* 注释说明 */
  • 使用方法:若开始/和结束/都在一行,推荐采用单行注释。若至少三行注释时,第一行为/,最后行为/,其他行以开始,并且注释文字与保留一个空格。

示例:

/** 代码执行到这里后会调用setTitle()函数* setTitle():设置title的值

*/

setTitle();

  1. 函数(方法)注释

说明:函数(方法)注释也是多行注释的一种,但是包含了特殊的注释要求,参照JSDoc

语法:

/** * 函数说明 * @关键字

*/

常用注释关键字:(只列出一部分,并不是全部)

注释名

语法

含义

示例

@param

@param 参数名 {参数类型} 描述信息

描述参数的信息

@param name {String} 传入名称

@return

@return {返回类型} 描述信息

描述返回值的信息

@return {Boolean} true:可执行;false:不可执行

@author

@author 作者信息 [附属信息:如邮箱、日期]

描述此函数作者的信息

@author 张三 2015/07/21

@version

@version XX.XX.XX

描述此函数的版本号

@version 1.0.3

@example

@example 示例代码

演示函数的使用

@example setTitle(‘测试’)

/*** 合并Grid的行

* @param grid {Ext.Grid.Panel} 需要合并的Grid

* @param cols {Array} 需要合并列的Index(序号)数组;从0开始计数,序号也包含。

* @param isAllSome {Boolean} :是否2个tr的cols必须完成一样才能进行合并。true:完成一样;false(默认):不完全一样

* @return void

* @author polk6 2015/07/21

* @example

* _________________                             _________________

* |  年龄 |  姓名 |                             |  年龄 |  姓名 |

* -----------------      mergeCells(grid,[0])   -----------------

* |  18   |  张三 |              =>             |       |  张三 |

* -----------------                             -  18   ---------

* |  18   |  王五 |                             |       |  王五 |

* -----------------                             -----------------

*/

function mergeCells(grid: Ext.Grid.Panel, cols: Number[], isAllSome: boolean = false) {

// Do Something

}

11、手机设计稿规范

设计稿的宽度一般情况下为宽度750px,在手机端页面编写的过程,将页面的最大宽度设置为750px,最小宽度为375xp,宽度为100%;即min-width:375px;max-width:750px;width100%;这样一来的话宽度在375到750之间是自适应的,当页面小于375时出现水平滚动条,当页面大于750时页面居中布局。

二、vue框架推荐

小程序:mpvue框架

H5游戏:vue

H5的UI框架:vux

推广类seo优化,如新闻,博客:nuxt.js

UI:element

APP:weex、Flutter

开发环境版本建议

技术

版本

查看命令

node

8.12.0

node-v

vue

2.5.17

vue -V(大写)

npm

6.4.1

npm -v

webpack

4.19.1

webpack -v

nuxt

2.00

/

Element-ui

2.47

/

《Vue前端开发手册》的更多相关文章

  1. 简单物联网:外网访问内网路由器下树莓派Flask服务器

    最近做一个小东西,大概过程就是想在教室,宿舍控制实验室的一些设备. 已经在树莓上搭了一个轻量的flask服务器,在实验室的路由器下,任何设备都是可以访问的:但是有一些限制条件,比如我想在宿舍控制我种花 ...

  2. 利用ssh反向代理以及autossh实现从外网连接内网服务器

    前言 最近遇到这样一个问题,我在实验室架设了一台服务器,给师弟或者小伙伴练习Linux用,然后平时在实验室这边直接连接是没有问题的,都是内网嘛.但是回到宿舍问题出来了,使用校园网的童鞋还是能连接上,使 ...

  3. 外网访问内网Docker容器

    外网访问内网Docker容器 本地安装了Docker容器,只能在局域网内访问,怎样从外网也能访问本地Docker容器? 本文将介绍具体的实现步骤. 1. 准备工作 1.1 安装并启动Docker容器 ...

  4. 外网访问内网SpringBoot

    外网访问内网SpringBoot 本地安装了SpringBoot,只能在局域网内访问,怎样从外网也能访问本地SpringBoot? 本文将介绍具体的实现步骤. 1. 准备工作 1.1 安装Java 1 ...

  5. 外网访问内网Elasticsearch WEB

    外网访问内网Elasticsearch WEB 本地安装了Elasticsearch,只能在局域网内访问其WEB,怎样从外网也能访问本地Elasticsearch? 本文将介绍具体的实现步骤. 1. ...

  6. 怎样从外网访问内网Rails

    外网访问内网Rails 本地安装了Rails,只能在局域网内访问,怎样从外网也能访问本地Rails? 本文将介绍具体的实现步骤. 1. 准备工作 1.1 安装并启动Rails 默认安装的Rails端口 ...

  7. 怎样从外网访问内网Memcached数据库

    外网访问内网Memcached数据库 本地安装了Memcached数据库,只能在局域网内访问,怎样从外网也能访问本地Memcached数据库? 本文将介绍具体的实现步骤. 1. 准备工作 1.1 安装 ...

  8. 怎样从外网访问内网CouchDB数据库

    外网访问内网CouchDB数据库 本地安装了CouchDB数据库,只能在局域网内访问,怎样从外网也能访问本地CouchDB数据库? 本文将介绍具体的实现步骤. 1. 准备工作 1.1 安装并启动Cou ...

  9. 怎样从外网访问内网DB2数据库

    外网访问内网DB2数据库 本地安装了DB2数据库,只能在局域网内访问,怎样从外网也能访问本地DB2数据库? 本文将介绍具体的实现步骤. 1. 准备工作 1.1 安装并启动DB2数据库 默认安装的DB2 ...

  10. 怎样从外网访问内网OpenLDAP数据库

    外网访问内网OpenLDAP数据库 本地安装了OpenLDAP数据库,只能在局域网内访问,怎样从外网也能访问本地OpenLDAP数据库? 本文将介绍具体的实现步骤. 1. 准备工作 1.1 安装并启动 ...

随机推荐

  1. Java数据结构之栈(Stack)

    1.栈(Stack)的介绍 栈是一个先入后出(FILO:First In Last Out)的有序列表. 栈(Stack)是限制线性表中元素的插入和删除只能在同一端进行的一种特殊线性表. 允许插入和删 ...

  2. [FJOI2007]轮状病毒 题解(dp(找规律)+高精度)

    [FJOI2007]轮状病毒 题解(dp(找规律)+高精度) 标签:题解 阅读体验:https://zybuluo.com/Junlier/note/1335733 没什么好说的,直接把规律找出来,有 ...

  3. Python作图包含type3字体解决方案

    1. 解决方案 matplotlib.rcParams[‘text.usetex’] = True

  4. 通过编写串口助手工具学习MFC过程——(三)Unicode字符集的宽字符和多字节字符转换

    通过编写串口助手工具学习MFC过程 因为以前也做过几次MFC的编程,每次都是项目完成时,MFC基本操作清楚了,但是过好长时间不再接触MFC的项目,再次做MFC的项目时,又要从头开始熟悉.这次通过做一个 ...

  5. install stackless python on ubuntu

    前言 我准备用stackless模拟游戏玩家登陆/注册等行为,测试游戏服务器的性能. 但是在安装stackless的过程中遇到了很多问题,特此记录下来,也分享给需要的朋友. 关于stackless S ...

  6. Cookie&Session笔记

    # 今日内容     1. 会话技术         1. Cookie         2. Session     2. JSP:入门学习 ## 会话技术     1. 会话:一次会话中包含多次请 ...

  7. 记录一次TabBar使用本地图片

    方法一: 第一步:import  addpng  from '../../assets/img/add.png' 第二步: { title: '找折扣', image: addpng}, 即可. 方法 ...

  8. 关于ES6的新特性

    1  let声明变量 01    let声明的变量,不可重复声明,比如 let   a=1  : let   a=2 :这样申明会报错 02    let声明的变量,有块级作用域,比如  if( ){ ...

  9. linux MySql 主从异步复制

    [root@localhost ~]# hostname master.allentuns ###SLAVE 执行 [root@localhost ~]# sed -i 's@\(HOSTNAME=\ ...

  10. i3wm 配置刷新生效 和 使用mod快捷打开 ranger 小贴士

    在某处学习到了如何配置i3wm后,对其极感兴趣. 学习到的经验总结: Linux中的各种命令操作其实都要首先查阅 man command  或者  command -h  或者  command -- ...