【HTML】【面试提问】HTML面试提问总结
第一章 HTML基础相关提问
1.1 HTML基本概念
1.1.1 什么是HTML
HTML 即超文本标记语言(HyperText Markup Language)😎,它是用于创建网页的标准标记语言。简单来说,HTML 就像是搭建房屋的砖块🧱,通过各种标签来描述网页的结构和内容。比如,用 <p>
标签表示段落,用 <h1>
- <h6>
标签表示不同级别的标题。它不是一种编程语言,而是一种标记语言,通过各种标签告诉浏览器如何显示网页上的内容。
1.1.2 HTML的发展历程
- 1991年:蒂姆·伯纳斯 - 李(Tim Berners - Lee)首次提出 HTML 概念,当时只有少量简单的标签,主要用于在互联网上共享科学信息📚。
- 1993年:HTML 1.0 诞生,但并未正式作为标准发布,只是一个草案,主要用于文本和简单图像的展示。
- 1995年:HTML 2.0 成为第一个正式标准,增加了表单元素等功能,使得网页可以实现用户交互,例如用户可以在表单中输入信息。
- 1997年:HTML 3.2 发布,它引入了表格、数学公式等元素,丰富了网页的展示形式,让网页可以更规整地显示数据。
- 1999年:HTML 4.01 发布,这是一个广泛使用的版本,它增强了样式和脚本的支持,使得网页的设计更加灵活和美观。
- 2014年:HTML5 正式成为标准,它带来了许多新特性,如视频
<video>
和音频<audio>
标签、画布<canvas>
元素、地理定位等,大大扩展了网页的功能和应用范围。
1.1.3 HTML的作用和应用场景
1. 作用
HTML 的主要作用是构建网页的结构和内容。它就像网页的骨架,决定了网页上各个元素的位置和布局。通过不同的标签组合,可以将文字、图片、视频等元素有序地排列在网页上,让用户能够清晰地浏览和获取信息。
2. 应用场景
- 个人网站:用于展示个人的信息、作品、博客等内容,让他人更好地了解自己。比如个人的摄影作品展示网站,通过 HTML 可以将照片有序地排列并配上文字说明。
- 企业官网:宣传企业的形象、产品和服务,是企业在互联网上的重要窗口。企业可以通过 HTML 展示产品的介绍、案例、联系方式等信息。
- 电子商务网站:用于展示商品信息、购物车、结算页面等,实现商品的在线销售。像淘宝、京东等电商平台的商品详情页就是用 HTML 构建的。
- 新闻网站:呈现新闻内容、图片和视频,方便用户浏览新闻资讯。各大新闻网站的文章页面都是基于 HTML 来展示的。
1.2 HTML文档结构
1.2.2 文档类型声明(DOCTYPE)的作用和不同类型
1. 作用
DOCTYPE 声明位于 HTML 文档的第一行,它的作用是告诉浏览器当前文档使用的 HTML 版本。这有助于浏览器以正确的方式解析和渲染网页。如果没有 DOCTYPE 声明,浏览器可能会进入“怪异模式”,在这种模式下,不同浏览器对网页的渲染可能会存在差异,导致网页显示不一致。
2. 不同类型
- HTML 5:
<!DOCTYPE html>
,这是 HTML 5 的文档类型声明,也是目前最常用的声明方式,它非常简洁,适用于所有现代浏览器。 - HTML 4.01 Strict:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
,这种声明方式要求文档严格遵循 HTML 4.01 的标准,不允许使用一些不规范的标签和属性。 - HTML 4.01 Transitional:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
,它允许使用一些过渡性的标签和属性,适用于那些需要兼容旧版浏览器的网页。
1.2.3 HTML头部(head)和主体(body)的区别和用途
1. 区别
- 位置:
<head>
标签位于 HTML 文档的开头部分,而<body>
标签紧随<head>
标签之后,包含了网页的可见内容。 - 内容:
<head>
标签中包含的是关于网页的元数据,如网页标题、字符编码、引入的外部文件等,这些内容不会直接显示在网页上;而<body>
标签中包含的是网页的实际内容,如文本、图片、链接等,会在浏览器中显示出来。
2. 用途
- 头部(head)
- 设置网页标题:使用
<title>
标签,网页标题会显示在浏览器的标题栏或标签页上,方便用户识别网页。 - 指定字符编码:使用
<meta charset="UTF-8">
标签,确保网页能够正确显示各种语言的字符。 - 引入外部文件:可以使用
<link>
标签引入外部的 CSS 文件来设置网页的样式,使用<script>
标签引入外部的 JavaScript 文件来实现网页的交互功能。
- 设置网页标题:使用
- 主体(body)
- 显示文本内容:使用
<p>
、<h1>
-<h6>
等标签来展示文字信息。 - 插入图片:使用
<img>
标签插入图片,让网页更加生动。 - 创建链接:使用
<a>
标签创建超链接,实现网页之间的跳转。
- 显示文本内容:使用
1.3 HTML标签
1.3.1 常用HTML标签有哪些
- 标题标签:
<h1>
-<h6>
,用于表示不同级别的标题,<h1>
是最高级别的标题,字体最大,<h6>
是最低级别的标题,字体最小。例如:
<h1>这是一级标题</h1>
<h2>这是二级标题</h2>
- 段落标签:
<p>
,用于表示段落,将文本内容进行分段显示。例如:
<p>这是一个段落的内容。</p>
- 链接标签:
<a>
,用于创建超链接,可以链接到其他网页、文件或同一网页的不同位置。例如:
<a href="https://www.example.com">这是一个链接</a>
- 图片标签:
<img>
,用于在网页中插入图片。需要使用src
属性指定图片的路径。例如:
<img src="image.jpg" alt="这是一张图片">
- 列表标签:
- 无序列表:
<ul>
和<li>
,用于创建无序列表,列表项前会显示圆点。例如:
- 无序列表:
<ul><li>列表项1</li><li>列表项2</li>
</ul>
- **有序列表**:`<ol>` 和 `<li>`,用于创建有序列表,列表项前会显示数字序号。例如:
<ol><li>列表项1</li><li>列表项2</li>
</ol>
1.3.2 标签的分类(块级标签、内联标签等)
1. 块级标签
块级标签会独占一行,并且可以设置宽度和高度。常见的块级标签有 <div>
、<p>
、<h1>
- <h6>
、<ul>
、<ol>
等。例如:
<div style="background-color: lightblue; width: 200px; height: 100px;">这是一个 div 块级元素</div>
<div>
标签将占据一行,并且可以通过 CSS 设置其背景颜色、宽度和高度。
2. 内联标签
内联标签不会独占一行,而是会在同一行内显示,并且宽度和高度由内容决定,不能直接设置。常见的内联标签有 <a>
、<img>
、<span>
等。例如:
<a href="#">这是一个链接</a>
<a>
标签会和其他内联元素在同一行显示,不会换行。
3. 内联块标签
内联块标签结合了块级标签和内联标签的特点,它不会独占一行,但可以设置宽度和高度。常见的内联块标签有 <input>
、<button>
等。例如:
<input type="text" value="这是一个输入框">
<input>
标签可以在同一行内显示,并且可以设置其宽度和高度。
1.3.3 标签的属性有什么作用及常见属性举例
1. 作用
标签的属性用于为标签提供额外的信息,控制标签的行为和外观。不同的标签有不同的属性,通过设置属性可以实现各种不同的效果。
2. 常见属性举例
href
属性:用于<a>
标签,指定链接的目标地址。例如:
<a href="https://www.example.com">点击这里访问示例网站</a>
src
属性:用于<img>
标签,指定图片的路径。例如:
<img src="image.jpg" alt="这是一张图片">
alt
属性:用于<img>
标签,当图片无法显示时,会显示alt
属性中的文本,同时也有助于搜索引擎理解图片内容。id
属性:用于为标签指定一个唯一的标识符,在 CSS 和 JavaScript 中可以通过id
来选择和操作该元素。例如:
<div id="myDiv">这是一个有 id 的 div 元素</div>
class
属性:用于为标签指定一个或多个类名,通过类名可以为多个元素应用相同的样式。例如:
<p class="myClass">这是一个有类名的段落</p>
style
属性:用于直接在标签中设置 CSS 样式。例如:
<p style="color: red; font-size: 20px;">这是一个设置了样式的段落</p>
第二章 HTML文本与排版提问
2.1 文本标签
2.1.1 标题标签(h1 - h6)的使用和区别
在 HTML 中,标题标签用于定义网页中的标题,一共有 6 个级别,从 <h1>
到 <h6>
,<h1>
表示最重要的主标题,<h6>
表示最不重要的子标题。下面是它们的具体使用和区别:
- 字体大小:
<h1>
字体最大,随着标题级别的增加,字体逐渐变小。例如:
<h1>这是一级标题</h1>
<h2>这是二级标题</h2>
<h3>这是三级标题</h3>
<h4>这是四级标题</h4>
<h5>这是五级标题</h5>
<h6>这是六级标题</h6>
在浏览器中显示时,一级标题会比二级标题大,以此类推😎。
- 重要性:搜索引擎会根据标题标签来判断页面的结构和内容的重要性,
<h1>
通常被认为是页面中最重要的内容,所以一个页面一般只使用一个<h1>
标签,用于突出页面的主题🧐。
2.1.2 段落标签(p)的特性和应用
<p>
标签用于定义 HTML 中的段落。它有以下特性和应用场景:
- 自动换行:当使用
<p>
标签包裹文本时,浏览器会自动在段落前后添加换行,使文本以段落的形式呈现。例如:
<p>这是一个段落,它包含了一些文本内容。当文本过长时,浏览器会自动进行换行处理。</p>
<p>这是另一个段落,与上一个段落之间会有一定的间距。</p>
-
段落间距:浏览器默认会在段落之间添加一定的垂直间距,使页面看起来更清晰易读😃。
-
应用场景:在网页中,我们通常使用
<p>
标签来组织文章、故事、说明等文本内容。
2.1.3 文本格式化标签(b、i、u等)的功能
HTML 提供了一些文本格式化标签,用于改变文本的外观,下面是一些常见标签的功能:
<b>
标签:用于将文本加粗显示,强调文本内容,但不表示语义上的重要性。例如:
<p>这是一段普通文本,<b>这里的文本被加粗了</b>。</p>
<i>
标签:用于将文本以斜体显示,通常用于表示一些术语、书籍名称、外语词汇等。例如:
<p>在英语中,<i>“apple”</i> 表示苹果。</p>
<u>
标签:用于给文本添加下划线,不过在现代网页设计中,下划线通常用于表示超链接,所以使用时要谨慎。例如:
<p>这是一段普通文本,<u>这里的文本被添加了下划线</u>。</p>
2.2 列表标签
2.2.1 无序列表(ul)和有序列表(ol)的创建方法
- 无序列表(
<ul>
):无序列表使用<ul>
标签定义,列表项使用<li>
标签定义。列表项前会显示一个项目符号(通常是实心圆点)。例如:
<ul><li>苹果</li><li>香蕉</li><li>橙子</li>
</ul>
在浏览器中显示如下:
-
苹果
-
香蕉
-
橙子
-
有序列表(
<ol>
):有序列表使用<ol>
标签定义,列表项同样使用<li>
标签定义。列表项前会显示一个序号(通常是数字)。例如:
<ol><li>第一步:打开电脑</li><li>第二步:启动浏览器</li><li>第三步:访问网页</li>
</ol>
在浏览器中显示如下:
- 第一步:打开电脑
- 第二步:启动浏览器
- 第三步:访问网页
2.2.2 列表项(li)的嵌套使用
列表项可以进行嵌套,即在一个列表项中可以再包含另一个列表。例如,在无序列表中嵌套有序列表:
<ul><li>水果<ol><li>苹果</li><li>香蕉</li></ol></li><li>蔬菜<ol><li>胡萝卜</li><li>西兰花</li></ol></li>
</ul>
这样可以创建出更复杂的列表结构,使内容的组织更加清晰🧐。
2.2.3 自定义列表(dl、dt、dd)的应用场景
自定义列表由 <dl>
标签定义,<dt>
标签用于定义列表项的标题,<dd>
标签用于定义列表项的描述。它的应用场景通常是用于展示术语和定义、问题和答案等。例如:
<dl><dt>HTML</dt><dd>超文本标记语言,用于创建网页的结构。</dd><dt>CSS</dt><dd>层叠样式表,用于美化网页的外观。</dd>
</dl>
在浏览器中显示如下:
HTML
超文本标记语言,用于创建网页的结构。
CSS
层叠样式表,用于美化网页的外观。
2.3 排版布局
2.3.1 如何实现文本的对齐方式(左对齐、右对齐等)
在 HTML 中,可以使用 CSS 来实现文本的对齐方式。以下是几种常见的对齐方式及其实现方法:
- 左对齐:默认情况下,文本是左对齐的。如果需要显式设置左对齐,可以使用
text-align: left;
。例如:
<p style="text-align: left;">这是左对齐的文本。</p>
- 右对齐:使用
text-align: right;
可以将文本右对齐。例如:
<p style="text-align: right;">这是右对齐的文本。</p>
- 居中对齐:使用
text-align: center;
可以将文本居中对齐。例如:
<p style="text-align: center;">这是居中对齐的文本。</p>
2.3.2 如何进行页面的分栏布局
在 HTML 中,可以使用 CSS 的 column
属性来实现页面的分栏布局。例如,将一段文本分成两栏显示:
<style>.column-container {column-count: 2;column-gap: 20px;}
</style>
<div class="column-container"><p>这是一段需要进行分栏布局的文本。这是一段需要进行分栏布局的文本。这是一段需要进行分栏布局的文本。这是一段需要进行分栏布局的文本。</p>
</div>
在上面的代码中,column-count
属性指定了分栏的数量,column-gap
属性指定了栏与栏之间的间距😉。
2.3.3 空格和换行在HTML中的处理方式
在 HTML 中,连续的多个空格会被合并为一个空格,换行符也会被忽略。如果需要显示多个连续的空格,可以使用
实体,它表示一个不间断的空格。例如:
<p>这是一段 带有多个空格的文本。</p>
如果需要换行,可以使用 <br>
标签。例如:
<p>这是第一行文本。<br>这是第二行文本。</p>
这样就可以在 HTML 中实现空格和换行的效果啦😎。
第三章 HTML图像与多媒体提问
3.1 图像标签
3.1.1 img 标签的使用方法和必要属性
1. 使用方法
<img>
标签用于在 HTML 页面中插入图像。它是一个自闭合标签,也就是说不需要单独的结束标签。基本的语法格式如下:
<img src="image.jpg" alt="这是一张示例图片">
在上面的代码中,<img>
标签就会在页面上显示指定的图像。
2. 必要属性
- src 属性:这是
<img>
标签最重要的属性,它指定了图像的源文件路径。可以是本地文件的路径,也可以是网络上的图片地址。例如:
<!-- 本地图片 -->
<img src="local-image.jpg">
<!-- 网络图片 -->
<img src="https://example.com/image.jpg">
- alt 属性:当图像无法正常显示时,
alt
属性的值会作为替代文本显示出来。这对于屏幕阅读器等辅助设备非常有用,能帮助视障人士理解页面内容。比如:
<img src="nonexistent-image.jpg" alt="这里应该显示一张美丽的风景图">
3.1.2 图像的路径设置(相对路径和绝对路径)
1. 相对路径
相对路径是相对于当前 HTML 文件的位置来指定图像的位置。常见的相对路径有以下几种情况:
- 同一目录下:如果图像和 HTML 文件在同一目录下,直接写图像的文件名即可。例如:
<!-- HTML 文件和 image.jpg 在同一目录 -->
<img src="image.jpg">
- 子目录下:如果图像在 HTML 文件所在目录的子目录中,需要指定子目录的名称。比如图像在
images
子目录下:
<img src="images/image.jpg">
- 上级目录:如果图像在 HTML 文件所在目录的上级目录,可以使用
../
来表示上级目录。例如:
<!-- 图像在上级目录 -->
<img src="../image.jpg">
2. 绝对路径
绝对路径是指完整的文件路径,包括协议、域名等信息。通常用于引用网络上的图片。例如:
<img src="https://www.example.com/images/image.jpg">
3.1.3 图像的大小调整和缩放
1. 使用 width 和 height 属性
可以通过 <img>
标签的 width
和 height
属性来调整图像的大小。这两个属性的值可以是像素值,也可以是百分比。例如:
<!-- 设置固定宽度和高度 -->
<img src="image.jpg" width="200" height="150">
<!-- 设置宽度为父元素的 50% -->
<img src="image.jpg" width="50%">
需要注意的是,如果只设置了 width
或 height
中的一个属性,图像会按比例缩放。
2. 使用 CSS 进行缩放
也可以使用 CSS 来调整图像的大小,这种方式更加灵活。例如:
<style>.resized-image {width: 300px;height: auto; /* 保持图像的比例 */}
</style>
<img src="image.jpg" class="resized-image">
3.2 多媒体标签
3.2.1 video 标签的使用,包括视频的嵌入和控制
1. 视频的嵌入
<video>
标签用于在 HTML 页面中嵌入视频。基本的语法格式如下:
<video src="video.mp4" controls></video>
在上面的代码中,src
属性指定了视频文件的路径,controls
属性会显示视频的控制条,让用户可以播放、暂停、调整音量等。
2. 视频的控制
除了 controls
属性,<video>
标签还有其他一些属性可以用于控制视频的播放。例如:
- autoplay:视频页面加载完成后自动播放。
<video src="video.mp4" autoplay></video>
- loop:视频播放完后自动循环播放。
<video src="video.mp4" loop></video>
- muted:视频静音播放。
<video src="video.mp4" muted></video>
3.2.2 audio 标签的使用,包括音频的播放和设置
1. 音频的播放
<audio>
标签用于在 HTML 页面中嵌入音频。基本的语法格式如下:
<audio src="audio.mp3" controls></audio>
和 <video>
标签类似,src
属性指定音频文件的路径,controls
属性显示音频的控制条。
2. 音频的设置
<audio>
标签也有一些属性可以用于控制音频的播放,例如:
- autoplay:音频页面加载完成后自动播放。
<audio src="audio.mp3" autoplay></audio>
- loop:音频播放完后自动循环播放。
<audio src="audio.mp3" loop></audio>
- muted:音频静音播放。
<audio src="audio.mp3" muted></audio>
3.2.3 多媒体文件的格式支持和兼容性问题
1. 常见的多媒体文件格式
- 视频格式:常见的视频格式有 MP4、WebM、OGG 等。不同的浏览器对这些格式的支持情况有所不同。例如,MP4 是目前最广泛支持的视频格式,几乎所有的现代浏览器都支持。
- 音频格式:常见的音频格式有 MP3、WAV、OGG 等。MP3 是最流行的音频格式,兼容性也比较好。
2. 兼容性问题的解决方法
为了确保多媒体文件在不同的浏览器中都能正常播放,可以提供多种格式的文件。可以使用 <source>
标签来实现这一点。例如:
<video controls><source src="video.mp4" type="video/mp4"><source src="video.webm" type="video/webm">您的浏览器不支持视频播放。
</video>
在上面的代码中,浏览器会尝试依次加载不同格式的视频文件,直到找到一个支持的格式。如果所有格式都不支持,就会显示提示信息。同样的方法也适用于音频文件:
<audio controls><source src="audio.mp3" type="audio/mpeg"><source src="audio.ogg" type="audio/ogg">您的浏览器不支持音频播放。
</audio>
第四章 HTML链接与表单提问
4.1 链接标签
4.1.1 a标签的基本用法和属性
1. 基本用法
<a>
标签是 HTML 中用于创建超链接的标签,它可以让用户从一个页面跳转到另一个页面,或者跳转到同一页面的不同位置。其基本语法如下:
<a href="目标地址">链接文本</a>
例如:
<a href="https://www.example.com">访问示例网站</a>
这里,当用户点击“访问示例网站”这个文本时,就会跳转到 https://www.example.com
这个网站。
2. 常见属性
- href:这是
<a>
标签最重要的属性,用于指定链接的目标地址。可以是一个完整的 URL,也可以是相对路径。 - target:用于指定链接的打开方式。常见的值有:
_self
:默认值,在当前窗口中打开链接。_blank
:在新窗口中打开链接。例如:
<a href="https://www.example.com" target="_blank">在新窗口打开示例网站</a>
- title:为链接提供额外的信息,当鼠标悬停在链接上时,会显示该属性的值。例如:
<a href="https://www.example.com" title="这是一个示例网站">访问示例网站</a>
4.1.2 内部链接和外部链接的创建
1. 内部链接
内部链接是指在同一网站内不同页面之间的链接。使用相对路径来指定目标地址。
例如,假设网站的目录结构如下:
website/
├── index.html
├── about.html
在 index.html
中创建一个指向 about.html
的链接:
<a href="about.html">关于我们</a>
2. 外部链接
外部链接是指指向其他网站的链接,需要使用完整的 URL 作为 href
属性的值。
例如:
<a href="https://www.google.com">访问 Google</a>
4.1.3 锚点链接的实现和应用
1. 实现方法
锚点链接可以让用户在同一页面内快速跳转到指定的位置。实现锚点链接需要两步:
- 首先,在目标位置添加一个带有
id
属性的元素,例如:
<h2 id="section1">第一部分</h2>
- 然后,在需要创建链接的地方,使用
href
属性指向该id
,并在id
前面加上#
符号,例如:
<a href="#section1">跳转到第一部分</a>
2. 应用场景
锚点链接常用于长页面中,方便用户快速定位到感兴趣的内容。例如,在一个产品介绍页面中,可以在页面顶部创建一个目录,每个目录项都是一个锚点链接,指向页面中相应的产品介绍部分。
4.2 表单标签
4.2.1 form标签的作用和基本属性
1. 作用
<form>
标签用于创建 HTML 表单,它是用户与网站进行交互的重要方式。表单可以包含各种表单元素,如文本框、下拉框、按钮等,用户可以在表单中输入信息,然后将这些信息提交给服务器进行处理。
2. 基本属性
- action:指定表单数据提交的目标 URL,即表单数据将被发送到哪个服务器地址进行处理。例如:
<form action="https://www.example.com/submit"><!-- 表单元素 -->
</form>
- method:指定表单数据的提交方式,常见的值有
get
和post
。get
:将表单数据附加在 URL 后面,适用于少量数据的提交,例如搜索表单。post
:将表单数据放在 HTTP 请求的主体中,适用于大量数据的提交,例如注册表单。
<form action="https://www.example.com/submit" method="post"><!-- 表单元素 -->
</form>
4.2.2 常见表单元素(input、select、textarea等)的使用
1. input 元素
<input>
元素是最常用的表单元素,它可以根据 type
属性的不同呈现不同的输入方式。常见的 type
值有:
- text:用于输入单行文本。例如:
<input type="text" name="username" placeholder="请输入用户名">
- password:用于输入密码,输入的内容会被隐藏。例如:
<input type="password" name="password" placeholder="请输入密码">
- radio:用于创建单选按钮。例如:
<input type="radio" name="gender" value="male"> 男
<input type="radio" name="gender" value="female"> 女
- checkbox:用于创建复选框。例如:
<input type="checkbox" name="hobbies" value="reading"> 阅读
<input type="checkbox" name="hobbies" value="sports"> 运动
- submit:用于创建提交按钮,点击该按钮会将表单数据提交到
action
指定的 URL。例如:
<input type="submit" value="提交">
2. select 元素
<select>
元素用于创建下拉框,用户可以从多个选项中选择一个。例如:
<select name="city"><option value="beijing">北京</option><option value="shanghai">上海</option><option value="guangzhou">广州</option>
</select>
3. textarea 元素
<textarea>
元素用于输入多行文本。例如:
<textarea name="message" rows="5" cols="30" placeholder="请输入留言内容"></textarea>
4.2.3 表单的提交和处理方式
1. 提交方式
- 使用 submit 按钮:在表单中添加一个
type="submit"
的<input>
元素或<button>
元素,点击该按钮即可提交表单。例如:
<form action="https://www.example.com/submit" method="post"><input type="text" name="username" placeholder="请输入用户名"><input type="submit" value="提交">
</form>
- 使用 JavaScript:可以使用 JavaScript 代码来触发表单的提交事件。例如:
<form id="myForm" action="https://www.example.com/submit" method="post"><input type="text" name="username" placeholder="请输入用户名">
</form>
<button onclick="document.getElementById('myForm').submit()">提交表单</button>
2. 处理方式
表单数据提交到服务器后,服务器需要对这些数据进行处理。常见的处理方式有:
- 后端编程语言处理:如 Python(Flask、Django)、Java(Spring)、Node.js(Express)等。服务器接收到表单数据后,可以将数据存储到数据库中,或者进行其他业务逻辑处理。
- API 接口处理:可以将表单数据发送到一个 API 接口,API 接口会对数据进行验证和处理,并返回相应的结果。
🎯 总结:HTML 中的链接标签和表单标签是非常重要的元素,它们为网页提供了丰富的交互功能。通过合理使用这些标签,可以让用户更方便地浏览网页和与网站进行交互。
第五章 HTML语义化与兼容性提问
5.1 语义化标签
5.1.1 语义化标签(header、nav、article等)的作用和优势
1. 作用
header
标签:就像是一本书的封面和前言部分📖,它通常包含页面或页面中某个区域的介绍性内容,比如网站的标题、标志、搜索框等。例如在一个新闻网站中,header
可能包含网站的名称、导航栏和搜索功能。nav
标签:类似于城市中的交通指示牌🚥,它专门用于放置导航链接,帮助用户在网站的不同页面之间进行跳转。比如在电商网站中,nav
可能包含“首页”“商品分类”“购物车”等链接。article
标签:可以看作是一篇独立的文章📰,它包含了完整的、可以独立存在的内容,如博客文章、新闻报道等。每一篇article
都应该有自己的标题和正文。section
标签:如同书籍中的章节📚,它用于对页面内容进行分块,每个section
通常有自己的标题,用于组织相关的内容。例如在一个产品介绍页面中,不同的产品特性可以用不同的section
来展示。aside
标签:就像文章旁边的注释或侧边栏📋,它包含的内容与页面的主要内容相关,但又可以独立存在,比如广告、推荐文章等。footer
标签:好比一本书的版权页和后记📕,它通常包含页面的底部信息,如版权声明、联系方式、网站地图等。
2. 优势
- 提高代码可读性:语义化标签让代码更具逻辑性,开发者可以一眼看出页面的结构,就像看一份清晰的地图🗺️,便于团队协作和后期维护。
- 方便屏幕阅读器等辅助设备理解内容:对于视力障碍者使用的屏幕阅读器来说,语义化标签能够准确地传达页面的结构和内容,使他们更好地访问网站,体现了网站的无障碍性♿。
- 利于搜索引擎理解页面内容:搜索引擎可以通过语义化标签更准确地判断页面的主题和内容,从而提高网站在搜索结果中的排名📈。
5.1.2 如何正确使用语义化标签进行页面结构设计
1. 整体布局
- 首先,使用
html
标签作为整个页面的根元素,然后在其中嵌套head
和body
标签。head
标签用于包含页面的元数据,如标题、字符编码等;body
标签用于包含页面的可见内容。 - 在
body
标签中,最顶部使用header
标签来放置网站的标题、导航栏等信息。例如:
<header><h1>我的网站</h1><nav><ul><li><a href="#">首页</a></li><li><a href="#">关于我们</a></li><li><a href="#">联系我们</a></li></ul></nav>
</header>
- 接着,使用
main
标签来包含页面的主要内容。main
标签表示页面的核心内容,每个页面应该只有一个main
标签。例如:
<main><article><h2>文章标题</h2><p>文章内容...</p></article>
</main>
- 在
main
标签中,可以根据需要使用section
标签对内容进行分块,使用article
标签来表示独立的文章。 - 页面的侧边栏可以使用
aside
标签来实现。例如:
<aside><h3>推荐文章</h3><ul><li><a href="#">推荐文章1</a></li><li><a href="#">推荐文章2</a></li></ul>
</aside>
- 最后,在页面的底部使用
footer
标签来放置版权信息等内容。例如:
<footer><p>版权所有 © 2024</p>
</footer>
2. 注意事项
- 每个语义化标签都有其特定的用途,不要滥用。例如,不要将
article
标签用于一些不独立的内容,如评论列表。 - 标签的嵌套要符合逻辑,例如
header
和footer
通常是在页面或section
、article
的外层使用。
5.1.3 语义化标签对搜索引擎优化(SEO)的影响
1. 利于搜索引擎理解页面内容
搜索引擎的爬虫在抓取网页时,语义化标签能够清晰地告诉它们页面的结构和各个部分的内容。例如,article
标签明确表示这是一篇独立的文章,搜索引擎可以更容易地识别文章的标题、正文等内容,从而更准确地对文章进行索引和分类📑。
2. 提高关键词相关性
语义化标签中的标题标签(如 h1
、h2
等)通常包含页面的重要关键词。搜索引擎会认为这些标题中的关键词是页面的核心内容,从而提高页面在相关关键词搜索结果中的排名。例如,一个关于“旅游攻略”的页面,使用 h1
标签包含“旅游攻略”这个关键词,会让搜索引擎更重视这个关键词,提高页面在“旅游攻略”搜索结果中的曝光率🌟。
3. 增强用户体验,间接影响 SEO
语义化标签使页面结构清晰,用户在浏览页面时能够更快地找到自己需要的信息,提高了用户体验。而用户体验是搜索引擎排名的重要因素之一,良好的用户体验会让用户在页面上停留的时间更长,降低跳出率,从而间接提高页面的 SEO 效果👍。
5.2 兼容性问题
5.2.1 不同浏览器对 HTML 标签和属性的支持差异
1. 标签支持差异
- 一些较新的 HTML5 标签,如
header
、nav
、article
等,在旧版本的浏览器(如 IE8 及以下)中可能不被支持。在这些浏览器中,这些标签会被当作普通的div
标签处理,导致页面布局可能出现问题。 - 某些特殊的标签,如
canvas
标签用于绘制图形,在一些较旧的浏览器中可能不支持,或者支持的功能有限。
2. 属性支持差异
- 不同浏览器对 HTML 标签的属性支持也存在差异。例如,
input
标签的placeholder
属性,在一些旧版本的浏览器中可能不支持,导致输入框中无法显示提示信息。 video
和audio
标签的属性,如controls
、autoplay
等,在不同浏览器中的表现可能不同。有些浏览器可能不支持某些属性,或者对属性的实现方式有所不同。
5.2.2 如何解决 HTML 在不同浏览器中的显示问题
1. 使用 HTML 重置样式
- 不同浏览器对 HTML 元素的默认样式有不同的设置,使用 HTML 重置样式可以消除这些差异。常见的重置样式表有 Normalize.css 和 Reset.css。例如,在 HTML 文件中引入 Normalize.css:
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/normalize/8.0.1/normalize.min.css">
2. 渐进增强和优雅降级
- 渐进增强:从最基本的功能开始,为所有浏览器提供基本的页面内容和功能,然后针对支持高级特性的浏览器逐步添加额外的样式和功能。例如,对于
canvas
标签,先判断浏览器是否支持canvas
,如果支持则添加绘制图形的功能;如果不支持,则提供替代内容。
<canvas id="myCanvas">您的浏览器不支持 canvas 标签,请升级浏览器。
</canvas>
<script>var canvas = document.getElementById('myCanvas');if (canvas.getContext) {var ctx = canvas.getContext('2d');// 绘制图形的代码}
</script>
- 优雅降级:先为支持高级特性的浏览器提供完整的功能和样式,然后针对不支持的浏览器进行适当的降级处理,确保页面仍然可以正常使用。
3. 使用浏览器前缀
- 一些 CSS3 属性在不同浏览器中需要使用不同的前缀来支持。例如,
border-radius
属性在不同浏览器中的写法如下:
.my-element {-webkit-border-radius: 10px; /* Safari 和 Chrome */-moz-border-radius: 10px; /* Firefox */border-radius: 10px; /* 标准写法 */
}
5.2.3 HTML5 的兼容性处理方法
1. 引入 HTML5 Shiv
- HTML5 Shiv 是一个 JavaScript 脚本,它可以让旧版本的浏览器(如 IE8 及以下)支持 HTML5 标签。在 HTML 文件的
head
标签中引入 HTML5 Shiv:
<!--[if lt IE 9]><script src="https://cdnjs.cloudflare.com/ajax/libs/html5shiv/3.7.3/html5shiv.min.js"></script>
<![endif]-->
2. 提供替代方案
- 对于一些 HTML5 特有的功能,如
video
和audio
标签,在不支持的浏览器中提供替代方案。例如,对于video
标签,可以提供下载链接或使用 Flash 播放器作为替代。
<video controls><source src="myvideo.mp4" type="video/mp4"><source src="myvideo.webm" type="video/webm">您的浏览器不支持 video 标签,请下载视频:<a href="myvideo.mp4">下载视频</a>
</video>
3. 检测浏览器特性
- 使用 Modernizr 等工具来检测浏览器是否支持 HTML5 特性。Modernizr 会在 HTML 的
html
标签上添加相应的类名,根据这些类名可以为不同支持情况的浏览器应用不同的样式和脚本。例如:
<script src="https://cdnjs.cloudflare.com/ajax/libs/modernizr/2.8.3/modernizr.min.js"></script>
/* 如果浏览器支持 canvas */
.no-canvas .my-canvas {display: none;
}
通过以上方法,可以有效地解决 HTML5 在不同浏览器中的兼容性问题,确保页面在各种浏览器中都能正常显示和使用😃。
相关文章:
【HTML】【面试提问】HTML面试提问总结
第一章 HTML基础相关提问 1.1 HTML基本概念 1.1.1 什么是HTML HTML 即超文本标记语言(HyperText Markup Language)😎,它是用于创建网页的标准标记语言。简单来说,HTML 就像是搭建房屋的砖块🧱࿰…...
解锁MySQL性能调优:高级SQL技巧实战指南
高级SQL技巧:解锁MySQL性能调优的终极指南 开篇 当前,随着业务系统的复杂化和数据量的爆炸式增长,数据库性能调优成为了技术人员面临的核心挑战之一。尤其是在高并发、大数据量的场景下,SQL 查询的性能直接影响到整个系统的响应…...
数据分析与应用---数据可视化基础
目录 Matplotlib基础绘图 (一)、pyplot绘图基础语法与常用参数 1、pyplot基础语法 (1) 创建画布与创建子图 (2) 添加画布内容 (3) 保存与显示图形 案例代码 2. 设置pyplot的动态…...
android双屏之副屏待机显示图片
摘要:android原生有双屏的机制,但需要芯片厂商适配框架后在底层实现。本文在基于芯发8766已实现底层适配的基础上,仅针对上层Launcher部分对系统进行改造,从而实现在开机后副屏显示一张待机图片。 副屏布局 由于仅显示一张图片&…...
oracle序列自增问题
1.先查询表名对应的序列名称 SELECT trigger_name, trigger_type, triggering_event FROM all_triggers WHERE table_name 表名;2. 查询id最大值 SELECT MAX(ID) FROM 表名;3. 查询下一次生成ID SELECT SJCJ_ENERGY_DATA_INSERTID.NEXTVAL FROM DUAL;4. 设置临时步长,越过…...
FLASHDB API分析
fdb_kvdb_init 函数详解 fdb_kvdb_init 是 FlashDB 框架中用于 初始化键值数据库(KVDB) 的核心接口,其功能涵盖底层存储配置、默认数据加载与多模式适配。以下从功能、参数、使用场景及注意事项展开分析: 一、功能与作用 …...
使用 ABP vNext 集成 MinIO 构建高可用 BLOB 存储服务
🚀 使用 ABP vNext 集成 MinIO 构建高可用 BLOB 存储服务 本文基于 ABP vNext MinIO 的对象存储集成实践,系统讲解从 MinIO 部署、桶创建、ABP 集成、上传 API、安全校验、预签名访问,到测试、扩展及多租户支持的全过程。目标是构建一套可复…...
3.安卓逆向2-安卓文件目录
免责声明:内容仅供学习参考,请合法利用知识,禁止进行违法犯罪活动! 内容参考于:图灵Python学院 上一个内容:2.安卓逆向2-adb指令 首先使用adb连接到手机,如下图使用adb命令列出手机的目录&am…...
云原生时代的系统可观测性:理念变革与实践体系
📝个人主页🌹:慌ZHANG-CSDN博客 🌹🌹期待您的关注 🌹🌹 一、引言:为什么可观测性在云原生时代变得更加重要? 传统应用系统运行于固定服务器,拓扑结构稳定、依赖路径清晰,排查故障依赖日志和人工经验已足够支撑运维。但在云原生环境中,系统正快速演变为: 微…...
力扣网-复写零
1.题目要求 2.题目链接 1089. 复写零 - 力扣(LeetCode) 3.题目解答 class Solution {public void duplicateZeros(int[] arr) {int cur0,dest-1,narr.length;while(cur<n){//遇到0就dest走两步if(arr[cur]0){dest2;}//遇到非零元素dest就走一步els…...
高项-挣值管理TCPI
TCPI(完工尚需绩效指数)的英文全称及含义 TCPI 是项目管理(尤其是挣值管理EVM, Earned Value Management)中的一个关键指标,其英文全称为: To-Complete Performance Index 中文译为**“完工尚需绩效指数”…...
Java大厂面试三轮问答:微服务与数据库技术深度解析
Java大厂面试:谢飞机的三轮挑战 第一轮:微服务基础与电商场景设计 面试官: "谢飞机,假设我们要设计一个电商平台,需要支持用户下单、支付以及订单追踪。你会如何设计微服务架构?" 谢飞机: "呃&#…...
Linux 移植 Docker 详解
一、移植前的环境准备 在将 Docker 移植到 Linux 系统之前,需要确保系统满足一定的条件,以保证 Docker 能够稳定运行。 1. 操作系统版本要求 Docker 对 Linux 操作系统版本有一定的要求,不同的 Docker 版本适配不同的 Linux 发行版及版本。常…...
滑动验证码缺口识别与自动化处理技术解析
在如今的网络安全环境中,滑动验证码作为一种主流的人机验证方案,被广泛应用。它的核心挑战主要集中在两个方面:一是如何准确地识别出缺口位置,二是如何模拟出逼真的拖动轨迹。 一、缺口识别技术方案 (一)…...
C++字符串处理:`std::string`和`std::string_view`的区别与使用
在 C中,std::string和std::string_view都用于处理字符串,但它们的用途和性能特点有很大不同。本教程将通过代码示例和流程图,帮助你快速掌握它们的使用方法。 1.什么是std::string和std::string_view? 1.1std::string std::str…...
Uniapp中动态控制scroll-view滚动的方式
在Uniapp 4.45中,动态修改scroll-view的scroll-left属性时无法触发滚动(直接设置scroll-left属性值没问题),这通常是因为数据更新与 DOM 渲染之间的异步特性导致的。知道了原因,但是直接修改scroll-left属性值还是失败…...
手机怎么查看网络ip地址?安卓/iOS设备查询指南
在移动互联网时代,IP地址作为设备的网络身份证,无论是网络调试、远程连接还是排查故障都至关重要。本文将系统介绍安卓和iOS设备查看IP地址的多种方法,帮助您快速掌握这一实用技能。 一、安卓手机查看IP地址方法 1、通过WiFi设置查看 打开设…...
R语言+贝叶斯网络:涵盖贝叶斯网络的基础、离散与连续分布、混合网络、动态网络,Gephi可视化,助你成为数据分析高手!
🔍 在现代生态、环境及地学研究中,变量及其因果关系的推断是核心课题之一。然而,传统的因果关系研究通常依赖于昂贵的实验,而实验结果往往与天然环境中的实际因果联系存在较大偏差。例如,在生态系统中,物种…...
手机内存不够,哪些文件可以删?
1️⃣应用缓存文件 安卓:通过「文件管理器」→「Android」→「data」或「cache」文件夹(部分需权限),或直接在应用设置中清除缓存 iOS:无需手动清理,系统会自动管理,或在应用内设置中清除&…...
C语言之 比特(bit)、字节(Byte)、字(Word)、整数(Int)
在C语言中,经常出现上述的概念,即比特(bit)、字节(Byte)、字(Word)、整数(Int)。查看C语言标准,比特(bit)的定义如下&…...
组态王通过开疆智能profinet转ModbusTCP网关连接西门子PLC配置案例
本案例是组态王通过使用开疆智能研发的Profinet转ModbusTCP网关采集西门子1200PLC中数据的案例。 网关配置 首先来配置网关的参数,打开网关配置软件“Gateway Configuration Studio” 由于组态王那侧设定为ModbusTCP客户端所以网关作为ModbusTCP服务器。新建项目…...
GO语言学习(五)
GO语言学习(五) 前面我们已经学了一些关于golang的基础知识,从这一期开始,我们就来讲解一下基于golang为后端的web开发,首先这一期为一些golang为后端的web开发基础讲解,我们将会从web的工作方式、golang如…...
Supermemory:让大模型拥有“长效记忆“
目录 引言:打破大语言模型的记忆瓶颈,迎接AI交互新范式 一、Supermemory 核心技术 1.1 透明代理机制 1.2 智能分段与检索系统 1.3 自动Token管理 二、易用性 三、性能与成本 四、可靠性与兼容性 五、为何选择 Supermemory? 六、对…...
Hooks实现原理与自定义Hooks
React Hooks 是 React 16.8 引入的一种机制,允许在函数组件中使用状态(state)、副作用(effect)等功能,而无需编写 class 组件。其核心原理是通过闭包和链表结构,在 React 的 Fiber 架构中管理组…...
【NLP】35. 构建高质量标注数据
如何构建高质量标注数据?大语言模型背后的那只“看不见的手” 在讨论大语言模型(LLM)性能突破时,人们总是聚焦在模型参数、结构设计和训练技巧上。但真正懂行的人都知道——再好的模型也离不开一手好数据,尤其是那些“…...
2024CCPC吉林省赛长春邀请赛 Java 做题记录
目录 I. The Easiest Problem G. Platform Game L. Recharge E. Connected Components I. The Easiest Problem 签到题 直接输出 21 即可 // github https://github.com/Dddddduo // github https://github.com/Dddddduo/acm-java-algorithm // github https://github.com/…...
黑马程序员C++2024新版笔记 第三章 数组
1.数组定义 数组是一批相同类型的元素(element)的集合组成的数据结构。 声明语法: <数据类型> <数组名> [<数组长度>] int v[6] // 声明了可以存放6个int数字的数组 数组的每个元素有编号,称之为下标索引…...
Golang的网络安全策略实践
Golang的网络安全策略实践 一、理解网络安全的重要性 当今的网络环境中,安全问题日益突出,各种类型的攻击如雨后春笋般涌现,给个人和组织的信息资产造成了严重威胁。因此,制定和实施有效的网络安全策略至关重要。 二、Golang在网络…...
SAP学习笔记 - 开发13 - CAP 之 添加数据库支持(Sqlite)
上一章学习了CAP开发准备,添加Service。 SAP学习笔记 - 开发12 - CAP 之 开发准备,添加服务-CSDN博客 本章继续学习CAP开发 - 添加数据库支持(Sqlite)。 目录 1,数据库准备 - H2 内存数据库 - Sqlite数据库 a&…...
DRIVEGPT4: 通过大语言模型实现可解释的端到端自动驾驶
《DriveGPT4: Interpretable End-to-End Autonomous Driving via Large Language Model》 2024年10月发表,来自香港大学、浙江大学、华为和悉尼大学。 多模态大型语言模型(MLLM)已成为研究界关注的一个突出领域,因为它们擅长处理…...
LLM最后怎么输出值 解码语言模型:从权重到概率的奥秘
LM Head Weights(语言模型头部权重):左侧的“LM Head Weights”表示语言模型头部的权重矩阵,它是模型参数的一部分。权重矩阵与输入数据进行运算。Logits(未归一化对数概率):经过与LM Head Weig…...
Better Faster Large Language Models via Multi-token Prediction 原理
目录 模型结构: Memory-efficient implementation: 实验: 1. 在大规模模型上效果显著: 2. 在不同类型任务上的效果: 为什么MLP对效果有提升的几点猜测: 1. 并非所有token对生成质量的影响相同 2. 关…...
【NLP】34. 数据专题:如何打造高质量训练数据集
构建大语言模型的秘密武器:如何打造高质量训练数据集? 在大语言模型(LLM)如 GPT、BERT、T5 爆发式发展的背后,我们常常关注模型架构的演化,却忽视了一个更基础也更关键的问题:训练数据从哪里来…...
uniapp 微信小程序 获取openId
嗨,我是小路。今天主要和大家分享的主题是“uniapp 微信小程序 获取openId”。 一、主要属性 1.uni.login 二、实例代码 1、前端代码 uni.login({provider: weixin,success: (res) > {uni.showLoading({title: 登录中...,mask: true})let code res.…...
企业标准信息公共服务平台已开放标准通编辑器访问入口
标准通 数字化标准编辑器 专业、高效、便捷 企业标准信息公共服务平台 近日,企业标准信息公共服务平台已开放标准通编辑器访问入口,可进入官网指定版块使用! 核心功能亮点 解决企业痛点 传统标准编制,需反复核对格式、逐条…...
小米MUJIA智能音频眼镜来袭
智能眼镜赛道风云再起,小米新力作MIJIA智能音频眼镜2正式亮相,引发市场热议。 这款产品在设计和功能上都有显著提升,为用户带来更舒适便捷的佩戴体验,同时也标志着小米在智能眼镜领域的持续深耕。 轻薄设计,舒适体验 …...
Node.js 实战八:服务部署方案对比与实践
你开发好了接口,准备上线,然后开始犹豫: “直接 node app.js 启就行了吗?” “要不要用 PM2?听说 Docker 更稳?” “Serverless 是不是就不用管服务器了?” 部署是从“能运行”到“能长久运行”…...
地下水安全监测实施方案
一、方案目标 本方案的核心目标在于构建一个全方位、科学严谨且高效运转的地下水监测体系,旨在实现对地下水资源全方位的动态监测、科学化的管理和有效的保护。监测的具体目标涵盖了地下水位、流量以及水质等多个关键性指标,通过精准的数据采集和分析&am…...
HTTP由浅入深
概述 超文本传输协议(HTTP, Hypertext Transfer Protocol) 是一种用于传输超媒体文档(例如 HTML)的应用层协议。它最初被设计用于 Web 浏览器与 Web 服务器之间的通信,但也广泛应用于其他客户端与服务器的交互。 HTT…...
Conda 环境下安装 GCC 和 glibc (crypt.h) 教程
Conda 环境下安装 GCC 和 glibc (crypt.h) 教程 由于运行Low-Light Image Enhancement via Structure Modeling and Guidance原始论文代码,发现服务器的gcc版本太老,没法运行。同时缺少libxcrypt (crypt.h),不得不询问gpt进行解答。发现可以…...
C++面试3——const关键字的核心概念、典型场景和易错陷阱
const关键字的核心概念、典型场景和易错陷阱 一、const本质:类型系统的守护者 1. 与#define的本质差异 维度#defineconst编译阶段预处理替换编译器类型检查作用域无作用域(全局污染)遵循块作用域调试可见性符号消失保留符号信息类型安全无类…...
超小多模态视觉语言模型MiniMind-V 训练
简述 MiniMind-V 是一个超适合初学者的项目,让你用普通电脑就能训一个能看图说话的 AI。训练过程就像教小孩:先准备好图文材料(数据集),教它基础知识(预训练),再教具体技能…...
深入理解仿函数(Functors):从概念到实践
文章目录 1. 什么是仿函数?2. 仿函数与普通函数的区别3. 标准库中的仿函数4. 仿函数的优势4.1 状态保持4.2 可定制性4.3 性能优势 5. 现代C中的仿函数5.1 Lambda表达式5.2 通用仿函数 6. 仿函数的高级应用(使用C2020标准库及以上版本)6.1 函数…...
第二届parloo杯的RSA_Quartic_Quandary
(害,还是太菜了,上去秒了一道题之后就动不了了,今晚做个记录,一点点的往回拾起吧) # from Crypto.Util.number import getPrime, bytes_to_long # import math # # FLAG b************** # # # def gene…...
团队氛围紧张,如何提升工作积极性?
当团队氛围长期处于紧张状态时,员工的积极性、创造力和凝聚力会显著下降。要有效提升工作积极性,应从建设心理安全环境、优化管理沟通方式、提升认可与激励机制、加强情感联结与归属感等方面系统改善。其中,建设心理安全环境是最重要的基础&a…...
vuex的基本使用
个人简介 👨💻个人主页: 魔术师 📖学习方向: 主攻前端方向,正逐渐往全栈发展 🚴个人状态: 研发工程师,现效力于政务服务网事业 🇨🇳人生格言&…...
chrome因使用selenium无图模式导致不再加载图片问题解决
因为使用了selenium的无图模式访问chrome的本地用户数据导致正常使用chrome访问网页时图片不加载。现在页面出现验证码,验证码显示不了。 第一步:关闭所有chrome 第二步:找到Perferences文件 文件的目录为:C:\Users\用户名\AppDa…...
并发编程(5)
抛异常时会释放锁。 当线程在 synchronized 块内部抛出异常时,会自动释放对象锁。 public class ExceptionUnlockDemo {private static final Object lock new Object();public static void main(String[] args) {Thread t1 new Thread(() -> {synchronized …...
自己拥有一台服务器可以做哪些事情
上大学时候,买了自己的第一台服务器在HoRain Cloud上,结果没有好好利用,刚工作时候,又买了一台HoRain Cloud服务器,就想着好好利用。 可以搭建一些学习环境,比如说数据库,gitlab什么的 …...
Node.js聊天室开发:从零到上线的完整指南
为让你全面了解Node.js聊天室开发,我会先介绍开发背景与技术栈,再按搭建项目、实现核心功能、部署上线的流程展开,还会分享优化思路。 Node.js聊天室开发实战:从入门到上线 在即时通讯日益普及的今天,基于Node.js搭建…...