编码规范(前端)
文章目录
- 1. 文档说明
- 1.1 编制说明
- 1.2 名词解释
- 2.前端研发规范
- 2.1 HTML编码规范
- 2.1.1 文档类型
- 2.1.2 语言
- 2.1.3 元数据
- 2.1.4 资源加载
- 2.1.5 页面标题
- 2.1.6 编码风格
- 2.1.7 标签
- 2.1.8 属性
- 2.1.9 语义化
- 2.2 CSS编码规范
- 2.2.1 文件引用
- 2.2.2 命名-组成元素
- 知识点
1. 文档说明
1.1 编制说明
软件行业的高速发展,对软件开发者的综合素质要求越来越高,不仅仅是编程知识点,其他维度知识点也会影响最后的交付质量,本文档以开发前端项目角度,详细描写了前端的代码规范,分别从HTML、CSS、JavaScript、TypeScript、四个方面入手,并且每个章节进行了详细划分,方便读者能快速定位,规范自己的代码,提高项目质量。
1.2 名词解释
序号 | 名词 | 释义 |
---|---|---|
1 | JavaScript | (通常编写为JS)是一种高级的,解释型的编程语言。支持面向对象设计,函数式编程,以及指令式编程。 |
2 | 圈复杂度 | 软件源码某部分发圈复杂度就是这部分代码中线性无关路径的数量 eg:如果一段源码中不包含控制流语句(条件或决策点),那么这段代码的圈复杂度为1,因为这段代码中只会有一条路径;如果一段代码中仅包含一个if语句,且if语句仅有一个条件,那么这段代码的圈复杂度为2;包含两个嵌套的if语句,或是一个if语句有两个条件的代码块的圈复杂度为3。 |
3 | 认知复杂度 | 认知复杂度分数根据三个基本规则进行评估: 忽略允许将多个语句易于理解地简写成一个的情况在代码线性流程中的每一次中断都增加(+1)(复杂度)断流结构嵌套时增加(复杂度) |
2.前端研发规范
2.1 HTML编码规范
2.1.1 文档类型
1)【强制】
使用HTML5 DOCTYPE。
//<!DOCTYPE html>
<html>
</html>
2.1.2 语言
1)【推荐】
指定html标签上的lang属性。
<html lang="zh-CN"><!--...-->
</html>
2.1.3 元数据
1)【推荐】
使用UTF-8字符编码。
声明一个明确的字符编码,可以让浏览器更快更高效地确定适合网页内容的渲染方式。
由于历史原因,不同浏览器采用了不同的字符编码。但对于新业务,如无特殊要求,统一使用UTF-8字符编码,以便统一。
在HTML中使用<meta charset="utf-8:/>声明文档
<head><meta charset="utf-8" />
</head>
2)【推荐】
页面提供给移动设备使用时,需设置viewport。
2.1.4 资源加载
1)【推荐】
引入CSS
和JavaScript
时无需指定type
。根据HTML5
规范,引入CSS
和JavaScript
时通常不需要指明type
,因为text/css和text/javascript
分别是他们的默认值。
2)【推荐】
在head标签内引入CSS
,在body
结束标签前引入JS
。在<body></body>
中指定外部样式表和嵌入式样式块可能会导致页面的重排和重绘,对页面的渲染造成影响。因此,一般情况下,CSS应在<head></head>
标签里引入。
2.1.5 页面标题
1)【强制】
页面需要指定title标签,有且仅有1个。
2.1.6 编码风格
1)【推荐】
统一使用2个空格缩进,不要使用4个空格缩进或tab缩进。
2)【强制】
在HTML注释代码中,不允许出现任何敏感信息。
3)【推荐】
单行注释,需在注释内容和注释符之间需留有一个空格,以增强可读性。
4)【推荐】
多行注释,注释符单独占一行,注释内容2个空格缩进。
2.1.7 标签
1)【强制】
标签名统一使用小写。
<!-- bad -->
<H1>Hello,world!</H1>
<!-- good -->
<h1>Hello,world!</h1>
2)【推荐】
不要省略自闭合标签结尾处的斜线,且斜线前需留有一个空格。
<!-- bad -->
<meta name = "viewport" content="width=device-width,initial-scale=1.0">
<img src="images/foo.png" alt="foo"><!-- good -->
<meta name = "viewport" content="width=device-width,initial-scale=1.0" />
<img src="images/foo.png" alt="foo" />
2.1.8 属性
1)【强制】
属性值使用双引号,不要使用单引号。
2)【推荐】
不要为Boolean属性添加取值。
XHTML需要每个属性声明取值,但是HTML5并不需要。一个元素中Boolean属性存在即表示取值true,不存在则表示取值false。
3)【推荐】
自定义属性的命名:以data-为前缀。
2.1.9 语义化
1)【参考】
尽量根据语义使用HTML标签。
2.2 CSS编码规范
2.2.1 文件引用
1)【强制】
一律使用link的方式调用外部样式。
2)【推荐】
不要在<style>
块中使用@import
;不要在页面中使用<style>
块。
2.2.2 命名-组成元素
1)【强制】
命名必须由字母、中划线或数字组成且不能以数字或中划线开头。
2)【强制】
不允许使用拼音与英文的混合命名,更不允许直接使用中文的方式;禁止同一个含义的内容,在同一个应用中出现多种不同的单词与翻译。
知识点
- map用于构建一个新数组,单纯想遍历数组应使用forEach
- 用
copy = {...original,c:3};
取代copy = Object.assign(original,{c:3});
- 将类数组结构转换为数组
const nodes = [...foo];const uniqueNodes = [...new Set(foo)]; //可以利用Set和...将数组去重
- ES5与ES6的相同点与不同点
相关文章:
编码规范(前端)
文章目录 1. 文档说明1.1 编制说明1.2 名词解释 2.前端研发规范2.1 HTML编码规范2.1.1 文档类型2.1.2 语言2.1.3 元数据2.1.4 资源加载2.1.5 页面标题2.1.6 编码风格2.1.7 标签2.1.8 属性2.1.9 语义化 2.2 CSS编码规范2.2.1 文件引用2.2.2 命名-组成元素 知识点 1. 文档说明 1…...

【JavaEE进阶】部署Web项目到Linux服务器
文章目录 🍃前言🍀什么是部署🌲环境配置🚩数据准备🚩程序配置⽂件修改 🎄构建项目并打包🎋上传Jar包到服务器,并运行🚩上传Jar包🚩运行程序🚩开放端口号 &…...

就业班 2401--3.1 Linux Day9--文件查找和压缩
一、文件查找与打包压缩 grep: 文件内容过滤 [rootqfedu.com ~]# grep root /etc/passwd #从/etc/passwd文件中过滤root字段 grep ^root root$ root:x:0:0:root:/root:/bin/bash operator:x:11:0:operator:/root:/sbin/nologin 查找命令 [rootqfedu.com ~]# which ls ali…...

「滚雪球学Java」:JDBC(章节汇总)
🏆本文收录于「滚雪球学Java」专栏,专业攻坚指数级提升,助你一臂之力,带你早日登顶🚀,欢迎大家关注&&收藏!持续更新中,up!up!up!…...
RT-DETR改进RepVGG结构:简单但功能强大的卷积神经网络架构
💡本篇内容:RT-DETR改进RepVGG结构:简单但功能强大的卷积神经网络架构 💡🚀🚀🚀本博客 改进源代码改进 适用于 RT-DETR 按步骤操作运行改进后的代码即可 💡本文提出改进 原创 方式:二次创新,RT-DETR专属 应部分读者要求,新增一篇RepVGG 论文理论部分 + 原…...
C#进阶高级语法之LINQ :Lambda 表达式
C# 中的 LINQ (Language Integrated Query) 提供了一种声明性的数据查询和操作方法,它允许开发人员对集合、数据库等数据源进行查询和操作,而不需要编写复杂的循环和手动编码。Lambda 表达式与 LINQ 紧密相关,它提供了一种简洁的方式来定义匿…...
react hook: useCallback
useCallback的主要使用场景在于优化性能,并确保当传递回调函数给子组件时,子组件不会因为父组件的重渲染而重新创建函数。 使用场景 1.当你需要将回调函数传递给子组件时,使用useCallback可以确保子组件在重新渲染时不会不必要地重新创建函数…...

java面试(jvm)
JVM内存模型 细分Eden: java类加载过程?双亲委派机制?一个对象从加载到JVM,再到被GC清除过程? JAVA类加载器:AppClassLoader - ExtClassLoader - BootStrapClassLoader。每种类加载器都有他自己的加载目录…...

自动化测试摸索:python+selenium+pytest(持续更新.....)
一、环境搭建 1、python 安装 下载链接:Python Releases for Windows | Python.org 自己选择合适的版本下载 当下载完毕时,找到该安装程序:python-3.12.2-amd64.exe文件,双击启动安装向导。 为了防止C:盘文件因系统故障或者无…...

C++惯用法之RAII思想: 资源管理
C编程技巧专栏:http://t.csdnimg.cn/eolY7 目录 1.概述 2.RAII的应用 2.1.智能指针 2.2.文件句柄管理 2.3.互斥锁 3.注意事项 3.1.禁止复制 3.2.对底层资源使用引用计数法 3.3.复制底部资源(深拷贝)或者转移资源管理权(移动语义) 4.RAII的优势和挑战 5.总…...
矢量图是什么,有哪些格式的文件
矢量图是一种图形设计中常用的图像类型,与我们日常见到的光栅图像(如JPEG、PNG等)有本质的区别。矢量图基于数学方程和几何元素(如点、线、曲线和形状)来表示图像,而不是像光栅图那样通过像素阵列来表示。这…...

Linux 设置快捷命令
以ll命令为例: 在 Linux 系统上,ll 命令通常不是一个独立的程序,而是 ls 命令的一个别名。 这个别名通常在用户的 shell 配置文件中定义,比如 .bashrc 或 .bash_aliases 文件中。 要在 Debian 上启用 ll 命令,你可以按…...

SpringCloudFeign远程调用
文章目录 1. Feign 是什么2. Feign 的使用2.1 引入依赖2.2 写接口2.3 服务调用方2.4 启动测试 3. Feign 日志配置4. Feign 使用优化5. 注意包扫描问题 1. Feign 是什么 Feign 是一个声明式、模板化的 HTTP 客户端,它是由 Netflix 开发并开源的。Feign 极大地简化了…...
Java中List、Set、Map三种集合之间的区别
Java中List、Set、Map三种集合之间的区别 1. List2. Set3. Map 在Java中,List、Set和Map是三种常见的集合类型,它们之间也有一些重要的区别: 1. List List是有序集合,可以存储重复元素。List的实现类常见有ArrayList、LinkedLis…...
SpringMVC之DispatcherServlet组件
目录 一、SpringMVC的核心处理流程二、DispatcherServlet1、init()方法2、doDispatch()方法3、AbstractAnnotationConfigDispatcherServletInitializer类 一、SpringMVC的核心处理流程 请求到达 DispatcherServlet DispatcherServlet 的请求处理: DispatcherServlet…...

抢商家、夺用户、比低价,抖音、快手、小红书“奇招尽出”
随着流量红利逐渐消退,国内电商平台之间互相内卷已成为了行业常态,而无论是在该领域深耕已久的淘宝、京东、拼多多等电商巨头,还是新跨界而来的抖音、快手、小红书等电商新秀都在不断地进行创新,以便为商家提供更好的服务…...
ChatGPT引领的AI面试攻略系列:AI全栈工程师篇
系列文章目录 AI全栈工程师(本文) 文章目录 系列文章目录一、前言二、面试题1. 基础理论与数据处理2. 机器学习3. 深度学习4. 大模型与迁移学习5. 计算机视觉6. 自然语言处理(NLP)7. 多模态学习8. AI生成内容(AIGC&am…...

上位机图像处理和嵌入式模块部署(qmacvisual配置)
【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing 163.com】 前面我们谈到了qmacvisual的编译、验证码、用户登录以及流程的编辑,这部分都是基础工作。事实上,除了这些内容之外…...

EXPLAIN PLAN FOR:在Oracle中生成执行计划
目录 案例 解析 Operation类型 在Oracle中,可以使用 EXPLAIN PLAN FOR 命令来生成执行计划,然后通过 SELECT plan_table_output FROM TABLE(DBMS_XPLAN.DISPLAY(PLAN_TABLE))来查看执行计划。需要注意的是,这两个命令需要在同一个窗口下运…...
蓝桥杯 9241.飞机降落
这道题本来作者以为是可以用一些小技巧进行暴力解法的,但是后来试了一下,不能过去全部数据。 下面是对半个的题解: #include<iostream> #include<stdio.h> #include<cstring> #include<cstdlib> #include<cmath…...

国防科技大学计算机基础课程笔记02信息编码
1.机内码和国标码 国标码就是我们非常熟悉的这个GB2312,但是因为都是16进制,因此这个了16进制的数据既可以翻译成为这个机器码,也可以翻译成为这个国标码,所以这个时候很容易会出现这个歧义的情况; 因此,我们的这个国…...
<6>-MySQL表的增删查改
目录 一,create(创建表) 二,retrieve(查询表) 1,select列 2,where条件 三,update(更新表) 四,delete(删除表…...

centos 7 部署awstats 网站访问检测
一、基础环境准备(两种安装方式都要做) bash # 安装必要依赖 yum install -y httpd perl mod_perl perl-Time-HiRes perl-DateTime systemctl enable httpd # 设置 Apache 开机自启 systemctl start httpd # 启动 Apache二、安装 AWStats࿰…...

全志A40i android7.1 调试信息打印串口由uart0改为uart3
一,概述 1. 目的 将调试信息打印串口由uart0改为uart3。 2. 版本信息 Uboot版本:2014.07; Kernel版本:Linux-3.10; 二,Uboot 1. sys_config.fex改动 使能uart3(TX:PH00 RX:PH01),并让boo…...

有限自动机到正规文法转换器v1.0
1 项目简介 这是一个功能强大的有限自动机(Finite Automaton, FA)到正规文法(Regular Grammar)转换器,它配备了一个直观且完整的图形用户界面,使用户能够轻松地进行操作和观察。该程序基于编译原理中的经典…...

九天毕昇深度学习平台 | 如何安装库?
pip install 库名 -i https://pypi.tuna.tsinghua.edu.cn/simple --user 举个例子: 报错 ModuleNotFoundError: No module named torch 那么我需要安装 torch pip install torch -i https://pypi.tuna.tsinghua.edu.cn/simple --user pip install 库名&#x…...

视觉slam十四讲实践部分记录——ch2、ch3
ch2 一、使用g++编译.cpp为可执行文件并运行(P30) g++ helloSLAM.cpp ./a.out运行 二、使用cmake编译 mkdir build cd build cmake .. makeCMakeCache.txt 文件仍然指向旧的目录。这表明在源代码目录中可能还存在旧的 CMakeCache.txt 文件,或者在构建过程中仍然引用了旧的路…...

安宝特案例丨Vuzix AR智能眼镜集成专业软件,助力卢森堡医院药房转型,赢得辉瑞创新奖
在Vuzix M400 AR智能眼镜的助力下,卢森堡罗伯特舒曼医院(the Robert Schuman Hospitals, HRS)凭借在无菌制剂生产流程中引入增强现实技术(AR)创新项目,荣获了2024年6月7日由卢森堡医院药剂师协会࿰…...
Python Einops库:深度学习中的张量操作革命
Einops(爱因斯坦操作库)就像给张量操作戴上了一副"语义眼镜"——让你用人类能理解的方式告诉计算机如何操作多维数组。这个基于爱因斯坦求和约定的库,用类似自然语言的表达式替代了晦涩的API调用,彻底改变了深度学习工程…...

C# 表达式和运算符(求值顺序)
求值顺序 表达式可以由许多嵌套的子表达式构成。子表达式的求值顺序可以使表达式的最终值发生 变化。 例如,已知表达式3*52,依照子表达式的求值顺序,有两种可能的结果,如图9-3所示。 如果乘法先执行,结果是17。如果5…...