【问题标题】:I have a question about what exactly nodejs is [duplicate]我有一个关于nodejs到底是什么的问题[重复]
【发布时间】:2020-05-22 13:29:34
【问题描述】:

HTML、css 和 javascript 在 Web 浏览器中运行。好的。如果我用 C++ 编写程序并从命令行运行它,它只会在我的计算机上运行。那么 node 只是一种像“普通”编程语言一样使用 javascript 的方式吗?我知道它也是像php一样的服务器端。所以它也可以填补php角色。这一切都正确吗? - 谢谢

【问题讨论】:

  • 是的,node.js 允许您像使用普通编程语言一样使用 javascript,就像 python、ruby、perl 等。
  • 请注意,node.js 不是唯一的非浏览器 javascript 运行时。在 node.js 之前,Rhino 在一小部分 Java 人群中仍然很流行,因为它是用 Java 编写的,并且允许在 Rhino 中运行的 javascript 使用用 Java、Closure、Kotlin 等编写的其他 JVM 类。最近还有一个很多关于 Deno 的炒作,它类似于 node.js,但也理解 Typescript,而无需将 ts 代码编译为 js。对于所有非浏览器服务器/桌面端 javascript 解释器,请参阅维基百科:en.wikipedia.org/wiki/…
  • @VivekGoel Node.js 不需要像服务器一样工作。它也可以用来编写普通的命令行应用程序。它也可以像客户端一样工作。我有很多非服务器 node.js 应用程序,例如 github.com/slebetman/httpstress

标签: javascript node.js


【解决方案1】:

让我们从 V8 开始 V8 是用 C++ 编写的 Javascript 引擎”,那是什么意思? V8 是谷歌为在 Chrome 浏览器中使用而创建的开源项目。它基本上是一个编译器。它编译和执行 Javascript 代码,处理调用堆栈,处理内存分配,处理垃圾收集,提供在 Vanilla Javascript 上使用的所有数据类型、运算符、对象和函数。但是 V8 无法处理 DOM,因为没有浏览器。这很公平。

https://medium.com/@berkaybindebir/deep-dive-node-js-762552ad31a8 撰稿人 伯凯宾德比尔

【讨论】:

  • 请注意,Google 并未创建 V8。他们目前是 V8 项目的最大支持者(不确定他们现在是否拥有它)无论是在财务上还是通过代码提交,但他们没有创建它
  • V8 部分对于 node.js 的重要性并不重要。它只是使用最广泛的官方版本。 node.js 项目也有 node.js 的 chakracore 版本,但考虑到微软自己已经放弃 chakra 并采用 V8 for Edge,它不太可能流行起来
  • “它基本上是一个编译器。”这是非常具有误导性的。编译器接受人类编写的代码并生成机器可读的代码,然后停止。它不运行此代码。您需要另一个运行代码的环境。 Node 更像 PHP - 因为它代码运行的环境。它采用人类编写的代码并以可以作为机器指令的方式对其进行解释。在某些情况下一个编译步骤,但这不是强制性的,它只是一个可能会或可能不会应用的优化。
  • @VLAZ -- V8 的描述清楚地表明它使用 JIT 编译器将其转换为内部 V8 字节码格式。您描述的是纯编译器,而不是 JIT 编译器。
  • @KaseyChang JIT 并非强制运行 JavaScript。 Node 可以与任何引擎一起工作。是否有编译无关紧要。此外,V8 不是 Node——理论上引擎是可变的。实践中几乎没有竞争,但不要让我们在这里错误地混合概念。 Node 运行 JavaScript 代码。这就是它的作用。它是一个环境,而不是编译器。即使我们考虑 JIT 编译,这也是过程中的一个步骤。编译器不会“运行”代码。它提供了要在链中运行的代码。
猜你喜欢
  • 2011-05-03
  • 2015-06-08
  • 2010-09-30
  • 2010-11-14
  • 2020-01-27
  • 1970-01-01
  • 2021-10-29
  • 1970-01-01
  • 2016-05-21
相关资源
最近更新 更多