编码规范(前端)
文章目录
- 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…...
Adafruit GFX图形库:嵌入式显示驱动的分层架构与实践
1. Adafruit GFX 图形库深度解析:嵌入式显示驱动的基石架构 Adafruit GFX 库是 Adafruit 全系列显示设备驱动的统一图形抽象层,其核心定位并非直接操控硬件,而是为上层应用提供一套与具体显示控制器解耦的、标准化的二维图形原语接口。该库采…...
网盘直链下载助手:一键解锁8大平台高速下载通道
网盘直链下载助手:一键解锁8大平台高速下载通道 【免费下载链接】Online-disk-direct-link-download-assistant 一个基于 JavaScript 的网盘文件下载地址获取工具。基于【网盘直链下载助手】修改 ,支持 百度网盘 / 阿里云盘 / 中国移动云盘 / 天翼云盘 /…...
零基础学唱歌全套教程 声乐技巧入门到进阶资源
很多想自学唱歌的朋友,应该都有过这样的困扰:想入门却不知道从哪一步开始,网上找的教程要么太零散,知识点前后接不上;要么内容太晦涩,完全摸不着门道。这段时间我整理了一批适配不同学习阶段的唱歌相关教程…...
全文交给降AI工具处理,文本质量会变差吗?实测说话
全文交给降AI工具处理,文本质量会变差吗?实测说话 “全文交给工具处理,会不会被改得乱七八糟?” 这是很多同学在考虑用降AI工具时最大的顾虑,也是一个合理的问题。 我实测了几个工具处理前后的文本质量对比…...
避坑指南:海康摄像头与Livox雷达时间同步失败的5个常见原因及解决方案
海康摄像头与Livox雷达时间同步实战:从原理到排错的完整指南 当海康工业摄像头遇上Livox Mid-360激光雷达,时间同步问题就像两个说着不同方言的专家试图合作——看似简单,实则暗藏玄机。作为在工业视觉与三维感知融合领域摸爬滚打多年的工程师…...
Jupyter notebook打不开本地文件,有关目录存放问题
Jupyter notebook打不开本地文件,有关目录存放问题 基于Anaconda下载后,点击Jupyter notebook无法打开文件目录问题,或者需要更改打开的文件目录,主要解决方法:修改配置文件和路径。 第一步:修改配置文件 打…...
2026年木蜡油定做厂家大盘点,究竟哪家才是行业首选?
在当今注重环保和品质的时代,木蜡油作为一种天然环保的涂料,受到了越来越多消费者的青睐。无论是室内外木器家具、木艺制品,还是全屋定制、装饰装修等领域,木蜡油都有着广泛的应用。然而,市场上木蜡油定做厂家众多&…...
3大维度解锁YimMenu:GTA5安全增强工具全方位使用指南
3大维度解锁YimMenu:GTA5安全增强工具全方位使用指南 【免费下载链接】YimMenu YimMenu, a GTA V menu protecting against a wide ranges of the public crashes and improving the overall experience. 项目地址: https://gitcode.com/GitHub_Trending/yi/YimMe…...
终极JavaScript状态管理指南:Redux与状态机的实用最佳实践
终极JavaScript状态管理指南:Redux与状态机的实用最佳实践 【免费下载链接】clean-code-javascript Clean Code concepts adapted for JavaScript 项目地址: https://gitcode.com/GitHub_Trending/cl/clean-code-javascript clean-code-javascript是一个专注…...
如何实现跨平台一致性:hello-uniapp处理平台差异的完整策略指南
如何实现跨平台一致性:hello-uniapp处理平台差异的完整策略指南 【免费下载链接】hello-uniapp uni-app框架演示示例 项目地址: https://gitcode.com/gh_mirrors/he/hello-uniapp hello-uniapp作为uni-app框架的官方演示项目,展示了如何通过一套代…...
