1. 常见的浏览器内核有哪些?
2. 浏览器的主要组成部分是什么?
- 「用户界面」 – 包括地址栏、前进/后退按钮、书签菜单等。
- 「浏览器引擎」 – 在用户界面和呈现引擎之间传送指令。
- 「呈现引擎」 – 负责显示请求的内容。如果请求的内容是 HTML,它就负责解析 HTML 和 CSS 内容,并将解析后的内容显示在屏幕上。
- 「网络」 – 用于网络调用,比如 HTTP 请求。
- 「用户界面后端」 -用于绘制基本的窗口小部件,比如组合框和窗口。
- 「JavaScript 解释器」– 用于解析和执行 JavaScript 代码。
- 「数据存储」 – 这是持久层。浏览器需要在硬盘上保存各种数据,例如 Cookie。新的 HTML 规范 (HTML5) 定义了“网络数据库”,这是一个完整(但是轻便)的浏览器内数据库。
3. 为什么JavaScript是单线程的,与异步冲突吗
补充:JS中其实是没有线程概念的,所谓的单线程也只是相对于多线程而言。JS的设计初衷就没有考虑这些,针对JS这种不具备并行任务处理的特性,我们称之为“单线程”。
JS单线程是指一个浏览器进程中只有一个JS的执行线程,同一时刻内只会有一段代码在执行。
举个通俗例子,假设JS支持多线程操作的话,JS可以操作DOM,那么一个线程在删除DOM,另外一个线程就在获取DOM数据,这样子明显不合理,这算是证明之一。
来看段代码