当前位置: 首页 > news >正文

前端开发规范总结

1、 前言
        前端开发中,不同的开发者有不同的代码编写习惯,但实际项目中有的公司是需要协同开发的,想要高效的协同,规定一个大家都能接受的规范就尤为重要。 坚持好的代码风格规范,从你我做起。
2、代码规范的好处    
(1)从根本上降低开发成本:
        提高代码整体的可读性、可维护性、可复用性。
(2)保证代码的一致性:
        软件系统中最重要的因素之一就是编码的一致性。如果编码风格一致,也更加易于维护,因       为团队内任何人都可以快速理解并修改。
(3)提升团队整体效率:
        开发人员通常需要花费大量的时间来解决代码质量问题,如果都按照规范编写,也有助于团        队尽早发现问题,这将提高整个交付过程的效率。
3、不规范代码的弊端
(1)增加团队成员间的协作负担,影响降低团队整体效率:
        由于缺乏规范,导致代码风格不一,极端情况下,某段代码只有某个人能修改。
(2)团队间协作更加困难:
        由于开发人员要适应不同的风格,会导致效率低下。 
4、命名规范
(1) 项目命名
        全部采用小写方式, 以“-”分隔。
        例: my-project
(2 )目录命名
        参照项目命名规则;有复数结构时,要采用复数命名法。
        例: pages , assets , directives , components , mixins , utils
(3)javaScript 文件命名
        通常都是驼峰式命名或者用以“-”分隔。
        例:  accountModel.js 、   account-model.js
        
(4)CSS,less,scss 文件命名
        参照项目命名规则。
        例: retina-sprites.less
(5)CSS,class,id 命名
        全部采用小写方式, 以“_”分隔,类名不能以数字开头,除了 - _ 不能带任何其他的符号,见名知意 。 
        例: retina-sprites.less
(5)HTML 文件命名
        参照项目命名规则。
        例: error-report.html
(6) 如果使用 Vue 或者 React 技术栈
        通常都是驼峰式命名或者用以“_ -”分隔。
        例: calendar_list.vue  、 calendarList.vue、calendar-list.vue 
5、引入 CSS, JS
        根据 HTML5 规范, 通常在引入 CSS 和 JS 时不需要指明 type,因为 text/css
        和 text/javascript 分别是他们的默认值。
6、 属性顺序
        属性应该按照特定的顺序出现以保证易读性;
        class
        id
        name
        data-*
        src, for, type, href, value , max-length, max, min, pattern
        placeholder, title, al
        aria-*, role
        required, readonly, disabled
         class 是为高可复用组件设计的,所以应处在第一位;
        id 具体且应该尽量少使用,所以将它放在第二位
7、 减少标签数量 实用高于完美
        在编写 HTML 代码时,需要尽量避免多余的父节点;
        很多时候,需要通过迭代和重构来使 HTML 变得更少
        尽量遵循 HTML 标准和语义,但是不应该以浪费实用性作为代价;
        任何时候都要用尽量小的复杂度和尽量少的标签来解决问题。
8、css
        (2)分号 缩进
                使用 soft tab(4 个空格)
                .element {
                     position: absolute;
                     top: 10px;
                     left: 10px;
                     border-radius: 10px;
                     width: 50px;
                     height: 50px;
                }
        (2)分号
                每个属性声明末尾都要加分号。
                .element {
                     width: 20px;
                     height: 20px;
                }
9、命名
        类名使用小写字母,以中划线、下划线分隔
        id 采用驼峰式命名
        less 中的变量、函数以中划线分隔命名
        /* class */
        .element-content {
                ...
        }
        /* id */
        #myDialog {
                ...
        }
        /* 变量 */
        @color-black: #000;
        /* mixins */
        .my-mixin() {
                color: black;
        }
10、属性声明顺序
        相关的属性声明按右边的顺序做分组处理,组之间需要有一个空行。
        .declaration-order {
                display: block;
                float: right;
                position: absolute;
                top: 0;
                right: 0;
                bottom: 0;
                left: 0;
                z-index: 100;
                border: 1px solid #e5e5e5;
                border-radius: 3px;
                width: 100px;
                height: 100px
;
                font: normal 13px "Helvetica Neue", sans-serif;
                line-height: 1.5;
                text-align: center;color: #333;
                background-color: #f5f5f5;
                opacity: 1;
        }
        
        
        书写顺序前后为:
                 (1)定位属性:position display float left top right bottom overflow clear z-index
                (2)自身属性:width height padding border margin background
                (3)文字样式:font-family font-size font-style font-weight font-varient color
                (4)文本属性 text-align vertical-align text-wrap text-transform text-indent
                                        text-letter-spacing word-spacing white-space text-overflow
        目的
                 减少浏览器 reflow(回流),提升浏览器渲染 dom 的性能
                原理:浏览器的渲染流程为:
                1、解析 html 构建 dom 树,解析 css 构建 css 树:将 html 解析成树形的数据结构将                 css 解析成树形的数据结构
                2、构建 render 树:DOM 树和 CSS 树合并之后形成的 render 树。
                3、布局 render 树:有了 render 树,浏览器已经知道那些网页中有哪些节点,
                各个节点的 css 定义和以及它们的从属关系,从而计算出每个节点在屏幕中的位置。
                4、绘制 render 树:按照计算出来的规则,通过显卡把内容画在屏幕上。
                css 样式解析到显示至浏览器屏幕上就发生在 234 步骤,可见浏览器并不是一获
                取到 css 样式就立马开始解析而是根据 css 样式的书写顺序将之按照 dom 树的结
                构分布 render 样式,完成第 2 步,然后开始遍历每个树结点的 css 样式进行解
                析,此时的 css 样式的遍历顺序完全是按照之前的书写顺序。在解析过程中,一
                旦浏览器发现某个元素的定位变化影响 DOM,则需要重新渲染。
11、Scss、Less 相关
        每个模块应该有一个单独的 less, 然后每个最外层的父类 className 应该
        写在第一位,所有子 Node 的样式都写在里面,这样是为了避免命名冲突。比如
        //out: false
        .parent-name{
                .child-name{
                        ...
                }
                ...
        }
        LESS 嵌套最多不能超过 5 层;
        不允许有空的规则;
        元素选择器用小写字母;
        去掉小数点前面的 0;
        去掉数字中不必要的小数点和末尾的 0;         
        属性值'0'后面不要加单位;
        同个属性不同前缀的写法需要在垂直方向保持对齐,具体参照右边的写法;
        无前缀的标准属性应该写在有前缀的属性后面;
        不要在同个规则里出现重复的属性,如果重复的属性是连续的则没关系;
        不要在一个文件里出现两个相同的规则;
        用 border: 0; 代替 border: none;
        CSS 选择器不要超过 3 层;
        尽量少用'*'选择器
12、变量命名
        标准变量采用驼峰式命名(除了对象的属性外,主要是考虑到 cgi 返回的数据)
        'ID'在变量名中全大写
        'Android'在变量名中大写第一个字母
        'iOS'在变量名中小写第一个,大写后两个字母
        常量全大写,用下划线连接
        构造函数,大写第一个字母
        jquery 对象必须以'$'开头命名
13、变量声明
        一个函数作用域中所有的变量声明尽量提到函数首部,用一个 var 声明,不
        允许出现两个连续的 var 声明。
14、单行注释
        双斜线后,必须跟一个空格;
        缩进与下一行代码保持一致;
        可位于一个代码行的末尾,与代码间隔一个空格。
        if (condition) {
                // if you made it here, then all security checks passedallowed();
        }
        var zhangsan = 'zhangsan'; // one space after code
15、多行注释
        最少三行, '*'后跟一个空格,具体参照右边的写法;
        建议在以下情况下使用:
        
        难于理解的代码段
        
        可能存在错误的代码段
        
        浏览器特殊的 HACK 代码
        
        业务逻辑强相关的代码
        /*
        * // 注释 ...
        */
        var x = 1;
16、数组、对象
        对象属性名不需要加引号;
        对象以缩进的形式书写,不要写在一行;
        数组、对象最后不要有逗号。

相关文章:

前端开发规范总结

1、 前言 前端开发中,不同的开发者有不同的代码编写习惯,但实际项目中有的公司是需要协同开发的,想要高效的协同,规定一个大家都能接受的规范就尤为重要。 坚持好的代码风格规范,从你我做起。 2、代码规范的好处 …...

前端react入门day01-了解react和JSX基础

(创作不易,感谢有你,你的支持,就是我前行的最大动力,如果看完对你有帮助,请留下您的足迹) 目录 React介绍 React是什么 React的优势 React的市场情况 开发环境搭建 使用create-react-app快速搭建…...

浅析 C# Console 控制台为什么也会卡死

一:背景 1. 讲故事 在分析旅程中,总会有几例控制台的意外卡死导致的生产事故,有经验的朋友都知道,控制台卡死一般是动了 快速编辑窗口 的缘故,截图如下: 虽然知道缘由,但一直没有时间探究底层…...

zookeeper详解

一 zookeeper介绍 首先需要了解zookeeper是什么,zookeeper是一个分布式协调服务。所谓分布式协调主要是来解决分布式系统中多个进程之间的同步限制,防止出现脏读,例如我们常说的分布式锁。 zookeeper中的数据是存储在内存当中的,因…...

达索智能制造解决方案,敏捷电芯制造如何赋能企业竞争力 | 百世慧®

敏捷电芯制造赋能企业竞争力 全球电池市场正在快速扩大,为制造商带来巨大商机。 锂电行业的智能制造如何应用? 电池制造业的市场趋势是什么? 电池制造商面临哪些挑战? 特别是电池电芯制造方面,如何克服挑战获得竞…...

自然语言处理---迁移学习实践

1 微调脚本介绍 指定任务类型的微调脚本: huggingface研究机构提供了针对GLUE数据集合任务类型的微调脚本, 这些微调脚本的核心都是微调模型的最后一个全连接层。通过简单的参数配置来指定GLUE中存在任务类型(如: CoLA对应文本二分类,MRPC对应句子对文本二分类&…...

看得懂的——数据库中的“除”操作

通过一个例子来解释数据库中的“除”操作 R➗S其实就是判断关系R中X各个值的象集Y是否包含关系S中属性Y的所有值 求解步骤 第一步 找出关系R和关系S中相同的属性,即Y属性。在关系S中对Y做投影(即将Y列取出);所得结果如下&#x…...

el-input无法输入的问题和表单验证失败问题(亲测有效)-开发bug总结4

大部分无法输入的问题:基本都是没有进行v-model双向数据绑定,这个很好解决。 本人项目中遇到的bug问题如下: 点击添加,表单内可输入用户名 和 用户姓名,但有时会偶发出现无法这两个input框里面无法输入内容。 原因&a…...

OpenCV+QT实现的数字图像处理算法合集

源码下载地址: 基于OpenCV和QT的图像处理源码 图像预处理 灰度处理 灰度直方图 灰度均衡 梯度锐化 Laplace锐化 边缘检测 Roberts Sobel Laplace Prewitt canny Krisch 噪声 椒盐噪声 高斯噪声 滤波 均值滤波 中值滤波 双边滤波 形态学滤波 高斯滤波 图像变…...

想要查看员工与客户聊天记录和跟进情况,有什么工具推荐吗?

想要查看员工与客户 聊天记录和跟进情况 有什么工具推荐吗? 想要查看员工与客户聊天记录和每天新增客户,可以使用微信管理系统这个工具。 微信管理系统是一个能够同时登录多个微信,实现一个人管理多个微信的工具。它分为两大版块,…...

androdi知识笔记

jbr embed:android studio自带的jdk AGP(android gradle plugin) aar jar 利用java语言可以写应用程序(利用已有库加速开发过程),也可以自己开发库用于特定功能(供引用)。 循环啊是个&#xff0…...

华为数通方向HCIP-DataCom H12-831题库(多选题:21-40)

第21题 网络管理员A希望使用ACL匹配特定的路由条目,请问以下哪些路由条目将被图中的ACL规侧匹配? acl number 2000 rule 10 permit source 10.0.0.0 0.0.6.0A、10.0.0.1/32 B、10.0.0.0/24 C、10.0.1.0/24 D、10.0.2.0/24 答案: 解析: 通配符十进制6转换二进制为00000110,…...

数据要素安全流通:挑战与解决方案

文章目录 数据要素安全流通:挑战与解决方案一、引言二、数据要素安全流通的挑战数据泄露风险数据隐私保护数据跨境流动监管 三、解决方案加强数据安全防护措施实施数据隐私保护技术建立合规的数据跨境流动机制 四、数据安全流通的未来趋势01 数据价值与产业崛起02 多…...

【Mybatis源码】XMLConfigBuilder构建器 - 加载XML与创建Configuration对象的过程

XMLConfigBuilder是Mybatis中定义的进行构建Configuration对象的类,此类用于读取XML配置文件创建并初始化Configuration对象;本篇我们主要介绍加载XML文件与创建Configuration对象的过程。 一、Configuration对象的创建过程 下面是从Configuration类中取到的代码片段: pu…...

台灯显色指数多少好?推荐显色指数优秀的护眼台灯

台灯的显色指数是其非常重要的指标,它可以表示灯光照射到物体身上,物体颜色的真实程度,一般用平均显色指数Ra来表示,Ra值越高,灯光显色能力越强。常见的台灯显色指数最低要求一般是在Ra80以上即可,比较好的…...

【2024秋招】2023-8-5-小红书-数据引擎团队后端开发提前批面经

1 面试官介绍 OLAP引擎,离线引擎,大数据分析中间件 2 自我介绍 缺点: (1)面试官让重点介绍自己最在行的项目,我真的在自我介绍上扯了一些别的东西… (2)在面试的时候因为想看简…...

【Docker从入门到入土 4】使用Harbor搭建Docker私有仓库

私有仓库 一、Harbor简介1.1 什么是Harbor?1.2 Harbor的特性1.3 Harbor和docker registry的关系1.4 Harbor的构成1.4 Harbor 配置文件中的两类参数1.4.1 所需参数1.4.2 可选参数 二、Harbor部署2.1 部署Docker-Compose服务2.2 部署 Harbor 服务Step1 下载或上传 Harbor 安装程…...

监控易一体化运维:打造机房环境监控的卓越典范

随着信息技术的飞速发展,机房作为企业数据和业务的中心,其运行状态和管理的重要性日益凸显。为确保机房的稳定性和可靠性,越来越多的企业选择使用一体化运维管理软件来进行实时监控。在这方面,监控易品牌提供了一款全面而高效的机…...

【X3m】DDR压力测试

Index of /downloads/unittest/ 设置CPU模式和降频温度# 若设备重启需再次配置这两条指令 echo performance > /sys/devices/system/cpu/cpufreq/policy0/scaling_governor echo 105000 > /sys/devices/virtual/thermal/thermal_zone0/trip_point_1_temp #1 cpu test ec…...

【Linux】32条指令带你玩转 Linux !

目录 1,whoami 2,who 3,pwd 4,ls 1,ls 2,ls -l 3,ls -a 4,ls -al 5,ls -d 6,ls -ld 5,clear 6,cd 1,cd 2&…...

Python:操作 Excel 折叠

💖亲爱的技术爱好者们,热烈欢迎来到 Kant2048 的博客!我是 Thomas Kant,很开心能在CSDN上与你们相遇~💖 本博客的精华专栏: 【自动化测试】 【测试经验】 【人工智能】 【Python】 Python 操作 Excel 系列 读取单元格数据按行写入设置行高和列宽自动调整行高和列宽水平…...

【位运算】消失的两个数字(hard)

消失的两个数字(hard) 题⽬描述:解法(位运算):Java 算法代码:更简便代码 题⽬链接:⾯试题 17.19. 消失的两个数字 题⽬描述: 给定⼀个数组,包含从 1 到 N 所有…...

【快手拥抱开源】通过快手团队开源的 KwaiCoder-AutoThink-preview 解锁大语言模型的潜力

引言: 在人工智能快速发展的浪潮中,快手Kwaipilot团队推出的 KwaiCoder-AutoThink-preview 具有里程碑意义——这是首个公开的AutoThink大语言模型(LLM)。该模型代表着该领域的重大突破,通过独特方式融合思考与非思考…...

2025盘古石杯决赛【手机取证】

前言 第三届盘古石杯国际电子数据取证大赛决赛 最后一题没有解出来,实在找不到,希望有大佬教一下我。 还有就会议时间,我感觉不是图片时间,因为在电脑看到是其他时间用老会议系统开的会。 手机取证 1、分析鸿蒙手机检材&#x…...

【Java_EE】Spring MVC

目录 Spring Web MVC ​编辑注解 RestController RequestMapping RequestParam RequestParam RequestBody PathVariable RequestPart 参数传递 注意事项 ​编辑参数重命名 RequestParam ​编辑​编辑传递集合 RequestParam 传递JSON数据 ​编辑RequestBody ​…...

关于 WASM:1. WASM 基础原理

一、WASM 简介 1.1 WebAssembly 是什么? WebAssembly(WASM) 是一种能在现代浏览器中高效运行的二进制指令格式,它不是传统的编程语言,而是一种 低级字节码格式,可由高级语言(如 C、C、Rust&am…...

Caliper 配置文件解析:config.yaml

Caliper 是一个区块链性能基准测试工具,用于评估不同区块链平台的性能。下面我将详细解释你提供的 fisco-bcos.json 文件结构,并说明它与 config.yaml 文件的关系。 fisco-bcos.json 文件解析 这个文件是针对 FISCO-BCOS 区块链网络的 Caliper 配置文件,主要包含以下几个部…...

蓝桥杯 冶炼金属

原题目链接 🔧 冶炼金属转换率推测题解 📜 原题描述 小蓝有一个神奇的炉子用于将普通金属 O O O 冶炼成为一种特殊金属 X X X。这个炉子有一个属性叫转换率 V V V,是一个正整数,表示每 V V V 个普通金属 O O O 可以冶炼出 …...

Python Ovito统计金刚石结构数量

大家好,我是小马老师。 本文介绍python ovito方法统计金刚石结构的方法。 Ovito Identify diamond structure命令可以识别和统计金刚石结构,但是无法直接输出结构的变化情况。 本文使用python调用ovito包的方法,可以持续统计各步的金刚石结构,具体代码如下: from ovito…...

MySQL 部分重点知识篇

一、数据库对象 1. 主键 定义 :主键是用于唯一标识表中每一行记录的字段或字段组合。它具有唯一性和非空性特点。 作用 :确保数据的完整性,便于数据的查询和管理。 示例 :在学生信息表中,学号可以作为主键&#xff…...