前端开发规范文档

一、命名规范
(一) 项目命名
全部采用小写的方式

以下划线分割

// 正确命名:
debug_system_front
 
// 错误命名:
debug-system-front
debugSystemFront
(二) 目录命名
全部采用小写的方式

以下划线命名

复数时,要采用复数结构

// 正确命名:
scripts / styles / utils / demo-scripts
(三) JS、CSS、SCSS、HTML、PNG等文件命名
全部采用小写的方式

以下划线命名

// 正确命名:
render_dom.js / signup.css / index.html / company_logo
(四) 组件命名首字母一定要大写,若无插槽传递子组件情况下建议单标签闭合
// 好例子
<MointorIcon
    :class="icon"
/>
 
// 反例
<mointorIcon
    :class="icon"
>
</mointorIcon>
(五) 命名严谨性
严禁使用 拼音和中文混合的方式

严禁使用中文、中文拼音

正确使用 英文拼写和语法

尽量使用英文单词,单词过长的时候可以使用简写

一些特殊的词语可以采用国际通用的名称

如:河南=henan / 人民币=rmb

// 正确命名:
movie(电影) / employee(员工)
 
// 错误命名:
dianyin(电影) condition --> condi (×)
二、HTML规范
 (一) 缩进
推荐一个tab 使用四个空格,嵌套的节点应该缩进

推荐理由:编写有序,有层次感代码,给人一种一看就有阅读的兴趣,编写有层层递进感,还容易分清父子层以及排错

(二) 分块注释
在每一个块级元素,列表元素 和 表格元素中,加上一对HTML注释,注释格式

 <!-- 英文 中文 start -->

 <!-- 英文 中文 end -->

<!-- header 头部 start -->
 

<header>
 
    <div>
 
        <a href=""></a>
 
    </div>
 
</header>


 
<!-- header 头部 end -->
(三) 语义化标签
HTML5 有很多语义化标签,优先使用这些语义化标签,避免每一个页面都是 div或者 p

(四) 引号
使用双引号" " 而不是单引号''

// 好例子

<div id="test"></div>


 
// 反例

<div id='test'></div>


(五) 每个标签元素包含三个以上的属性需要换行编写
清晰直观表明每个标签包含的属性以及属性的value,也更加便于后期的维护。

// 好例子

<el-input
    type="text"
    placeholder="请输入"
    v-model="search_value"
    size="samall"
/>


 
// 反例

<el-input type="text" placeholder="请输入" v-model="search_value" size="samall" />


三、CSS 规范
(一) 命名
类名使用小写字母,以下划线或中横线分割,但一个文件使用同一种命名规范

.swiper_image { ... }

id 使用 驼峰式命名

scss中的变量、函数、混合、placeholder采用驼峰命名

class 的命名不要使用 标签名

如:.p .div

(二) 选择器
尽量使用直接子选择器,否则,有时会造成性能损耗

// 不推荐:
 
.content .title { ... }
 
// 推荐:
 
.content > .title { ... }
(三) 尽量使用缩写的属性
展开式属性写法并不会帮助我们清空所有相关其他属性,从而干扰到我们想要达到的效果

// 不推荐:

 
border-style: solid;
 
border-width: 1px;
 
border-color: red;


 
// 推荐:
 
border: 1px solid red;
(四) 每个选择器及属性独占一行
独占一行主要不利于git生成有效的 diff,不能快速使用快捷键注释

// 不推荐:
 

img {
 
    width: 100%;box-shadow: 3px 3px 3px 3px rgba(0, 0, 0, .1);
 
}


 
// 推荐:
 

img {
 
    width: 100%;
 
    box-shadow: 3px 3px 3px 3px rgba(0, 0, 0, .1);
 
}

(五) 省略 0 后面的单位
省略会减小CSS文件,对带宽优化有帮助。但特殊设备或适配多设备可以预留单位方便把握值的数量级

border-width: 0;
(六) 避免使用 ID 选择器及全局标签污染全局样式
页面中的该元素无法重用,id选择器样式权重更大导致为了要重载一个优先级很高的规则,必须给它设置添加再高的优先级(如! important)造成样式权重越来越高的恶性循环。能不用id选择器就不要使用id选择器,避免不是禁止

(七) 尽量避免写内联样式
内联样式只能作用于单个标签,不可重复使用造成过多的冗余代码,并且内联样式每次请求页面都会重新渲染,过多内联样式降低加载速度

// 好例子

<input 
    style="width:100px; height:100px"
/>


 
// 反例

<div style="width:100px; height:100px" >
    <input 
        style="width:100px; height:100px"
    />
</div>


四、LESS 规范
(一) 避免嵌套等级过多
将嵌套深度限制在 4 级,否则后代选择器会增加样式权重,造成样式权重越来越高的恶性循环

// 不推荐:
 

.main {
    .title {
        .name {
            color: #fff;
        }
    }
}


// 推荐:

.main-title {
    .name {
        color: #fff;
    }
}


五、Javascript规范
(一) 命名
1) 采用小写驼峰命名 lowerCameCase或下划线命名,但一个文件使用同一种命名规范,vue中建议统一使用驼峰式,因为在dom做赋值时比较友好,有意义的变量声明便于后期的维护

2) 方法名、参数名、成员变量、局部变量统一采用驼峰命名风格

// 正确命名:
localValue / getHttpMessage()/ explain_close / explain_close()
 
// 错误命名:
localvalue / gethttpmessage()/ explainclose / explainclose()
3) 方法名 必须是 动词 或者 动词+名词 形式

增删查改,统一使用如下 5 个单词

add  /  update  /  delete  /  get  /  detail

// 函数常用方法的动词:
 
get 获取       / set 设置        / add 增加       / remove 删除
 
create 创建    / destory 移除        / start 启动     / stop 停止
 
open 打开      / close 关闭        / read 读取      / write写入
 
load 载入      / save 保存        / begin 开始     / end 结束
 
backup 备份    / restore 恢复        / import 导入    / export 导出
 
split 分割     / merge 合并        / inject 注入    / extract 提取
4) 常量全部大写,单词之间用下划线隔开,力求语义表达完整清楚,不要嫌名字长

例: const PIE = 3.141592653

5) 全局变量考虑用大写字母表示变量名

(二) 代码格式
使用四个空格进行缩进

不同逻辑,不同语义,不同业务之间插入一个空行分隔

表示区块起首的大括号,不要另起一行。

return {
    key : value
};
(三) 字符串
统一使用单引号'',不使用双引号"",这对创建HTML字符串非常有好处

let str = 'foo';
 
let testDiv = '<div id="test"></div>'


(四) 对象声明
使用字面量创建对象

// 推荐:
 

let user = [];


 
// 不推荐:

 
let user = new Object();


使用字面量来代替对象构建器

// 推荐:
 

let user = {
 
    age: 0
 
}


 
// 不推荐:
 

let user = new Object();
 
user.age = 0;


(五) 优先使用ES6、ES7、ES8的语法
简化程序,使代码更加灵活和可复用

let取代var,变量应该只在其声明的代码块内有效,var命令做不到这一点;var命令存在变量提升效用,let命令没有这个问题。let和const之间,建议优先使用const,const可以提醒阅读程序的人,这个变量不应该改变;另一个是const比较符合函数式编程思想,运算不改变值,只是新建值,而且这样也有利于将来的分布式运算;最后一个原因是 JavaScript 编译器会对const进行优化
使用数组成员对变量赋值时,优先使用解构赋值
使用扩展运算符(...)拷贝数组,可以替换concat方法,合并数组,与解构赋值结合生成数组
箭头函数,因为这样更简洁,而且绑定了this
模块语法
(六) 括号
下列关键词必须有大括号(即使代码只有一行):if / else / for / while / try / catch / finally / with

// 推荐:
 

if (isTrue) {
 
    doSomeThing();
 
}


 
// 不推荐:
 

if (isTrue) doSomeThing();


(七) undefined判断
永远不要直接使用undefined进行变量判断;使用typeof 和字符串 'undefined'对变量进行判断
 

推荐:
 

if (typeof person === 'undefined') {
 
    ...
 
}


 
不推荐
 

if (person === undefined) {
 
    ...
 
}


空数组([])和空对象({})对应的布尔值,都是true。

(八) 条件判断和循环最多三层
条件判断能使用 三目运算符 和 逻辑运算符的,就不要使用条件判断。

如果超过三层的 ,抽成函数,并写清楚注释

if(type == 1){
    // to do ...
} else if (type == 2) {
    // to do ...
} else if (type == 3) {
    // to do ...
} else if (type == 4) {
    // to do ...
}


// 过多条件判断建议改用switch方法,switch比if性能更好并且比较时使用是全等操作符,不会发生类型转换的损耗

switch(a) {
    case 1: ;break;
    case 2: ;break;
    case 3: ;break;
    case 4: ;break;
    case 5: ;break;
    default : ;
}


// 最好还是使用表查询,也就是通过数组和对象来查询
// 通过 map 映射

function getColor(c) {
    return {
        'blue': 'blue的rgba值',
        'block': 'block的rgba值',
        'yellow': 'yellow的rgba值',
        'green': 'green的rgba值',
    }[c]
}

(九) this的转换命名
对上下文 this的引用只能使用 _this, that,self来命名

let self = this;

(十) 慎用 console.log
对 console.log会有性能问题,生产环境下请清除console.log

(十一) 结构清晰
异步执行时采用promise, async awaite 方式.尽量不出现函数多层嵌套;

单一性:一个函数做一件事,保证结构清晰

(十二)可复用性
具有相同功能且样式一样或者功能样相同样式上有稍微不同的模块进行组件封装,达到组件复用效果。避免冗余代码,便于维护。

(十三) 以下划线区分接口函数与普通函数
推荐理由:调用的接口函数与普通函数作区分,后期便于维护

// 好例子

_getTableData() {
   getTableData().then(res=>{
       
   } 
}


 
// 反例

_getData() {
   getTableData().then(res=>{
       
   } 
}


(十四) 变量声明key与value值之间增加一个空格
// 好例子

data(){
    return {
        obj: {
            key: value,
        }
    }
}


 
// 反例

data(){
    return{
        obj:{
            key:value,
        }
    }
}

(十五) 文件分类管理
通用组件请放在components文件夹下,并且非全局使用的组件请按需引入,不要在main.js里面进行全局引入。便于区别组件与页面的管理,合理进行组件的封装以及重用,优化页面加载效率

(十六) main.js文件建议将全局通用的组件、样式、方法在这里引用,非全局的一律按需引入
推荐理由:优化加载效率,做到按需加载资源

六、VUE规范(官方风格指南文档https://cn.vuejs.org/v2/style-guide/)
(一)组件名为多单词,首字母大写

组件名应该始终是多个单词,根组件App以及<transition>、<component>之类的Vue内置组件除外。这样做可以避免跟现有的以及未来的 HTML 元素相冲突,因为所有的 HTML 元素名称都是单个单词的。

// 反例
Vue.component('todo', {
    // ...
})
export default {
    name: 'Todo',
    // ...
}
// 好例子
Vue.component('todo-item', {
    // ...
})
export default {
    name: 'TodoItem',
    // ...
}

(二)组件的data必须是个函数

当在组件中使用data property的时候(除了new Vue外的任何地方),它的值必须是返回一个对象的函数。因为如果直接是一个对象的话,子组件之间的属性值会互相影响。

// 反例
Vue.component('some-comp', {
    data: {
        foo: 'bar'
    }
})
export default {
    data: {
        foo: 'bar'
    }
}
// 好例子
Vue.component('some-comp', {
    data: function () {
        return {
            foo: 'bar'
        }
    }
})
// In a .vue file
export default {
    data () {
        return {
            foo: 'bar'
        }
    }
}
// 在一个 Vue 的根实例上直接使用对象是可以的,
// 因为只存在一个这样的实例。
new Vue({
    data: {
        foo: 'bar'
    }
})

(三)prop的定义应该尽量详细,

至少需要指定其类型,这样容易看懂组件的用法,且在开发环境下,如果向一个组件提供格式不正确的 prop,Vue 将会告警,以帮助你捕获潜在的错误来源。

// 反例
// 这样做只有开发原型系统时可以接受
props: ['status']
// 好例子
props: {
    status: String
}
// 更好的做法!
props: {
    status: {
        type: String,
        required: true,
        validator: function (value) {
            return [
                'syncing',
                'synced',
                'version-conflict',
                'error'
            ].indexOf(value) !== -1
        }
    }
}

(四)总是使用key配合v-for

     默认情况下,vue会尽可能的复用已存在的DOM元素,从而提高渲染性能,但会导致有状态的列表无法正确更新

// 反例
<ul>
    <li v-for="todo in todos">
        {{ todo.text }}
    </li>
</ul>
// 好例子
<ul>
    <li
        v-for="todo in todos"
        :key="todo.id"
    >
        {{ todo.text }}
    </li>
</ul>


(五)避免v-if和v-for同时用在同一元素上

哪怕我们只渲染出一小部分的元素,也得在每次重渲染的时候遍历整个列表,不论元素是否发生了变化

// 反例
<ul>
    <li
        v-for="user in users"
        v-if="user.isActive"
        :key="user.id"
    >
        {{ user.name }}
    </li>
</ul>
<ul>
    <li
        v-for="user in users"
        v-if="shouldShowUsers"
        :key="user.id"
    >
        {{ user.name }}
    </li>
</ul>
// 好例子
<ul>
    <li
        v-for="user in activeUsers"
        :key="user.id"
    >
        {{ user.name }}
    </li>
</ul>
<ul v-if="shouldShowUsers">
    <li
        v-for="user in users"
        :key="user.id"
    >
        {{ user.name }}
    </li>
</ul>

(六)每个页面或者组件的顶层父级需要添加一个唯一的类名,并为组件样式设置作用域

设置一致的作用域会确保你的样式只会运用在它们想要作用的组件上,避免造成样式的全局污染以及便于后期的维护。

// 反例
<style>
.btn-close {
    background-color: red;
}
</style>
 
// 好例子
<template>
    <div class="menu-header">
    </div>
</template>
<!-- 使用 `scoped` attribute -->
<style scoped>
    .button {}
</style>
<!-- 使用 CSS Modules -->
<template>
    <button :class="[$style.button]">X</button>
</template>
<style module>
    .button {}
</style>
<!-- 使用 BEM 约定 -->
<template>
    <button class="c-Button">X</button>
</template>
<style>
    .c-Button {}
</style>


(七)script 标签内部结构顺序

components > props > data > computed > watch > filter > 钩子函数(钩子函数按其执行顺序) > methods
 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
### 回答1: 《阿里前端开发规范文档.pdf》是阿里巴巴公司针对前端开发制定的一份规范文档。该文档的目的是为了统一前端团队的开发风格和编码规范,提高代码的可读性、可维护性和可扩展性。 该规范文档主要包含了以下几个方面的内容: 1. HTML规范:阐述了HTML代码的书写规范,包括标签的使用、属性的命名、嵌套规则等。通过规范的HTML代码可以提高页面的可访问性和搜索引擎的友好性。 2. CSS规范规范了CSS代码的书写方式和命名规则,包括选择器的使用、样式的命名、布局的处理等。规范的CSS代码可以提高页面的渲染效率和样式的复用性。 3. JavaScript规范规范了JavaScript代码的书写方式和命名规则,包括变量的声明、函数的定义、条件语句的使用等。规范的JavaScript代码可以提高代码的执行效率和调试的便捷性。 4. 图片规范:介绍了图片在前端开发中的使用规范,包括图片格式的选择、图片大小的优化、图片的懒加载等。规范的图片处理可以提高页面的加载速度和用户的体验。 5. 组件规范规范前端开发中常用组件的开发方式和使用规则,包括轮播图、模态框、下拉菜单等。规范的组件开发可以提高开发效率和代码的复用性。 通过遵守该规范文档前端开发人员可以减少代码冗余、降低维护成本,并且方便团队协作和交流。同时,该规范文档也采用了阿里巴巴内部开发实践的经验,提供了一些最佳实践和技术指导,有助于提高项目的质量和成功的几率。 总之,《阿里前端开发规范文档.pdf》是一份非常有价值的前端开发参考文档,可以帮助前端开发人员更好地理解和遵守编码规范,提高项目的开发质量和团队的协作效率。 ### 回答2: 阿里前端开发规范文档.pdf 是阿里巴巴公司针对前端开发人员制定的一份规范文档,旨在统一前端开发团队的代码风格和开发规范,提升代码的可维护性和可读性。 该文档主要包括以下几个方面的内容: 1. HTML/CSS规范:包括HTML代码结构、命名规范、CSS类命名规范等。通过规范化的命名及代码结构,使得团队成员之间能够更加容易地协作和理解代码。 2. JavaScript规范:包括JavaScript代码书写规范、命名规范代码格式化规范等。规范代码书写风格可以提高代码的可读性,并且减少了一些常见的错误。 3. 图片/文件规范:包括图片优化规范、文件命名规范等。通过规范化的命名和优化,可以提升网站的加载速度,减少对网络带宽的占用。 4. 工程目录结构规范:包括前端项目的文件目录结构规范、模板文件的组织规范等。规范的目录结构可以使得项目更加易于维护和扩展。 5. Git提交规范:规定了Git提交的消息格式和命名规范,以及分支管理的规范。通过规范的提交消息和分支管理,可以方便团队成员协作开发。 该文档是阿里巴巴前端开发团队多年经验总结的产物,经过实践证明是一份行之有效的规范文档。阿里前端开发规范文档.pdf不仅提供了代码规范,更是一本指导开发的手册,可以帮助前端开发人员快速上手项目,减少摸索的时间。 总之,阿里前端开发规范文档.pdf 是一份对于前端开发团队非常有价值的规范文档,可以提高代码质量、项目可维护性和团队协作效率。 ### 回答3: 《阿里前端开发规范文档.pdf》是阿里巴巴公司的前端开发团队为了统一前端开发规范而编写的一份文档。 这份文档主要包括以下几个方面的内容: 1. 命名规范文档中会介绍如何命名变量、函数、文件等,以确保代码的可读性和一致性。通过采用统一的命名规范,可以提高团队合作效率,简化代码维护的复杂度。 2. HTML/CSS规范文档中会介绍HTML和CSS的书写规范,包括标签的使用、属性的命名、代码的缩进等等。这些规范可以使页面结构清晰,样式统一,提高网站的可维护性和可扩展性。 3. JavaScript规范文档中会介绍JavaScript的编码规范,包括变量的声明、函数的使用、错误处理等。这些规范可以提高代码的质量,减少BUG的产生,并且使代码易于理解和维护。 4. 组件规范文档中会介绍如何编写可复用的前端组件,包括组件的命名、结构的设计、样式的封装等。通过使用规范的组件,可以减少重复的代码量,提高开发效率。 5. 版本控制规范文档中会介绍如何使用版本控制工具,如Git,来管理前端项目的代码。通过使用版本控制规范,可以方便地进行代码的备份、协作和回滚,提高项目的开发效率和代码的可靠性。 总之,《阿里前端开发规范文档.pdf》是一份非常重要的文档,对于前端开发者来说,遵循这些规范能够提高代码的质量和可维护性,同时也能够加强团队之间的协作和沟通。因此,我们应该认真学习并应用这些规范,使自己的前端开发水平更上一层楼。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值