我知道像C或C ++这样的通用语言是如何工作的。我的意思是你编写一个C或C ++源代码,并使用编译器生成一个对象或直接exe文件,其中包含cpu的机器代码来完成工作。但我想知道所有网络语言如何像HTML / CSS / Javascript等一样工作?我是说他们是如何被处决的?谁执行它们?他们是如何翻译的?因为你无法使用像gcc这样的编译器来编译像HTML这样的网络语言并运行它...浏览器是否有一些HTML引擎可以理解HTML然后将其转换为C或什么代码?
答案 0 :(得分:1)
HTML未执行,呈现。 HTML 将文档的结构描述为元素的层次结构。在屏幕上呈现每个元素的方式符合某些规则(例如"标题必须显示为16pt Helvetica,黑色粗体")并且可以使用样式规则进行更改。样式规则在CSS中指定,这是另一种声明性(即描述)语言。
总而言之,HTML和CSS描述应该显示什么,而不是 如何完成。因此,您无法将它们编译为可执行代码(例如,使用gcc),因为它们中没有任何操作序列。它们是描述,浏览器将决定最佳的行动方式。
相反,Javascript是一种通用语言,如C或C ++。它碰巧是所有浏览器都能理解的。它由浏览器执行,甚至可以编译它(它被称为JIT),并且可以通过一组特定的API访问和操作页面。
答案 1 :(得分:1)
这是一个非常好的链接:How browsers Work来回答你的问题。
浏览器的主要组件是:
用户界面 - 包括地址栏,后退/前进按钮,书签菜单等。除了您看到所请求页面的主窗口外,浏览器的每个部分都会显示。
浏览器引擎 - 查询和操作渲染引擎的界面。
呈现引擎 - 负责显示请求的内容。例如,如果请求的内容是HTML,则它负责解析HTML和CSS并在屏幕上显示解析的内容。
网络 - 用于网络呼叫,例如HTTP请求。它具有独立于平台的界面以及每个平台的底层实现。
UI后端 - 用于绘制组合框和窗口等基本小部件。它公开了一个非平台特定的通用接口。它下面使用操作系统用户界面方法。
JavaScript解释器 - 用于解析和执行JavaScript代码。 数据存储。这是一个持久层。浏览器需要保存硬盘上的各种数据,例如cookie。新的HTML规范(HTML5)定义了“网络数据库”。这是浏览器中一个完整的(虽然很轻的)数据库。
答案 2 :(得分:0)
实际上你调用的不是js以外的语言(HTML / CSS /)。 Html和CSS只是标记和格式标准。基于标准,使用Web浏览器中的引擎拦截。但是js是一种具有逻辑和语法以及语义并使用分离引擎拦截的语言。
答案 3 :(得分:0)
是的,您的浏览器编译或解释和Javascript。你可以辩论它是在编译还是在解释。请参阅:http://blogs.msdn.com/b/ptorr/archive/2003/09/14/56184.aspx
您的浏览器使用其渲染引擎解释HTML / CSS: http://taligarsiel.com/Projects/howbrowserswork1.htm#Rendering_engines
答案 4 :(得分:0)
使用浏览器渲染引擎..
功能齐全的浏览器引擎非常复杂。 Blink,Gecko,WebKit--每个都有数百万行代码。甚至更年轻,更简单的渲染引擎,如Servo和WeasyPrint,每一行都有成千上万行。构建dom,解析html,css,js和绘画相应的是引擎处理的一些功能。
当渲染引擎从网络层获取所请求文档的内容时。它将开始解析HTML文档并将标记转换为名为“内容树”的树中的DOM节点。它将解析外部CSS文件和样式元素中的样式数据。样式信息与HTML中的可视指令一起用于创建另一个树 - 渲染树。 引擎可能会在呈现页面之前等待接收所有数据,或者可能在收到所有数据之前开始呈现。
渲染树包含什么? 它包含具有颜色和尺寸等视觉属性的矩形。矩形的顺序正确,可以在屏幕上显示。 构建渲染树之后,它将经历“布局”过程。这里给每个节点提供它应该出现在屏幕上的确切坐标。下一个阶段是绘制 - 将遍历渲染树,并使用UI后端层绘制每个节点。 绘画完成后,您将在网页上看到最终请求的数据。