浏览器如何支持JavaScript

时间:2012-03-21 22:06:29

标签: javascript browser

这个问题的第一部分实际上是基于以JavaScript为中心的研究的确认请求,我整个下午一直在做。如果我对这些项目不正确,请纠正我!

  • ECMA是“维护”JavaScript的官方标准机构
  • 任何希望支持JavaScript的浏览器(全部/大部分都支持),必须在浏览器代码内部包含某种解释器(它是什么??? )引擎
  • 当有人将支持JavaScript的浏览器指向包含JavaScript代码的URI时,该浏览器会下载JS文件以及HTML,CSS等,通过此解释器运行JS,结果输出影响最终如何呈现页面

除了这些项目,我还听说过JavaScript“插件”或浏览器可以拥有的模块等术语。什么是这些插件/模块以及如果浏览器符合ECMA并且已经包含JS解释器,为什么浏览器需要它们?

提前致谢!

2 个答案:

答案 0 :(得分:4)

  • ECMA是强制执行JS“标准”的标准机构。他们保持语言的一致性和文件记录(虽然知道它的历史,但作为“标准组织”,他们并没有把这项工作做得好)

  • JavaScript引擎是嵌入浏览器中解析JavaScript源代码的软件。这就是将JavaScript转换为屏幕(和屏幕外)动作的原因。其中一个例子是V8(Chrome),TraceMonkey(火狐),Chakra(IE),Carakan(Opera)和Nitro / SquirrelFish(野生动物园)

  • 在上述情况发生之前,必须将JavaScript代码引入要解析的浏览器中(通常使用<script>标签)

  • JavaScript插件/工具包只是程序员开发的代码,可以轻松完成。他们只是做一些通常你会编码1000行的东西。这些代码还通过提供一致的跨浏览器来“改进”编程。插件/工具包的例子是jQuery(以及它的UI插件jQueryUI),YUI,Dojo等。

  • 另一方面,浏览器扩展/插件“扩展”了浏览器的功能。例如ADBlock(阻止页面广告),FlashGet(页面上的Flash文件下载)。这些人被编程到浏览器而不是页面中。但是,最近,这些扩展由JavaScript驱动,因为它易于编程

答案 1 :(得分:2)

  • ECMA是官方标准组织,为JavaScript实现的ECMAScript设定标准。 ActionScript也是如此。 ECMAScript涵盖了语言的所有编程要点和基本结构。

  • ECMA规范不包括面向浏览器的API,如DOM。这由W3C DOM标准涵盖,该标准用于定义语言中立的API。自IE 6以来,IE一直非常虔诚地支持ECMA规范,而在IE9之前几乎完全忽略了DOM的东西而转向了自己的专有BS。

  • 规范本身只是语言应该如何工作的一系列规则。只要您编写相同的内容并且给定的浏览器的解释器提供了规范定义的预期结果,它就符合ECMA,无论所考虑的版本如何。

  • 解释器解析并标记您编写的实际文本,并将其转换为浏览器运行时环境要读取的指令。现代浏览器运行实际的JIT编译器,它们实际上将JS转换为字节码,因为浏览器的运行时环境本身不需要翻译。

  • 大多数浏览器都会缓存js文件的实际二进制文件。因此,链接到同一服务器位置的同一域上的页面在新页面链接到该页面时不必下载相同的文件两次。这与任何资源(图像,css文件等)相同我不相信它们会缓存任何解释的结果,但我认为在JIT的情况下,某些预执行的结果例程(JIT预备工作基本上)可能会保留在记忆中(纯粹是我的猜测 - 但它看起来很糟糕)。

  • 在插件,框架,工具,库等单词的使用方面,我们的语言有点快,松散......通常只是JavaScript。你通过链接文件或剪切和粘贴到任何其他JS的现有文件中来“插入”。然而,通过插件,人们通常意味着它可以与一些现有的预制JS一起工作,比如JQuery,它往往通过向它返回的对象添加方法来扩展(JQuery只是一个很大的奇特函数,可以构建并返回它每当你基本上开火时对象)。库往往是用于执行各种事情的大量预定义方法的集合。就像你可以使用的仓库一样。我认为JQuery不仅仅是一个工具,而是一个库,因为它的重点更多地放在减少浏览器差异和规范化浏览器差异上。 JQ本身并没有真正做任何远离核心JS方法的东西。它只是让它更容易/更快。它有一个UI库,它基本上是一大堆插件,实际上吐出了预制的UI元素,HTML,CSS等等。框架往往更像是在前端构建大型app-type结构的系统。这不仅仅是一堆方法,它是一种构建方法的方法,旨在简化谷仓 - 提升整个应用程序结构,同时跳过为保持灵活性而通常需要做的许多更细粒度的工作(因此框架通常不是特别灵活,但这并不意味着它们不能成为。)