序言

为了统一前端的技术栈问题,技术开发二部规定开发技术必须以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. QQ管理

    ##用例1:查询数据 #01.查询QQ号码为54789625的所有好友信息,包括QQ号码,昵称,年龄 # # SELECT `relation`.RelationQQID AS QQ号码,`basei ...

  2. java基础笔记(10)

    Html:载体      CSS:样式   JavaScript:特效 html: 1. <html></html>称为根标签,所有的网页标签都在<html>< ...

  3. JS封装插件:实现文件读写功能

    scripting.FileSystemObject是一个可以实现文件读写的COM组件,由于COM组件可以被跨语言调用,因此可以选择像vbs或者JS这种脚本语言调用,下面我就使用该COM组件封装了一个 ...

  4. [LeetCode] 95. 不同的二叉搜索树 II

    题目链接 : https://leetcode-cn.com/problems/unique-binary-search-trees-ii/ 题目描述: 给定一个整数 n,生成所有由 1 ... n ...

  5. Restful风格API中用put还是post做新增操作有什么区别?

    Restful风格API中用put还是post做新增操作有什么区别? 转 头条面试归来,有些话想和Java开发者说!>>> 这个是华为面试官问我的问题,回来我找了很多资料,想验证这个 ...

  6. 为ASP.NET按钮(Button)添加确认对话框

    http://www.cnblogs.com/blodfox777/articles/1261303.html Button有两个点击事件: onclick 触发服务端事件,脚本为c#或VB.NET ...

  7. 如何将DataTable转换成List<T>

    using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.D ...

  8. PHP获取当前服务器详细信息

    最近正在用PHP写一个企业级的CMS,后台需要用到PHP获取当前服务器的详细信息以及相关系统参数信息,整理了整理,现在贴这儿,以备后用. 获取系统类型及版本号:    php_uname() (例:W ...

  9. 时间戳转换日期格式 - Vue

    日常开发中经常会遇到时间相关的问题,服务端返回的数据都是以时间戳的方式,那么需要将其处理转化为对应的时间格式,具体方式如下: 一.filters 中 formatDate 方法实现 <scrip ...

  10. linux Apache 日志配置

    [root@Nagios-Server extra]# vimhttpd-vhosts.conf <VirtualHost *:80> ServerAdmin 111111 ServerN ...