我感到有点困惑,有人可以帮助描述JavaScript Engine和JavaScript Runtime Environment之间的区别.BTW,事件循环是在引擎还是运行时实现的?
geo*_*org 118
与C和其他编译语言不同,Javascript在一个容器中运行 - 一个读取你的js代码并运行它们的程序.这个程序必须做两件事
第一部分称为Engine,第二部分是Runtime.
例如,Chrome浏览器和node.js使用相同的引擎 - V8,但它们的运行时不同:在Chrome中,您有windowDOM对象等,而节点则为您提供require缓冲区和进程.
Luo*_*Hui 27
想象一下机器人正在播放音乐:
想象一下机器人正在灭火:
Jör*_*tag 21
我们首先想象一下JavaScript的Ahead-Of-Time编译实现.
该编译器将转换JavaScript代码,例如,原生x86机器代码可以运行.但是,JavaScript中有一些东西在运行时发生,因此无法静态编译.例如,垃圾收集或反射.因此,为了使程序运行,需要在运行时提供某种支持服务,例如垃圾收集器和反射系统.此外,JavaScript有eval,这意味着(在我们假设的编译实现中)编译器本身或其他一些解释器需要在运行时可用.
我们称之为运行时支持服务.
需要可用于该程序的第二个事情,是对象如Array,Function,Object等,和功能,例如forEach.这个从一开始就需要对程序可用的对象和函数集合通常称为核心库或基本库.对于像JavaScript这样设计为嵌入式的语言,根据上下文,还有一些假定存在的附加库.例如,对于嵌入在浏览器中的JavaScript,我们期望DOM对象和函数以及全局window和document对象等存在.这些也可以被视为核心库的一部分.
最后,让我们现在忘记我们的假设编译器并查看解释器(或JIT编译器或混合模式引擎或字节码VM).在这里,口译员(或JIT,或其他)是拼图的第三部分.这是实际执行JavaScript程序的事情.(从技术上讲,JIT不执行,编译,然后执行其他操作.)
术语不是100%明确:有时,只有运行时支持服务被称为运行时环境,有时,核心库也包含在内.
执行引擎仅指解释器(JIT,VM,...)或解释器和运行时环境的组合.编译器永远不会被称为执行引擎(它不执行任何操作,只是翻译成另一种语言),术语执行引擎很少用于引用静态编译的实现.
事件循环是主机环境的一部分,而不是JavaScript实现.
raj*_*008 11
这是运行时环境列表
示例:Chrome、Firefox、Safari、Opera、Edge等
示例:NodeJS、Deno
例如:电子等。
示例:NativeScript、Ionic、PhoneGap、React Native 等
这是引擎列表
用于:用于 Chrome 浏览器、NodeJS 和基于 android 的手机
用于:在 Firefox 浏览器中使用
用于:用于 Safari 浏览器和基于 iOS 的手机
用于:用于 Microsoft Edge 浏览器
| 归档时间: |
|
| 查看次数: |
14488 次 |
| 最近记录: |