当前位置: 首页 > 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&…...

HTML 语义化

目录 HTML 语义化HTML5 新特性HTML 语义化的好处语义化标签的使用场景最佳实践 HTML 语义化 HTML5 新特性 标准答案&#xff1a; 语义化标签&#xff1a; <header>&#xff1a;页头<nav>&#xff1a;导航<main>&#xff1a;主要内容<article>&#x…...

基于大模型的 UI 自动化系统

基于大模型的 UI 自动化系统 下面是一个完整的 Python 系统,利用大模型实现智能 UI 自动化,结合计算机视觉和自然语言处理技术,实现"看屏操作"的能力。 系统架构设计 #mermaid-svg-2gn2GRvh5WCP2ktF {font-family:"trebuchet ms",verdana,arial,sans-…...

中南大学无人机智能体的全面评估!BEDI:用于评估无人机上具身智能体的综合性基准测试

作者&#xff1a;Mingning Guo, Mengwei Wu, Jiarun He, Shaoxian Li, Haifeng Li, Chao Tao单位&#xff1a;中南大学地球科学与信息物理学院论文标题&#xff1a;BEDI: A Comprehensive Benchmark for Evaluating Embodied Agents on UAVs论文链接&#xff1a;https://arxiv.…...

23-Oracle 23 ai 区块链表(Blockchain Table)

小伙伴有没有在金融强合规的领域中遇见&#xff0c;必须要保持数据不可变&#xff0c;管理员都无法修改和留痕的要求。比如医疗的电子病历中&#xff0c;影像检查检验结果不可篡改行的&#xff0c;药品追溯过程中数据只可插入无法删除的特性需求&#xff1b;登录日志、修改日志…...

可靠性+灵活性:电力载波技术在楼宇自控中的核心价值

可靠性灵活性&#xff1a;电力载波技术在楼宇自控中的核心价值 在智能楼宇的自动化控制中&#xff0c;电力载波技术&#xff08;PLC&#xff09;凭借其独特的优势&#xff0c;正成为构建高效、稳定、灵活系统的核心解决方案。它利用现有电力线路传输数据&#xff0c;无需额外布…...

Neo4j 集群管理:原理、技术与最佳实践深度解析

Neo4j 的集群技术是其企业级高可用性、可扩展性和容错能力的核心。通过深入分析官方文档,本文将系统阐述其集群管理的核心原理、关键技术、实用技巧和行业最佳实践。 Neo4j 的 Causal Clustering 架构提供了一个强大而灵活的基石,用于构建高可用、可扩展且一致的图数据库服务…...

深入解析C++中的extern关键字:跨文件共享变量与函数的终极指南

&#x1f680; C extern 关键字深度解析&#xff1a;跨文件编程的终极指南 &#x1f4c5; 更新时间&#xff1a;2025年6月5日 &#x1f3f7;️ 标签&#xff1a;C | extern关键字 | 多文件编程 | 链接与声明 | 现代C 文章目录 前言&#x1f525;一、extern 是什么&#xff1f;&…...

Java多线程实现之Thread类深度解析

Java多线程实现之Thread类深度解析 一、多线程基础概念1.1 什么是线程1.2 多线程的优势1.3 Java多线程模型 二、Thread类的基本结构与构造函数2.1 Thread类的继承关系2.2 构造函数 三、创建和启动线程3.1 继承Thread类创建线程3.2 实现Runnable接口创建线程 四、Thread类的核心…...

python执行测试用例,allure报乱码且未成功生成报告

allure执行测试用例时显示乱码&#xff1a;‘allure’ &#xfffd;&#xfffd;&#xfffd;&#xfffd;&#xfffd;ڲ&#xfffd;&#xfffd;&#xfffd;&#xfffd;ⲿ&#xfffd;&#xfffd;&#xfffd;Ҳ&#xfffd;&#xfffd;&#xfffd;ǿ&#xfffd;&am…...

深度学习习题2

1.如果增加神经网络的宽度&#xff0c;精确度会增加到一个特定阈值后&#xff0c;便开始降低。造成这一现象的可能原因是什么&#xff1f; A、即使增加卷积核的数量&#xff0c;只有少部分的核会被用作预测 B、当卷积核数量增加时&#xff0c;神经网络的预测能力会降低 C、当卷…...