除了 SEO 之外,HTML 语义化还有什么用?

news2024/11/13 15:21:13

每次碰到 HTML 语义化的话题,几乎 99% 的前端都会想到 SEO。那除了 SEO,你还会想到什么呢?好像没有了。。。

确实,当我们要做 SEO 的时候,往往第一时间都会想到优化 HTML 语义化,久而久之,大家都会以为 HTML 语义化只是为了 SEO。

那如果我不需要做 SEO,是不是就可以不需要在意 HTML 语义化了呢?

大部分人就是这么想的,所以都成为了 div boy。

但实际上,对于已经习惯 HTML 语义化的前端开发来说,编写语义化的 HTML 代码都跟 SEO 没什么关系,因为 HTML 语义化还有其他的作用。

让内容更易于被设备识别

SEO 主要是让我们的 HTML 代码更容易被搜索引擎识别。

但其实,不仅是只有搜索引擎需要识别 HTML 语法,还有很多设备或者应用都是兼容 HTML 标签语法的。

就拿我经常使用的编辑器应用 Typora 举例,假设我们有这样一段代码:

在这里插入图片描述

我们把 body 的代码 copy 一份,然后在 Typora 编辑器中粘贴,结果长这样:

在这里插入图片描述

可以看到,我们的 HTML 代码可以被 Typora 正确识别,并很好地展示出来。

而如果全是 div 会怎样呢?比如我把同样的代码,全部标签替换为 div,像这样:

在这里插入图片描述

再来一次,把这份代码粘贴到 Typora,就变成这样了:

在这里插入图片描述

先不管断句的问题(我是全局替换标签的)。可以看到,这份内容就非常难阅读了。

很多设备或应用不是浏览器,也不会内置一个浏览器,所以大部分设备或应用都不会兼容 CSS 语法。

但是大部分设备或应用都会兼容 HTML 语法,如果在编写 HTML 代码的时候保持语义化,我们的 HTML 文件就可以被正确识别,美观地展示出来,而且还会被正确地转译到其他语法,比如 Markdown。

让别人更容易阅读我们的 HTML 代码

我们的 HTML 代码除了给设备和应用识别之外,还有很重要的参与角色,那就是你的同事,他们也有可能需要维护这个页面。

因此,我们编写的代码不能只有自己看得懂,还需要让其他维护者能够比较容易看懂我们写的代码,这个就是我们常说的可维护性。

语义化的 HTML 代码就是提升 HTML 代码可维护性的一种有效手段

上面那个例子其实已经能够看到,如果我们的 HTML 代码全是 div,是非常难以阅读的。

可能你会觉得上面的例子还好,还能维护,那再举一个例子:

在这里插入图片描述

这是一个真实的代码,当我第一眼看到这个代码的时候,我内心是崩溃的。我唯一庆幸地是,还好我不用维护这份代码。

一份语义化的 HTML 代码,可以给维护者提供很多有用的信息:

  • 页面/组件结构:通过 headernavmainarticlesectionaside等标签可以让维护者快速找到页面的模块划分
  • 重点信息:通过 h 标签可以快速找到标题;通过 ul 快速找到列表等

比如下面这个站点的 HTML 结构,通过 HTML 代码就可以快速了解页面的结构划分。

在这里插入图片描述

让自己提升开发效率

除了可以帮助设备或应用识别有用的信息、可以让其他同事更好地维护代码之外,语义化的 HTML 还能让前端开发自己提升开发效率

当我们碰到一个复杂的项目,往往先从整体入手,把整体框架思考清楚,把核心流程捋顺,把模块划分清楚,这个工作就基本已经完成一半了,后面的开发就会变得顺利,开发效率自然就更高了。

开发复杂的页面也是一样的,编写语义化的 HTML 可以让我们更加专注于整个页面的结构和模块划分

从页面整体去思考,这个页面应该划分为多少个模块?

它们的关系是怎样的,是同层级的?还是嵌套的?

页面的交互是怎样的?要实现这个交互,哪些模块是有关联的?页面的模块要怎样划分才能更好地实现这些关联?

当我们把整个页面的 HTML 都写完了,那基本整体结构、模块划分、核心流程就基本胸有成竹了,剩下的 CSS 和 JS 都只是按部就班地填坑就好了。

因此,我会推荐前端开发首先把整个页面的 HTML 都写完,再写 CSS 和 JS。

很多前端同学不是这样开发页面的,他们喜欢一个模块一个模块去开发。

这种开发方式比较容易打断自己的思路,不能让自己的整体思路串联起来。

因为在实现某个模块的时候,我们难免会陷入一些细节内容,这些都是非常消耗心神的,我们不得不全神贯注去应付,这样就会打断我们的整体思路。

另一方面,如果还没想清楚核心流程、交互和模块划分,那我们很可能在开发组件 C 的时候,要去修改已经完成的组件 A 和组件 B,去适应一些组件之间关联的逻辑,这种修改和调整会导致我们的组件代码质量下降,容易出现问题,甚至会出现大面积的返工。

这些问题,都会影响我们的开发效率。

如果你有碰到这种问题,可以尝试我推荐的方法:练习语义化 HTML,先写完整个页面的 HTML 代码。

因此,编写语义化的 HTML,不管是对业务,还是对合作的开发者,还是对前端同学自己,都有非常大的作用。值得我们重视,并花费时间去练习的。

哦,对了,如果你想练习语义化的 HTML 的话,可以来之道前端的原创项目练习!

----------------【END】----------------

如果你是真心喜欢前端,并相信成长,想要提升自己的话,欢迎加入之道前端学习圈子。

戳这里 免费获取 之道前端的学习资料和专属服务。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2145330.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Linux下rpm方式部署mysql(国产化生产环境无联网服务器部署实操)

请放心观看,已在正式环境部署验证,流程无问题! 所用系统为国产化麒麟银河 aarch64系统,部署时间2024年9月份! #查看服务器信息 #涉及生产服务器,所以输出信息隐藏了一部分[rootecs-xxxxx hdata]# uname -…

五、CAN总线

目录 一、基础知识 1、can介绍 2、CAN硬件电路 3、CAN电平标准 4、CAN收发器芯片介绍 5、CAN帧格式 ① CAN帧种类 ② CAN数据帧 ③ CAN遥控帧​编辑 ④ 位填充 ⑤ 波形实例 6、接收方数据采样 ① 接收方数据采样遇到的问题 ② 位时序 ③ 硬同步 ④ 再同步 ⑤ 波…

【Delphi】实现接收系统拖动文件

在 Delphi 中,可以通过以下步骤来实现将文件夹中的文件拖动到 Form 上,并在拖动时显示文件类型的光标。我们可以利用 VCL 中的 Drag and Drop 机制来处理拖动操作,以及自定义光标显示。 以下是详细的步骤和代码示例: 实现步骤&a…

MATLAB系列05:自定义函数

MATLAB系列05:自定义函数 5. 自定义函数5.1 MATLAB函数简介5.2 在MATLAB中传递变量:按值传递机制5.3 选择性参数5.4 用全局内存分享数据5.5 在函数两次调用之间本地数据的存储5.6 函数的函数(function functions)5.7 子函数和私有函数5.8 总结 5. 自定义…

问题:WINCC 7.5 结构变量只能是内部变量吗?

问题:WINCC 7.5 结构变量只能是内部变量吗? 答案:不是的呢,你创建结构的时候可以选择外部变量的 如图:工控人加入PLC工业自动化精英社群 #WINCC 7.5##变量##结构##西门子工业支持中心#

css五种定位总结

在 CSS 中,定位(Positioning)主要有五种模式,每种模式的行为和特点不同,以下是 static、relative、absolute、fixed 和 sticky 五种定位方式的对比总结: 1. static(默认定位) 特性…

基于SpringBoot+Vue+MySQL的在线招投标系统

系统展示 用户前台界面 管理员后台界面 系统背景 在当今商业环境中,招投标活动是企业获取项目、资源及合作伙伴的重要途径。然而,传统招投标过程往往繁琐复杂,涉及众多文件交换、信息审核与沟通环节,不仅效率低下,还易…

【强化学习系列】Gym库使用——创建自己的强化学习环境2:拆解官方标准模型源码/规范自定义类+打包自定义环境

目录 一、 官方标准环境的获取与理解 二、根据官方环境源码修改自定义 1.初始化__init__() 2.重置环境 reset() 三、打包环境 1.注册与创建自定义环境 2.环境规范化 在本文的早些时候,曾尝试按照自己的想法搭建自定义的基于gym强化学习环境。 【强化学习系列】Gy…

什么是自然语言处理

自然语言处理(Natural Language Processing, NLP)是计算机科学领域与人工智能领域中的一个重要方向。它研究的是如何实现人与计算机之间使用自然语言进行有效通信的各种理论和方法。以下是关于自然语言处理的详细解释: 一、定义与概述 定义&…

字符编码发展史2 — ISO-8859-N

2.2. 第二个阶段 本地化 2.2.1. ANSI2.2.2. ISO/IEC 8859-N 2.2.2.1. 什么是ISO/IEC 8859-N?2.2.2.2. ISO 8859-1的编码表 上一篇《字符编码发展史1 — ASCII和EASCII》我们讲解了字符编码的起源ASCII和EASCII。本篇我们将继续讲解字符编码的第二个发展阶段中的ISO 8859-N。…

西门子200SMART全面讲解

200 SMART 全面讲解工控人加入PLC工业自动化精英社群 工控人加入PLC工业自动化精英社群

如何打造出强悍的谷歌搜索关键词优化方案揭密

搭建一个成功的关键词优化规划是促进网站在谷歌搜索引擎中取得更强曝光和流量重要。本文将为你揭露七个秘笈,帮助自己打造出强悍的谷歌搜索关键词优化方案。1.目标制定在进行优化关键词以前,必须明确自己的目标。你希望用谷歌搜索引擎获得更多浏览量和访…

C++速通LeetCode简单第5题-回文链表

解法1,堆栈O(n)简单法: /*** Definition for singly-linked list.* struct ListNode {* int val;* ListNode *next;* ListNode() : val(0), next(nullptr) {}* ListNode(int x) : val(x), next(nullptr) {}* ListNode(int x, ListN…

一款屏幕录制和视频剪辑软件Camtasia 2024

Camtasia 2024是一款屏幕录制和视频剪辑软件,软件提供了强大的屏幕录像、视频的剪辑和编辑、视频菜单制作、视频剧场、视频播放功能、视屏白板等功能,支持在任何颜色模式下轻松地记录屏幕动作,有需要的朋友快来下载吧! Camtasia 2…

1.pytest基础知识(默认的测试用例的规则以及基础应用)

一、pytest单元测试框架 1)什么是单元测试框架 单元测试是指再软件开发当中,针对软件的最小单位(函数,方法)进行正确性的检查测试。 2)单元测试框架 java:junit和testing python:un…

电脑怎么禁用软件?5个方法速成,小白必入!

电脑禁用软件的方法多种多样,以下是五种简单易行的方法. 适合不同需求的用户,特别是电脑小白。 1. 使用任务管理器禁用启动项 操作步骤:按下“Ctrl Shift Esc”组合键,打开任务管理器。 切换到“启动”选项卡,找到…

计算机毕业设计 家电销售展示平台的设计与实现 Java实战项目 附源码+文档+视频讲解

博主介绍:✌从事软件开发10年之余,专注于Java技术领域、Python人工智能及数据挖掘、小程序项目开发和Android项目开发等。CSDN、掘金、华为云、InfoQ、阿里云等平台优质作者✌ 🍅文末获取源码联系🍅 👇🏻 精…

【活动预告】平陆县2024年“我有拿手戏”群众文艺大展演

庆祝中华人民共和国成立75周年 7天10场演出3场展览 文化给您精彩 “礼赞新中国逐梦新时代” 【活动预告】 平陆县“庆祝中华人民共和国成立75周年”文艺晚会暨“我有拿手戏”群众文艺大展演 7天10场演出3场展览给您精彩 01 平陆县2024年“庆祝中华人民共和国成立75周年”…

小阿轩yx-案例:Prometheus监控kubernetes环境构建

小阿轩yx-案例:Prometheus监控kubernetes环境构建 前言 传统架构中比较流行的监控工具有 Zabbix、Nagios 等,这些监控工具对于 Kubernetes 这类云平台的监控不是很友好,特别是当 Kubernetes 集群中有了成千上万的容器后更是如此 基于 kube…

662. 二叉树最大宽度 BFS 力扣

662. 二叉树最大宽度 已解答 中等 相关标签 相关企业 给你一棵二叉树的根节点 root ,返回树的 最大宽度 。 树的 最大宽度 是所有层中最大的 宽度 。 每一层的 宽度 被定义为该层最左和最右的非空节点(即,两个端点)之间的长…