【无标题】

发布时间:2024年01月17日

1.script标签的async与defer

async 和 defer 是用于控制 <script> 标签加载和执行的两个属性。它们在处理脚本加载时有一些重要的区别:
1. async 属性:

1.<script async> 表示脚本是异步执行的。
2.异步脚本不会阻塞 HTML 解析,它会在下载完成后立即执行,而不等待其他资源的下载。
3.如果有多个异步脚本,它们的执行顺序是不确定的,取决于哪个脚本先下载完成。
4.适用于不依赖其他脚本的情况,例如用于收集统计数据的脚本。

<script async src="example.js"></script>

2. defer 属性:

5.<script defer> 表示脚本是延迟执行的。
6.延迟脚本会在 HTML 解析完成后,整个文档完全加载之前执行。
7.如果有多个延迟脚本,它们会按照在文档中出现的顺序依次执行。
8.延迟脚本不会阻塞其他资源的下载。

<script defer src="example.js"></script>

区别总结:

9.加载时机: async 脚本会在下载完成后立即执行,而 defer 脚本会在整个文档解析完成后执行。
10.执行顺序: async 脚本之间的执行顺序不确定,而 defer 脚本会按照它们在文档中出现的顺序执行。
11.阻塞: async 不会阻塞文档解析,而 defer 不会阻塞其他资源的下载。

选择使用 async 还是 defer 取决于脚本的执行时机和依赖关系。如果脚本不依赖于页面的其余部分,而且可以独立运行,那么可以考虑使用 async。如果脚本需要在整个文档解析完成后执行,或者依赖于其他脚本,那么可以使用 defer。

2.移动端适配这里,分辨率的适配是怎么做的。有接触过媒体查询吗;物理像素与逻辑像素的关系

移动端适配是为了确保网页在不同设备上以及不同分辨率下都能够良好地显示。在移动端适配中,媒体查询和像素的概念都是非常重要的。
1. 物理像素与逻辑像素:

1.物理像素(Physical Pixel): 是屏幕上的实际硬件像素,它们是屏幕上显示的最小单位。不同设备的物理像素密度可能会有差异。
2.逻辑像素(Logical Pixel): 是在 CSS 和布局计算中使用的虚拟像素,它们是相对长度单位的基础。逻辑像素的概念有助于在不同分辨率的设备上提供一致的显示效果。
3.设备独立像素(Device-Independent Pixel,dp或dip): 一种与物理设备无关的抽象概念,用于描述屏幕上的一种相对长度单位。Android系统中使用dp,iOS系统中使用pt(点)。

物理像素和逻辑像素之间的关系是通过设备像素比(Device Pixel Ratio,DPR)来描述的,公式为:
[ DPR = \frac{{物理像素}}{{逻辑像素}} ]
2. 媒体查询:
媒体查询是一种CSS3的技术,它允许根据设备特性和属性来应用不同的样式。在移动端适配中,媒体查询通常用于根据屏幕宽度、高度、设备方向等条件来应用不同的样式。
/* 基于屏幕宽度的媒体查询 */
@media only screen and (max-width: 600px) {
? ? /* 在宽度小于等于600px时应用的样式 */
}

/* 基于屏幕DPR的媒体查询 */
@media only screen and (-webkit-min-device-pixel-ratio: 2) {
? ? /* 在高DPR设备上应用的样式,比如Retina屏幕 */
}

通过媒体查询,你可以为不同的设备或不同的屏幕特性提供不同的样式,以实现移动端适配。
在实际的移动端适配中,通常会结合使用相对单位(如百分比、em、rem)以及媒体查询来确保在不同屏幕大小和分辨率下都能够提供一致的用户体验。

3.浏览器渲染的过程,就是CSS与HTML是怎么结合的

浏览器渲染过程涉及HTML和CSS的结合,它是一个多步骤的过程。下面是一个简化的浏览器渲染流程:

1.构建DOM树: 浏览器首先解析HTML文档,将其转换为一棵DOM(文档对象模型)树。DOM树表示HTML文档的结构,每个HTML元素都被表示为树上的一个节点。
2.构建CSSOM树: 浏览器解析CSS文件,构建CSS对象模型(CSSOM)树。CSSOM树表示样式表的结构,每个CSS规则被表示为树上的一个节点。
3.合并DOM和CSSOM: 将DOM树和CSSOM树合并,创建一个称为"渲染树"(Render Tree)的结构。渲染树包含了需要在屏幕上渲染的所有可见元素,但它并不包括不可见的元素,比如<head>中的元素。
4.计算布局: 浏览器根据渲染树计算每个元素在屏幕上的准确位置和大小。这个阶段叫做布局或回流。
5.绘制: 浏览器使用计算得到的位置和大小信息,将渲染树的每个节点绘制到屏幕上。这个阶段叫做绘制。
6.合并图层: 浏览器可能会使用硬件加速,将页面分成多个图层,这有助于提高性能。在这一步,这些图层可能会被合并以减少绘制的开销。
7.显示: 渲染的内容显示在屏幕上。

在整个过程中,HTML提供了文档的结构,而CSS则提供了样式和布局信息。这两者结合在一起,通过渲染树的形式最终呈现在用户的浏览器中。如果有任何样式更改或者用户交互,浏览器可能需要重新执行这个流程来更新页面的呈现。

4.

服务器渲染有接触过吗

是的,我对服务器渲染(Server-Side Rendering,简称SSR)有一定的了解。服务器渲染是一种在服务器上生成页面内容并将其发送到浏览器的技术。与客户端渲染(Client-Side Rendering,简称CSR)相对,服务器渲染在服务器端处理页面的生成,然后再将其发送到客户端进行显示。

以下是一些关于服务器渲染的基本概念:

  1. 性能优势: 服务器渲染通常能够提供更快的首次加载性能,因为用户在收到内容之前不需要等待 JavaScript 文件的下载和执行。

  2. SEO友好: 由于搜索引擎爬虫能够直接获取服务器渲染的内容,相对于一些单页面应用的客户端渲染,服务器渲染更有利于搜索引擎优化(SEO)。

  3. 首屏渲染: 服务器渲染通常能够更迅速地呈现首屏内容,这对提高用户体验至关重要。

  4. 复杂性: 服务器渲染的实现可能会增加项目的复杂性,因为你需要处理在服务器和客户端之间共享状态,而且服务器端的渲染逻辑可能涉及到模板引擎等技术。

  5. 框架支持: 许多现代前端框架,如Next.js(React框架的一部分)和Nuxt.js(Vue框架的一部分),提供了便捷的服务器渲染解决方案。

如果你有具体的问题或者需要深入了解某方面的服务器渲染,可以告诉我,我将尽力提供更详细的信息。

区别

服务器渲染(Server-Side Rendering,SSR)和浏览器渲染(Client-Side Rendering,CSR)是两种不同的前端渲染方式,它们有一些关键区别:
1. 渲染位置:

1.服务器渲染 (SSR): 页面的 HTML 是在服务器上生成的,服务器将完整的 HTML 页面发送到客户端。客户端接收到的是已经包含了数据和结构的完整 HTML 页面。
2.浏览器渲染 (CSR): 页面的 HTML 是由浏览器下载一个包含 JavaScript 的空白 HTML 页面,然后在浏览器中使用 JavaScript 动态生成并渲染内容。

2. 初始加载时间:

3.SSR: 提供了更快的初始加载时间,因为服务器在发送 HTML 页面时已经包含了初始的数据,客户端只需解析和渲染。
4.CSR: 需要等待 JavaScript 下载、解析和执行,然后才能开始渲染页面。这可能导致初始加载时间较长,尤其是在网络条件不佳的情况下。

3. SEO(搜索引擎优化):

5.SSR: 对搜索引擎更友好,因为搜索引擎可以直接抓取和索引服务器渲染的 HTML 内容。
6.CSR: 搜索引擎需要等待 JavaScript 执行完成后,才能获取和索引页面内容,这可能影响 SEO。

4. 用户体验:

7.SSR: 提供了更快的初始加载时间,使用户更快地看到页面内容。但在后续的页面交互中,可能会有一些延迟,因为每次用户与应用交互时都需要从服务器获取新的 HTML。
8.CSR: 初始加载可能较慢,但在用户与应用交互时可以更快地加载更新的内容,因为只需要获取和渲染数据,而无需重新获取整个 HTML 页面。

5. 开发复杂性:

9.SSR: 通常需要更多的服务器端配置和处理,开发上可能相对复杂。
10.CSR: 更注重前端逻辑,开发上可能更灵活,但需要处理更多的客户端逻辑。

总结:
选择使用服务器渲染还是浏览器渲染通常取决于项目的具体需求,包括页面加载性能、SEO 要求、开发复杂性等。有时候,项目中也会采用混合的方式,称为“同构应用”(Isomorphic App),结合了服务器渲染和客户端渲染的优势。

场景:

选择使用服务器渲染(SSR)或浏览器渲染(CSR)通常取决于项目的具体需求和优缺点。以下是一些一般的指导原则:
使用服务器渲染(SSR)的情况:

1.SEO 要求高: 如果项目对搜索引擎优化(SEO)非常敏感,服务器渲染是更好的选择,因为搜索引擎可以直接抓取和索引服务器渲染的 HTML。
2.初始加载性能要求高: 如果你关注网页的初始加载性能,特别是对于首屏渲染时间的优化,SSR 通常能提供更快的初始加载体验。
3.对于内容频繁变化: 如果项目中的内容需要频繁变化,但用户对于初始加载速度的要求较高,可以考虑使用 SSR,以保证页面的初始内容是即时可见的。
4.有复杂的后端逻辑: 当项目有复杂的后端逻辑或需要与服务器进行密切的交互时,使用 SSR 可能更方便。
5.团队对服务器端开发经验丰富: 如果开发团队在服务器端开发方面有更多的经验,SSR 可能更容易被实施和维护。

使用浏览器渲染(CSR)的情况:

6.对初始加载性能要求不高: 如果对于初始加载性能要求较低,而更注重后续页面交互时的性能,可以考虑使用 CSR。
7.前端交互频繁: 如果应用有很多交互和动态更新,CSR 提供了更流畅的用户体验,因为页面不需要重新加载。
8.独立性强: 如果项目中的前端与后端更为独立,前端逻辑复杂,而且有现代 JavaScript 框架支持,使用 CSR 可能更合适。
9.SPA(单页面应用)需求: 如果项目是一个单页面应用(SPA),其中所有页面内容都在客户端动态生成,那么 CSR 是自然的选择。
10.开发团队对前端框架经验丰富: 如果开发团队对于现代前端框架(如React、Vue、Angular等)有更多的经验,CSR 可能更容易实施。

在实际项目中,有时候也会选择使用混合的方式,即同构应用(Isomorphic App),结合了服务器渲染和客户端渲染的优势,以满足项目的多样化需求。选择合适的渲染方式需要综合考虑项目的特点、性能需求、开发团队技能等因素。

文章来源:https://blog.csdn.net/wyzqhhhh/article/details/135591628
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。