前端必读:浏览器内部工作原理

合集下载

WEB浏览器工作原理

WEB浏览器工作原理

WEB浏览器工作原理WEB浏览器是我们日常生活中必不可少的工具,它能够帮助我们访问互联网上的各种网页内容。

但是,很多人对WEB浏览器的工作原理并不是很了解。

本文将从几个方面详细介绍WEB浏览器的工作原理。

一、用户输入网址1.1 用户在浏览器地址栏中输入网址。

1.2 浏览器根据用户输入的网址,通过DNS解析找到对应的IP地址。

1.3 浏览器向服务器发送HTTP请求,请求网页内容。

二、浏览器发送HTTP请求2.1 浏览器向服务器发送HTTP请求,请求网页内容。

2.2 服务器接收到请求后,根据请求的内容生成对应的网页文件。

2.3 服务器将生成的网页文件发送给浏览器。

三、浏览器渲染网页3.1 浏览器接收到服务器发送的网页文件后,开始解析HTML、CSS和JavaScript代码。

3.2 浏览器根据HTML代码构建DOM树,根据CSS代码构建CSSOM树。

3.3 浏览器将DOM树和CSSOM树结合起来,生成渲染树,然后将渲染树转换为屏幕上的像素。

四、浏览器渲染引擎4.1 浏览器的渲染引擎负责解析HTML和CSS代码,将网页内容渲染成可视化的页面。

4.2 渲染引擎会根据网页内容的结构和样式,计算出每个元素在页面上的位置和样式。

4.3 渲染引擎还会处理JavaScript代码,实现网页的交互功能。

五、浏览器显示网页5.1 浏览器将渲染好的页面显示在用户的屏幕上。

5.2 用户可以通过浏览器的各种功能(如前进、后退、刷新等)来操作网页。

5.3 浏览器会在用户关闭网页或者退出浏览器时,释放资源并清理缓存。

综上所述,WEB浏览器的工作原理涉及到用户输入网址、浏览器发送HTTP 请求、浏览器渲染网页、浏览器渲染引擎以及浏览器显示网页等多个方面。

只有了解这些原理,我们才能更好地利用浏览器,提升我们的上网体验。

浏览器工作原理 百度网盘

浏览器工作原理 百度网盘

浏览器工作原理百度网盘
浏览器工作原理是指浏览器在加载网页时所涉及到的各个环节和过程。

以下是浏览器的工作原理的主要步骤:
1. 用户在浏览器中输入网址或点击链接,浏览器向服务器发送HTTP请求。

2. 服务器接收到请求后,返回相应的HTML文件。

3. 浏览器收到HTML文件后,开始解析文件,构建DOM树(Document Object Model)。

4. 解析过程中,若遇到CSS文件,浏览器会同时解析CSS文
件并构建CSSOM树(CSS Object Model)。

5. 构建完DOM树和CSSOM树后,浏览器将它们合成为Render树。

6. 根据Render树来绘制页面并展示给用户。

7. 在展示页面的过程中,若遇到JavaScript脚本文件,浏览器
会解析并执行该脚本。

8. 在页面加载完成后,浏览器会监听用户的交互事件(如点击、滚动等),并做出相应的响应。

9. 在页面加载的过程中,浏览器还会进行网络请求优化、缓存
策略等工作。

总的来说,浏览器的工作原理就是将用户请求的网页文件转化为可视化的页面,并监听用户的行为,提供相应的功能和操作。

《Web浏览器工作原理解析》

《Web浏览器工作原理解析》

《Web浏览器工作原理解析》Web浏览器工作原理解析Web浏览器已经成为我们生活中不可或缺的重要工具。

它为我们提供了许多方便,比如我们可以轻松浏览互联网上的网页,查看邮件以及享受多种多样的娱乐和社交服务。

但是,对于Web浏览器的工作原理,很多人还是一知半解。

在这篇文章中,我们将深入了解Web浏览器的工作原理,帮助大家更好地理解和掌握Web浏览器。

一、Web浏览器简介Web浏览器是一种客户端软件,主要用于访问和解析互联网上的网页。

Web 浏览器的功能不仅仅是简单地显示网页内容,还包括与服务器进行交互,解析HTML和CSS,以及实现一些高级功能,比如JavaScript代码执行和插件支持等。

常见的Web浏览器有IE、Chrome、Firefox、Safari和Opera等。

它们都有自己的特色和优点。

例如,IE通常被认为是Windows系统的默认浏览器,Chrome则以快速和安全性见长,Firefox支持大量的插件和扩展,Safari 是苹果公司的默认浏览器,而Opera则专注于流媒体和内置VPN功能等。

二、Web浏览器的结构Web浏览器的结构一般分为五个层次,包括用户界面层、浏览器引擎层、渲染引擎层、网络层和操作系统层。

用户界面层主要负责显示和操作Web浏览器的用户界面,例如地址栏、菜单、工具栏和书签等。

浏览器引擎层则负责处理用户界面和渲染引擎之间的交互,执行用户的指令并将其传递给渲染引擎进行处理。

渲染引擎层是Web浏览器的核心部分。

它主要用于解析HTML和CSS代码,并将它们转换成网页的可视化渲染,包括文字、图片、音频和视频等。

渲染引擎层主要包括两个部分:HTML解析器和CSS解析器。

HTML解析器将HTML代码转换成浏览器结构树,CSS解析器则将CSS代码转换成样式规则,并将其应用到结构树上。

网络层主要负责管理HTTP协议和其他网络协议。

它可以缓存请求和响应,以减少网络传输的重复。

操作系统层可以提供访问硬件的底层API,例如磁盘、内存和图像等。

前端的底层原理

前端的底层原理

前端的底层原理前端底层原理及其重要性前端开发是指通过使用HTML、CSS和JavaScript等技术,来构建和设计用户在浏览器中直接看到和交互的网页和应用程序。

作为一名前端开发人员,了解前端的底层原理非常重要,因为它直接影响着网页的性能、用户体验和开发效率。

底层原理一:HTMLHTML是超文本标记语言,用于定义网页的结构和内容。

它由一系列的标签组成,每个标签都有特定的含义和功能。

在浏览器中,HTML被解释和渲染为可视化的网页。

了解HTML的底层原理,可以帮助开发人员更好地理解网页的结构和语义,从而优化网页的可访问性和SEO。

底层原理二:CSSCSS是层叠样式表,用于定义网页的样式和布局。

通过将CSS样式应用于HTML元素,开发人员可以控制网页的外观和排版。

了解CSS的底层原理,可以帮助开发人员更好地理解样式的继承和层叠规则,从而优化样式的性能和可维护性。

底层原理三:JavaScriptJavaScript是一种动态编程语言,用于实现网页的交互和动态效果。

通过编写JavaScript代码,开发人员可以对网页进行事件处理、数据操作和动画效果等操作。

了解JavaScript的底层原理,可以帮助开发人员更好地理解事件模型、作用域和闭包等概念,从而优化代码的性能和可读性。

底层原理四:浏览器渲染引擎浏览器渲染引擎是浏览器的核心组件,负责将HTML、CSS和JavaScript解析并渲染为用户可见的网页。

常见的浏览器渲染引擎包括Blink(Chrome)、Gecko(Firefox)和WebKit(Safari)。

了解浏览器渲染引擎的底层原理,可以帮助开发人员更好地理解网页的渲染过程和性能优化策略。

底层原理五:网络通信在前端开发中,网络通信是非常重要的一环。

通过HTTP协议,浏览器可以向服务器请求资源,并将服务器返回的数据展示给用户。

了解网络通信的底层原理,可以帮助开发人员更好地理解请求和响应的过程,从而优化网页的加载速度和数据传输效率。

WEB浏览器工作原理

WEB浏览器工作原理

WEB浏览器工作原理一、概述WEB浏览器是我们日常使用最频繁的软件之一,它的工作原理涉及到网络通信、HTML解析、渲染引擎等多个方面。

本文将详细介绍WEB浏览器的工作原理。

二、网络通信1. DNS解析:当用户在浏览器中输入一个网址时,浏览器首先需要将域名解析为对应的IP地址。

浏览器会向本地DNS服务器发送请求,本地DNS服务器再向根域名服务器逐级查询,最终返回对应的IP地址。

2. TCP连接:浏览器使用TCP协议与服务器建立连接。

通过三次握手,浏览器与服务器建立可靠的连接,以便进行数据传输。

3. HTTP请求:浏览器向服务器发送HTTP请求,请求的内容包括请求方法、URL、请求头等。

常见的请求方法有GET、POST等,URL即请求的网址。

4. 服务器响应:服务器接收到浏览器的请求后,会返回相应的HTTP响应。

响应的内容包括状态码、响应头和响应体。

常见的状态码有200表示成功,404表示页面不存在等。

5. 数据传输:浏览器接收到服务器的响应后,会根据响应头中的内容进行相应的处理。

如果响应头中包含了Content-Type字段,浏览器会根据该字段判断响应体的类型,如HTML、图片、视频等。

三、HTML解析1. 接收HTML:浏览器通过网络通信获取到服务器返回的HTML文件。

2. 构建DOM树:浏览器将HTML文件解析为DOM树,DOM树是浏览器内部表示网页的一种数据结构。

浏览器会根据HTML的语法规则,逐个解析标签,并构建对应的DOM节点。

3. 解析CSS:浏览器解析HTML文件时,如果遇到<style>标签或外部CSS文件,会进行CSS解析。

浏览器将CSS样式表解析为CSS规则,并与DOM树进行匹配,确定每个节点的样式。

4. 渲染树构建:浏览器根据DOM树和CSS规则构建渲染树。

渲染树只包含需要显示的节点,如可见的元素和文本。

四、渲染引擎1. 布局计算:渲染引擎会对渲染树进行布局计算,确定每个节点在屏幕上的位置和大小。

WEB浏览器工作原理

WEB浏览器工作原理

WEB浏览器工作原理WEB浏览器是一种用于访问和浏览互联网上的网页的软件应用程序。

它通过解析和渲染HTML、CSS和JavaScript等网页标记语言来呈现网页内容。

在用户输入网址或者点击链接后,浏览器会发送请求到服务器,获取网页的源代码,并将其转换为可视化的网页。

下面将详细介绍WEB浏览器的工作原理:1. 用户输入网址或者点击链接用户在浏览器地址栏中输入网址或者点击链接,触发浏览器向服务器发送请求。

2. URL解析浏览器会解析用户输入的URL,提取出协议、主机名、端口号和路径等信息。

然后,浏览器将根据协议类型(如HTTP、HTTPS)选择合适的传输协议。

3. 发起HTTP请求浏览器使用HTTP协议向服务器发送请求,请求包括请求方法(GET、POST 等)、请求头(用户代理、Cookie等)和请求体(表单数据等)。

4. 域名解析如果主机名是一个域名,浏览器会将其转换为服务器的IP地址。

浏览器首先会检查本地DNS缓存,如果找到对应的IP地址,则直接使用;如果没有找到,则向本地DNS服务器发送请求进行域名解析。

5. 建立TCP连接浏览器使用IP地址和端口号建立与服务器的TCP连接。

浏览器通过三次握手与服务器进行通信,确保双方可以可靠地传输数据。

6. 发送HTTP请求报文浏览器将组装好的HTTP请求报文发送给服务器。

请求报文包括请求行(方法、路径、协议版本)、请求头和请求体。

7. 服务器处理请求服务器接收到浏览器发送的请求后,会根据请求的路径和方法进行相应的处理。

服务器可能会读取数据库、执行代码等操作,最平生成响应数据。

8. 接收HTTP响应报文服务器将生成的HTTP响应报文发送回浏览器。

响应报文包括状态行(状态码、协议版本)、响应头和响应体。

9. 解析响应数据浏览器接收到响应数据后,会根据响应头中的内容类型进行解析。

如果是HTML文档,浏览器会将其解析为DOM树。

10. 构建DOM树浏览器解析HTML文档,构建DOM树。

浏览器工作原理(how browsers work)中英文对照版

浏览器工作原理(how browsers work)中英文对照版
图 6 从原始文档到解析树 这个解析过程是迭代的。解析器通常会向词法分析器请求新的子串然后试图用某些语法规则来匹 配这个子串,如果匹配了,会在解析树上加上这个子串相应的节点,然后请求新的子串;如果没 有匹配,解析器将会在内部保存这个子串,然后继续请求新的子串直到内部保存的子串匹配了一 个规则。如果没有规则可以匹配,解析器将会报出一个异常,这意味着文档是不合法的,包含着 一个语法错误。
规范(html5)把浏览器中的“web database”定义为一个完完全全的(虽然很轻)数据库。
图 1 浏览器主要组件 注释一下 Chrome 很重要,和大多数浏览器不同,它保持渲染引擎的多个实例--每个选项卡一 个,每个选项卡都是独立的进程。 我会为每个组件写一章。
组件间通信 Firefox 和 Chrome 都开发了一个专门的通信基本件。 这个会在专门的一章里讨论。
浏览器的高级结构
浏览器的主要结构如下: 1. 用户界面-包括地址栏、后退/前进按钮、书签菜单等。Every part of the browser display except
the main window where you see the requested page. 2. 浏览器引擎- 询问和操作渲染引擎的接口 3. 渲染引擎-负责展现所请求的内容,比如如果请求的是 html,它就负责解析 html 和 css 并且在
expression := term operation term operation := PLUS | MINUS term := INTEGER | expression 我们说过如果一种语言的语法是上下文无关语法的话,它就能被常用的解析器所解析。上下文无 关语法直观的定义是能够被 BNF 表示的语法,正式的定义可以去看 /wiki/Context-free_grammar。

简述web的工作原理。

简述web的工作原理。

简述web的工作原理。

Web的工作原理是指Web系统是如何实现用户发送请求并获得响应的过程。

下面将从网络通信、客户端和服务器、HTTP协议以及网页渲染几个方面进行简述。

Web的工作离不开网络通信。

用户通过计算机上的浏览器向服务器发送请求,请求的目标可以是一个具体的网页、一个文件或者一个应用程序。

这个请求经过用户的计算机、网络传输中的路由器等设备,最终到达服务器。

Web的工作涉及到客户端和服务器。

客户端是指用户使用的设备,如计算机、手机等,而服务器则是存储和处理用户请求的设备。

当用户在浏览器中输入一个网址或点击一个链接时,浏览器会根据URL解析出服务器的地址,并将请求发送给服务器。

服务器接收到请求后,会根据请求的内容进行处理,并返回相应的响应。

第三,Web的工作基于HTTP协议。

HTTP(Hypertext Transfer Protocol)是一种用于传输超文本的应用层协议。

它定义了客户端和服务器之间的通信规则。

当用户在浏览器中发送请求时,浏览器会使用HTTP协议将请求发送给服务器。

服务器接收到请求后,会根据HTTP协议中的规定进行处理,并返回相应的响应给浏览器。

Web的工作也涉及到网页的渲染。

当浏览器接收到服务器返回的响应后,它会根据响应中的内容进行网页的渲染。

网页通常包含HTML、CSS和JavaScript等代码,浏览器会解析这些代码并显示网页的内容。

HTML用于描述网页的结构,CSS用于控制网页的样式,JavaScript用于实现网页的交互功能。

Web的工作原理涉及到网络通信、客户端和服务器、HTTP协议以及网页渲染等方面。

用户通过浏览器向服务器发送请求,服务器接收到请求后根据HTTP协议进行处理,并返回相应的响应给浏览器。

浏览器接收到响应后进行网页的渲染,最终将网页的内容显示给用户。

这一过程是Web系统实现用户发送请求并获得响应的基本原理。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

前端必读:浏览器内部工作原理目录一、介绍二、渲染引擎三、解析与DOM树构建四、渲染树构建五、布局六、绘制七、动态变化八、渲染引擎的线程九、CSS2可视模型英文原文:How Browsers Work: Behind the Scenes of Modern Web Browsers一、介绍浏览器可以被认为是使用最广泛的软件,本文将介绍浏览器的工作原理,我们将看到,从你在地址栏输入到你看到google主页过程中都发生了什么。

将讨论的浏览器今天,有五种主流浏览器——IE、Firefox、Safari、Chrome及Opera。

本文将基于一些开源浏览器的例子——Firefox、Chrome及Safari,Safari是部分开源的。

根据W3C(World Wide Web Consortium万维网联盟)的浏览器统计数据,当前(2011年5月),Firefox、Safari及Chrome的市场占有率综合已接近60%。

(原文为2009年10月,数据没有太大变化)因此,可以说开源浏览器已经占据了浏览器市场的半壁江山。

浏览器的主要功能浏览器的主要功能是将用户选择的web资源呈现出来,它需要从服务器请求资源,并将其显示在浏览器窗口中,资源的格式通常是HTML,也包括PDF、image及其他格式。

用户用URI(Uniform Resource Identifier统一资源标识符)来指定所请求资源的位置,在网络一章有更多讨论。

HTML和CSS规范中规定了浏览器解释html文档的方式,由W3C组织对这些规范进行维护,W3C是负责制定web标准的组织。

HTML规范的最新版本是HTML4(/TR/html401/),HTML5还在制定中(译注:两年前),最新的CSS规范版本是2(/TR/CSS2),CSS3也还正在制定中(译注:同样两年前)。

这些年来,浏览器厂商纷纷开发自己的扩展,对规范的遵循并不完善,这为web开发者带来了严重的兼容性问题。

但是,浏览器的用户界面则差不多,常见的用户界面元素包括:∙用来输入URI的地址栏∙前进、后退按钮∙书签选项∙用于刷新及暂停当前加载文档的刷新、暂停按钮∙用于到达主页的主页按钮奇怪的是,并没有哪个正式公布的规范对用户界面做出规定,这些是多年来各浏览器厂商之间相互模仿和不断改进的结果。

HTML5并没有规定浏览器必须具有的UI元素,但列出了一些常用元素,包括地址栏、状态栏及工具栏。

还有一些浏览器有自己专有的功能,比如Firefox的下载管理。

更多相关内容将在后面讨论用户界面时介绍。

浏览器的主要构成(High Level Structure)浏览器的主要组件包括:1. 用户界面-包括地址栏、后退/前进按钮、书签目录等,也就是你所看到的除了用来显示你所请求页面的主窗口之外的其他部分。

2. 浏览器引擎-用来查询及操作渲染引擎的接口。

3. 渲染引擎-用来显示请求的内容,例如,如果请求内容为html,它负责解析html及css,并将解析后的结果显示出来。

4. 网络-用来完成网络调用,例如http请求,它具有平台无关的接口,可以在不同平台上工作。

5. UI后端-用来绘制类似组合选择框及对话框等基本组件,具有不特定于某个平台的通用接口,底层使用操作系统的用户接口。

6. JS解释器-用来解释执行JS代码。

7. 数据存储-属于持久层,浏览器需要在硬盘中保存类似cookie的各种数据,HTML5定义了web database技术,这是一种轻量级完整的客户端存储技术图1:浏览器主要组件需要注意的是,不同于大部分浏览器,Chrome为每个Tab分配了各自的渲染引擎实例,每个Tab就是一个独立的进程。

对于构成浏览器的这些组件,后面会逐一详细讨论。

二、渲染引擎(The rendering engine)渲染引擎的职责就是渲染,即在浏览器窗口中显示所请求的内容。

默认情况下,渲染引擎可以显示html、xml文档及图片,它也可以借助插件(一种浏览器扩展)显示其他类型数据,例如使用PDF阅读器插件,可以显示PDF格式,将由专门一章讲解插件及扩展,这里只讨论渲染引擎最主要的用途——显示应用了CSS之后的html及图片。

渲染引擎简介本文所讨论的浏览器——Firefox、Chrome和Safari是基于两种渲染引擎构建的,Firefox使用Geoko——Mozilla自主研发的渲染引擎,Safari和Chrome都使用webkit。

Webkit是一款开源渲染引擎,它本来是为Linux平台研发的,后来由Apple移植到Mac及Windows上,相关内容请参考。

渲染主流程(The main flow)渲染引擎首先通过网络获得所请求文档的内容,通常以8K分块的方式完成。

下面是渲染引擎在取得内容之后的基本流程:解析html以构建dom树-> 构建render树-> 布局render树-> 绘制render树图2:渲染引擎基本流程渲染引擎开始解析html,并将标签转化为内容树中的dom节点。

接着,它解析外部CSS文件及style标签中的样式信息。

这些样式信息以及html中的可见性指令将被用来构建另一棵树——render树。

Render树由一些包含有颜色和大小等属性的矩形组成,它们将被按照正确的顺序显示到屏幕上。

Render树构建好了之后,将会执行布局过程,它将确定每个节点在屏幕上的确切坐标。

再下一步就是绘制,即遍历render树,并使用UI后端层绘制每个节点。

值得注意的是,这个过程是逐步完成的,为了更好的用户体验,渲染引擎将会尽可能早的将内容呈现到屏幕上,并不会等到所有的html都解析完成之后再去构建和布局render树。

它是解析完一部分内容就显示一部分内容,同时,可能还在通过网络下载其余内容。

图3:webkit主流程图4:Mozilla的Geoko渲染引擎主流程从图3和4中可以看出,尽管webkit和Gecko使用的术语稍有不同,他们的主要流程基本相同。

Gecko称可见的格式化元素组成的树为frame树,每个元素都是一个frame,webkit则使用render树这个名词来命名由渲染对象组成的树。

Webkit中元素的定位称为布局,而Gecko中称为回流。

Webkit称利用dom节点及样式信息去构建render树的过程为attachment,Gecko在html和dom树之间附加了一层,这层称为内容接收器,相当制造dom元素的工厂。

下面将讨论流程中的各个阶段。

三、解析与DOM树构建(Parsing and DOM tree construction)解析(Parsing-general)既然解析是渲染引擎中一个非常重要的过程,我们将稍微深入的研究它。

首先简要介绍一下解析。

解析一个文档即将其转换为具有一定意义的结构——编码可以理解和使用的东西。

解析的结果通常是表达文档结构的节点树,称为解析树或语法树。

例如,解析“2+3-1”这个表达式,可能返回这样一棵树。

图5:数学表达式树节点文法(Grammars)解析基于文档依据的语法规则——文档的语言或格式。

每种可被解析的格式必须具有由词汇及语法规则组成的特定的文法,称为上下文无关文法。

人类语言不具有这一特性,因此不能被一般的解析技术所解析。

解析器-词法分析器(Parser-Lexer combination)解析可以分为两个子过程——语法分析及词法分析词法分析就是将输入分解为符号,符号是语言的词汇表——基本有效单元的集合。

对于人类语言来说,它相当于我们字典中出现的所有单词。

语法分析指对语言应用语法规则。

解析器一般将工作分配给两个组件——词法分析器(有时也叫分词器)负责将输入分解为合法的符号,解析器则根据语言的语法规则分析文档结构,从而构建解析树,词法分析器知道怎么跳过空白和换行之类的无关字符。

图6:从源文档到解析树解析过程是迭代的,解析器从词法分析器处取到一个新的符号,并试着用这个符号匹配一条语法规则,如果匹配了一条规则,这个符号对应的节点将被添加到解析树上,然后解析器请求另一个符号。

如果没有匹配到规则,解析器将在内部保存该符号,并从词法分析器取下一个符号,直到所有内部保存的符号能够匹配一项语法规则。

如果最终没有找到匹配的规则,解析器将抛出一个异常,这意味着文档无效或是包含语法错误。

转换(Translation)很多时候,解析树并不是最终结果。

解析一般在转换中使用——将输入文档转换为另一种格式。

编译就是个例子,编译器在将一段源码编译为机器码的时候,先将源码解析为解析树,然后将该树转换为一个机器码文档。

图7:编译流程解析实例Parsing example图5中,我们从一个数学表达式构建了一个解析树,这里定义一个简单的数学语言来看下解析过程。

词汇表:我们的语言包括整数、加号及减号。

语法:自底向上解析器称为shift reduce解析器,因为输入向右移动(想象一个指针首先指向输入开始处,并向右移动),并逐渐简化为语法规则。

自动化解析(Generating parsers automatically)解析器生成器这个工具可以自动生成解析器,只需要指定语言的文法——词汇表及语法规则,它就可以生成一个解析器。

创建一个解析器需要对解析有深入的理解,而且手动的创建一个由较好性能的解析器并不容易,所以解析生成器很有用。

Webkit使用两个知名的解析生成器——用于创建语法分析器的Flex及创建解析器的Bison(你可能接触过Lex和Yacc)。

Flex的输入是一个包含了符号定义的正则表达式,Bison的输入是用BNF格式表示的语法规则。

HTML解析器(HTML Parser)HTML解析器的工作是将html标识解析为解析树。

HTML文法定义(The HTML grammar definition)W3C组织制定规范定义了HTML的词汇表和语法。

非上下文无关文法(Not a context free grammar)正如在解析简介中提到的,上下文无关文法的语法可以用类似BNF的格式来定义。

不幸的是,所有的传统解析方式都不适用于html(当然我提出它们并不只是因为好玩,它们将用来解析css 和js),html不能简单的用解析所需的上下文无关文法来定义。

Html有一个正式的格式定义——DTD(Document Type Definition文档类型定义)——但它并不是上下文无关文法,html更接近于xml,现在有很多可用的xml解析器,html有个xml的变体——xhtml,它们间的不同在于,html更宽容,它允许忽略一些特定标签,有时可以省略开始或结束标签。

总的来说,它是一种soft语法,不像xml呆板、固执。

显然,这个看起来很小的差异却带来了很大的不同。

相关文档
最新文档