各位,新来的!
今天我有一个关于Chrome浏览器在阅读源文件后如何知道该做什么的问题。更一般地说,我试图了解当我们在Chrome中运行.js文件时会发生什么。
这就是我的具体意思。假设你是Chrome中的源代码。除了一个随机的LCD显示器屏幕,一个人又名用户与您正在渲染的网站进行交互,要求您调用drive()
函数,该函数依赖于许多其他函数。
我们人类有两种(或更多)驾驶方式。首先,你开车只是靠肌肉记忆。另一方面,当你第一次学习驾驶时,你应该学习如何加速器,刹车和大灯工作。一段时间后,你可以毫不费力地开车。
问题来了chrome是通过肌肉记忆知道该做什么,还是从上到下都在学习该做什么。如果是这样的话,当它第二次遇到drive()
函数时,它是否必须重新学习所有内容?
- 我知道这可能是一个与编译器相关的“重复”问题,但我是一个新手,不知道足够的关键字来查找我需要的内容。我还想问一下网络浏览器是如何工作的。
1条答案
按热度按时间nhn9ugyo1#
Web浏览器不像编译器对C++或Java等语言那样“编译”传统意义上的代码。相反,Web浏览器使用各种引擎和组件来解释和执行代码。让我们来看看Web浏览器如何处理代码的过程:
1.HTML解析:加载网页时,浏览器首先检索该页面的HTML内容。然后,它解析HTML文档,构建表示页面结构的文档对象模型(DOM)树。
1.CSS解析与渲染:解析HTML后,浏览器获取并解析任何相关的CSS文件。然后,它构造一个描述页面样式规则的CSS对象模型(CSSOM)。DOM和CSSOM组合在一起创建呈现树,它表示元素在页面上的显示方式。
1.JavaScript执行:如果HTML或JavaScript代码引用外部资源,如图像或脚本,浏览器将获取这些资源,同时继续解析HTML的其余部分。当浏览器遇到
<script>
标记或内联JavaScript时,浏览器暂停HTML解析,获取脚本(如果是外部脚本),然后执行JavaScript代码。1.JavaScript引擎:每个浏览器都有自己的JavaScript引擎(例如,Chrome中的V8,Firefox中的SpiderMonkey,Safari中的JavaScriptCore),负责执行JavaScript代码。引擎使用即时(JIT)编译或其他优化技术将JavaScript代码转换为机器代码以提高性能。
1.事件处理:当页面加载并且当用户与其交互时,生成事件(例如,点击、滚动)。JavaScript代码可以侦听这些事件并做出相应的响应,根据需要更新DOM和CSSOM。
1.回流和重绘:当DOM或CSSOM更新时,浏览器执行回流和重绘过程,以在屏幕上反映这些更改。回流重新计算元素的位置和大小,而重绘更新屏幕上的像素。
1.渲染:在加载所有必要的资源并执行JavaScript之后,浏览器将最终的DOM、CSSOM和渲染树组合在一起,在屏幕上渲染完整的网页。
需要注意的是,Web浏览器不像传统编译器那样只有一个编译步骤。相反,它们执行各种步骤,包括解析HTML、CSS和JavaScript,在JavaScript引擎中执行JavaScript代码,并在屏幕上呈现最终结果。每当加载或更新页面时,都会重复此过程,从而实现动态和交互式Web体验。