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

深入剖析AI大模型:大模型时代的 Prompt 工程全解析

今天聊的内容,我认为是AI开发里面非常重要的内容。它在AI开发里无处不在,当你对 AI 助手说 "用李白的风格写一首关于人工智能的诗",或者让翻译模型 "将这段合同翻译成商务日语" 时,输入的这句话就是 Prompt。…...

.Net框架,除了EF还有很多很多......

文章目录 1. 引言2. Dapper2.1 概述与设计原理2.2 核心功能与代码示例基本查询多映射查询存储过程调用 2.3 性能优化原理2.4 适用场景 3. NHibernate3.1 概述与架构设计3.2 映射配置示例Fluent映射XML映射 3.3 查询示例HQL查询Criteria APILINQ提供程序 3.4 高级特性3.5 适用场…...

蓝桥杯 2024 15届国赛 A组 儿童节快乐

P10576 [蓝桥杯 2024 国 A] 儿童节快乐 题目描述 五彩斑斓的气球在蓝天下悠然飘荡,轻快的音乐在耳边持续回荡,小朋友们手牵着手一同畅快欢笑。在这样一片安乐祥和的氛围下,六一来了。 今天是六一儿童节,小蓝老师为了让大家在节…...

使用van-uploader 的UI组件,结合vue2如何实现图片上传组件的封装

以下是基于 vant-ui&#xff08;适配 Vue2 版本 &#xff09;实现截图中照片上传预览、删除功能&#xff0c;并封装成可复用组件的完整代码&#xff0c;包含样式和逻辑实现&#xff0c;可直接在 Vue2 项目中使用&#xff1a; 1. 封装的图片上传组件 ImageUploader.vue <te…...

华为云Flexus+DeepSeek征文|DeepSeek-V3/R1 商用服务开通全流程与本地部署搭建

华为云FlexusDeepSeek征文&#xff5c;DeepSeek-V3/R1 商用服务开通全流程与本地部署搭建 前言 如今大模型其性能出色&#xff0c;华为云 ModelArts Studio_MaaS大模型即服务平台华为云内置了大模型&#xff0c;能助力我们轻松驾驭 DeepSeek-V3/R1&#xff0c;本文中将分享如何…...

dify打造数据可视化图表

一、概述 在日常工作和学习中&#xff0c;我们经常需要和数据打交道。无论是分析报告、项目展示&#xff0c;还是简单的数据洞察&#xff0c;一个清晰直观的图表&#xff0c;往往能胜过千言万语。 一款能让数据可视化变得超级简单的 MCP Server&#xff0c;由蚂蚁集团 AntV 团队…...

Go 并发编程基础:通道(Channel)的使用

在 Go 中&#xff0c;Channel 是 Goroutine 之间通信的核心机制。它提供了一个线程安全的通信方式&#xff0c;用于在多个 Goroutine 之间传递数据&#xff0c;从而实现高效的并发编程。 本章将介绍 Channel 的基本概念、用法、缓冲、关闭机制以及 select 的使用。 一、Channel…...

通过 Ansible 在 Windows 2022 上安装 IIS Web 服务器

拓扑结构 这是一个用于通过 Ansible 部署 IIS Web 服务器的实验室拓扑。 前提条件&#xff1a; 在被管理的节点上安装WinRm 准备一张自签名的证书 开放防火墙入站tcp 5985 5986端口 准备自签名证书 PS C:\Users\azureuser> $cert New-SelfSignedCertificate -DnsName &…...

HybridVLA——让单一LLM同时具备扩散和自回归动作预测能力:训练时既扩散也回归,但推理时则扩散

前言 如上一篇文章《dexcap升级版之DexWild》中的前言部分所说&#xff0c;在叠衣服的过程中&#xff0c;我会带着团队对比各种模型、方法、策略&#xff0c;毕竟针对各个场景始终寻找更优的解决方案&#xff0c;是我个人和我司「七月在线」的职责之一 且个人认为&#xff0c…...

FFmpeg avformat_open_input函数分析

函数内部的总体流程如下&#xff1a; avformat_open_input 精简后的代码如下&#xff1a; int avformat_open_input(AVFormatContext **ps, const char *filename,ff_const59 AVInputFormat *fmt, AVDictionary **options) {AVFormatContext *s *ps;int i, ret 0;AVDictio…...