前端开发中的代码规范
引言
在前端开发中,遵循良好的代码规范是非常重要的。这不仅能提高代码的可读性和可维护性,还能帮助团队成员更好地协作。本文将介绍一些前端开发中常用的代码规范,并探讨它们的重要性。
1. 代码规范的重要性
1.1 可读性
良好的代码规范可以使代码更易于阅读和理解,这对于维护和调试来说至关重要。
1.2 一致性
保持代码风格的一致性有助于团队成员更快地理解彼此的代码,从而提高开发效率。
1.3 自动化
代码规范可以通过自动化工具来检查和执行,这样可以节省时间并减少人为错误。
1.4 社区标准
遵守社区认可的标准可以让你的代码更容易被其他人接受,比如在开源项目中的贡献。
2. HTML 代码规范
2.1 结构清晰
- 使用语义化的标签,如
<header>、<footer>、<nav>、<article>等。 - 避免使用纯展示目的的
<div>,除非没有更好的选择。 - 保证文档结构的逻辑性。
2.2 属性顺序
- 类名 (
class) 和 ID (id) 应放在属性列表的最前面。 - 其他属性按字母顺序排列。
html
深色版本
1<div id="main" class="container" data-role="content" tabindex="0">...</div>
2.3 注释
- 在复杂的 HTML 结构中使用注释来说明其用途。
html
深色版本
1<!-- Main content area -->
2<main role="main">
3 <!-- Primary navigation -->
4 <nav id="primary-nav">
5 <!-- Navigation links -->
6 </nav>
7</main>
3. CSS 代码规范
3.1 缩进与空格
- 使用 2 个空格进行缩进。
- 在花括号
{}之前和之后添加空格。
css
深色版本
1.container {
2 padding: 10px;
3 background-color: #f5f5f5;
4}
3.2 属性顺序
- 属性应该按类别排序,如位置、盒模型、字体等。
- 每个类别内的属性按字母顺序排列。
css
深色版本
1.container {
2 margin: 0 auto; /* Positioning */
3 width: 960px; /* Sizing */
4
5 color: #333; /* Typography */
6 font-family: sans-serif;
7 font-size: 16px;
8}
3.3 BEM 命名方法
- 使用 Block Element Modifier (BEM) 方法命名类名。
block__element--modifier形式的类名。
css
深色版本
1.block__element {
2 /* Styles for the element within the block */
3}
4
5.block__element--modifier {
6 /* Styles for the modified element */
7}
3.4 选择器优先级
- 尽量使用类选择器而不是 ID 选择器。
- 减少嵌套层次,避免过长的选择器链。
css
深色版本
1/* Good */
2.button {
3 /* Styles for the button */
4}
5
6/* Avoid */
7body .sidebar nav .menu .item.active {
8 /* Styles for the active menu item */
9}
4. JavaScript 代码规范
4.1 标准语法
- 使用 ES6+ 语法。
- 使用
const和let而不是var。 - 避免全局变量。
javascript
深色版本
1const greeting = 'Hello';
2
3function sayHello(name) {
4 console.log(`${greeting} ${name}!`);
5}
6
7sayHello('John');
4.2 函数声明
- 使用箭头函数简化函数声明。
- 对于匿名函数,始终使用括号包裹参数列表。
javascript
深色版本
1// Bad
2function add(a, b) { return a + b; }
3
4// Good
5const add = (a, b) => a + b;
4.3 变量和函数命名
- 使用驼峰式命名法(camelCase)。
- 使用有意义的变量和函数名。
javascript
深色版本
1function calculateTotalPrice(items) {
2 // ...
3}
4
5const totalPrice = calculateTotalPrice(cartItems);
4.4 异步编程
- 使用 async/await 处理异步操作。
- 避免使用回调地狱。
javascript
深色版本
1async function fetchData(url) {
2 try {
3 const response = await fetch(url);
4 const data = await response.json();
5 return data;
6 } catch (error) {
7 console.error(error);
8 }
9}
4.5 代码注释
- 在复杂的逻辑前添加注释。
- 使用 JSDoc 格式化注释。
javascript
深色版本
1/**
2 * Calculate the total price of an order.
3 *
4 * @param {Array} items - The list of items in the order.
5 * @returns {number} The total price.
6 */
7function calculateTotalPrice(items) {
8 // Implementation...
9}
5. 自动化工具
5.1 格式化工具
- 使用 Prettier 或 ESLint 的
fix功能自动格式化代码。
bash
深色版本
1npm install --save-dev prettier eslint
2npx eslint --fix src/*.js
5.2 静态代码分析
- 使用 ESLint 进行静态代码分析。
bash
深色版本
1npm install --save-dev eslint
2npx eslint src/*.js
5.3 测试工具
- 使用 Jest 或 Mocha 进行单元测试和集成测试。
bash
深色版本
1npm install --save-dev jest
2npx jest
6. 结论
遵循一套统一的代码规范对于提高代码质量、增强团队合作至关重要。本文概述了一些基本的前端代码规范,但具体的实践可能需要根据项目的需求和团队的习惯进行调整。建议每个团队都应该制定适合自己项目的代码规范,并通过工具自动化执行这些规范,以确保代码的一致性和质量。
相关文章:
前端开发中的代码规范
引言 在前端开发中,遵循良好的代码规范是非常重要的。这不仅能提高代码的可读性和可维护性,还能帮助团队成员更好地协作。本文将介绍一些前端开发中常用的代码规范,并探讨它们的重要性。 1. 代码规范的重要性 1.1 可读性 良好的代码规范可…...
WHAT - 远程控制机制
目录 1. 客户端-服务器架构2. 连接建立3. 数据传输4. 通信协议5. 安全性6. 远程控制软件示例7. 操作流程示例 远程控制别人的电脑涉及到技术和安全多个方面。其基本机制通常包括以下几个方面: 1. 客户端-服务器架构 远程控制软件通常采用客户端-服务器架构&#x…...
苹果手机录音功能在哪里?3招轻松打开手机录音
无论是记录重要的会议内容、捕捉生活中的美好瞬间,还是进行语言学习,苹果手机的录音功能都能提供极大的便利。那么,苹果手机录音功能在哪里呢?本文将为您揭示苹果手机录音功能的藏身之处,并通过3个简单步骤,…...
RCE之突破长度限制
我们在写webshell时通常会遇到过滤,但除了过滤之外还可能会有长度限制,这里就简单说一下关于RCE突破长度限制的技巧 突破16位 例如:PHP Eval函数参数限制在16个字符的情况下 ,如何拿到Webshell? <?php $param …...
Arduino控制带编码器的直流电机速度
Arduino DC Motor Speed Control with Encoder, Arduino DC Motor Encoder 作者 How to control dc motor with encoder:DC Motor with Encoder Arduino, Circuit Diagram:Driving the Motor with Encoder and Arduino:Control DC motor using Encoder feedback loop: How …...
LangChain与Elasticsearch向量数据库的完美结合
在过去的一年中,生成式 AI (Generative AI) 领域取得了显著的进展。许多新的服务和工具应运而生。其中,LangChain 已成为构建大语言模型 (LLM) 应用程序(例如检索增强生成 (RAG) 系统)最受欢迎的框架之一。该框架极大地简化了原型…...
element时间段选择器或时间选择器 只设置默认起始时间或者结束时间,不显示问题
element时间段选择器或时间选择器 只设置默认起始时间或者结束时间,不显示问题 <div v-for"(item,index) in [a,b]":key"item"><el-date-pickerv-if"b"v-model"value1[item]"type"datetimerange"value-…...
Vue 3 中,组件间传值有多种方式
在 Vue 3 中,组件间传值有多种方式,以下是几种常见的方式 父组件向子组件传值(通过 props):以下是几个父组件向子组件传值的示例:示例 1:传递字符串示例 2:传递数字示例 3࿱…...
前置(3):npm 和npx异同点
npm(Node Package Manager)和npx(Node Package Execute)是两个密切相关但用途不同的命令行工具,它们都是Node.js生态系统中的重要组成部分。 npm 用途:npm是Node.js的包管理器,主要用于安装、…...
笔记(day17)集合概述、List、Set、比较器
集合Collection 一.概述 集合可以理解为数据结构的封装,根据不同的特性及操作性能进行分类 二.继承体系 三.Collection中常用方法 collection是集合中的父类,所以collection中的方法是所有集合中都有的 集合中只能保存引用类型(Object),无法保存基本类型 Colle…...
C语言从头学45——I/O函数(二)
本文继续学习I/O函数,并延续前文的编号。 (三)、sscanf() 函数 sscanf() 函数与scanf() 有些相似,不同之处sscanf() 是从已有的字符串里面获取数据;这个函数也是定义在stdio.h中。 功能:处理已经输入到计算机中的字…...
Python爬虫——爬取bilibili中的视频
爬取bilibili中的视频 本次爬取,还是运用的是requests方法 首先进入bilibili官网中,选取你想要爬取的视频,进入视频播放页面,按F12,将网络中的名称栏向上拉找到第一个并点击,可以在标头中,找到…...
为什么企业电销要用外呼系统
电销要使用外呼系统的原因主要有以下几点: 一、提升工作效率 * **自动拨号**:外呼系统能够自动拨打客户电话,减少电销人员手动拨号的时间,让他们将更多精力集中在与客户的沟通和交流上。 * **数据记录与管理**:系统能…...
Keepalived + Nginx 主备容灾方案介绍
Keepalived Nginx 主备容灾方案介绍 *服务器**IP地址**角色*Srv01192.168.249.100 VIP: 192.168.249.110NginxKeepaliveSrv02192.168.249.101NginxKeepalive 概述 Keepalived 和 Nginx 的组合是一个常见的高可用性(HA)方案,尤其适用于 Web…...
PHP、JavaScript代码审计工具
软件截图 1. GPT代码审计需要挂代理,和充值才可以使用 2. 全局搜索关键字 3. 危险函数搜索 4. 自动化代码审计 报告 下载地址 GitHub - yuag/Code-audit: 代码审计代码审计. Contribute to yuag/Code-audit development by creating an account on GitHub....
《向量数据库指南》——Ray Data+Anyscale解锁价值评估新篇章
在钧瓷这一古老而深邃的艺术领域中,每一位资深藏家与投资人都深知,随着市场的不断发展与扩大,信息的处理与分析能力对于精准判断、高效收藏与投资决策至关重要。尤其是当我们面对庞大的钧瓷数据库、复杂的交易记录、以及不断更新的市场趋势时,传统的数据处理方式往往显得力…...
知识改变命运 数据结构【杨辉三角(顺序表)】
杨辉三角 首先我们可以发现题目中返回类型是一个 这其实返回的类似与一个二维数组 我们大概分析下题目根据画图可知,我们可以把每一行的元素进行存储,然后再把每一行存储起来,然后就实现了题目 代码: public List<List<…...
Docker三剑客之Docker Engine
Docker Engine作为Docker的核心组件,其功能和重要性不言而喻。以下是对Docker Engine的详细介绍,内容涵盖其定义、核心组件、工作原理、配置方法、安全性以及最佳实践等多个方面,但由于篇幅限制,我将尽量在6000字以内概括性地介绍…...
【Qt】信号与槽(下)
目录 自定义信号 带参数的信号和槽 信号和槽存在的意义 信号与槽的连接方式 一对一 一对多 多对一 意义 信号和槽的其他说明 信号和槽的断开 使用Lambda表达式定义槽函数 信号与槽的优缺点 优点: 松散耦合 缺点: 效率较低 自定义信号 自定义槽函数是非常关键的&a…...
多模态大语言模型(MMLLM)的现状、发展和潜力
1、大模型 随着ChatGPT流行,大模型技术正逐渐成为AI领域的热点。许多行业大佬纷纷投身于这一赛道,展示了大模型的独特魅力和广阔前景。 王慧文,前美团联合创始人,发起“AI英雄帖”。 李志飞,出门问问创始人࿰…...
手游刚开服就被攻击怎么办?如何防御DDoS?
开服初期是手游最脆弱的阶段,极易成为DDoS攻击的目标。一旦遭遇攻击,可能导致服务器瘫痪、玩家流失,甚至造成巨大经济损失。本文为开发者提供一套简洁有效的应急与防御方案,帮助快速应对并构建长期防护体系。 一、遭遇攻击的紧急应…...
7.4.分块查找
一.分块查找的算法思想: 1.实例: 以上述图片的顺序表为例, 该顺序表的数据元素从整体来看是乱序的,但如果把这些数据元素分成一块一块的小区间, 第一个区间[0,1]索引上的数据元素都是小于等于10的, 第二…...
循环冗余码校验CRC码 算法步骤+详细实例计算
通信过程:(白话解释) 我们将原始待发送的消息称为 M M M,依据发送接收消息双方约定的生成多项式 G ( x ) G(x) G(x)(意思就是 G ( x ) G(x) G(x) 是已知的)࿰…...
解锁数据库简洁之道:FastAPI与SQLModel实战指南
在构建现代Web应用程序时,与数据库的交互无疑是核心环节。虽然传统的数据库操作方式(如直接编写SQL语句与psycopg2交互)赋予了我们精细的控制权,但在面对日益复杂的业务逻辑和快速迭代的需求时,这种方式的开发效率和可…...
大模型多显卡多服务器并行计算方法与实践指南
一、分布式训练概述 大规模语言模型的训练通常需要分布式计算技术,以解决单机资源不足的问题。分布式训练主要分为两种模式: 数据并行:将数据分片到不同设备,每个设备拥有完整的模型副本 模型并行:将模型分割到不同设备,每个设备处理部分模型计算 现代大模型训练通常结合…...
在鸿蒙HarmonyOS 5中使用DevEco Studio实现录音机应用
1. 项目配置与权限设置 1.1 配置module.json5 {"module": {"requestPermissions": [{"name": "ohos.permission.MICROPHONE","reason": "录音需要麦克风权限"},{"name": "ohos.permission.WRITE…...
3-11单元格区域边界定位(End属性)学习笔记
返回一个Range 对象,只读。该对象代表包含源区域的区域上端下端左端右端的最后一个单元格。等同于按键 End 向上键(End(xlUp))、End向下键(End(xlDown))、End向左键(End(xlToLeft)End向右键(End(xlToRight)) 注意:它移动的位置必须是相连的有内容的单元格…...
Device Mapper 机制
Device Mapper 机制详解 Device Mapper(简称 DM)是 Linux 内核中的一套通用块设备映射框架,为 LVM、加密磁盘、RAID 等提供底层支持。本文将详细介绍 Device Mapper 的原理、实现、内核配置、常用工具、操作测试流程,并配以详细的…...
零基础在实践中学习网络安全-皮卡丘靶场(第九期-Unsafe Fileupload模块)(yakit方式)
本期内容并不是很难,相信大家会学的很愉快,当然对于有后端基础的朋友来说,本期内容更加容易了解,当然没有基础的也别担心,本期内容会详细解释有关内容 本期用到的软件:yakit(因为经过之前好多期…...
招商蛇口 | 执笔CID,启幕低密生活新境
作为中国城市生长的力量,招商蛇口以“美好生活承载者”为使命,深耕全球111座城市,以央企担当匠造时代理想人居。从深圳湾的开拓基因到西安高新CID的战略落子,招商蛇口始终与城市发展同频共振,以建筑诠释对土地与生活的…...
