什么是node.js 绑定?

问题描述 投票:0回答:3

我对 Node.js 非常陌生,我似乎无法在任何地方找到有关 Node.js 绑定的定义。我在幻灯片和 Nodejs 演讲中看到过这个术语,但从未明确解释过。谁能帮我澄清这个概念?我附上了我所指的图片。enter image description here

javascript node.js v8 libuv
3个回答
79
投票

首先了解什么是“绑定”比了解什么是 Node.js 绑定更有用。

假设您正在编写一个 Web 应用程序,其中有一个 Node.js (JavaScript) 后端:

  1. 收到客户的要求,
  2. 对数据库进行查询,
  3. 对查询结果进行排序,最后
  4. 将结果返回给客户端。

现在通常您会自己编写所有代码。但是,您知道有一个出色的排序库可以处理第 3 步(即对查询结果进行排序)。唯一的问题是该库是用系统编程语言(例如 C/C++)编写的,而您的代码是用 JavaScript 编写的。通常,您不能在代码中使用该库,因为它们采用不同的编程语言,但通过绑定,您可以。

绑定基本上是“绑定”两种不同编程语言的库,以便用一种语言编写的代码可以在另一种库编写的代码中使用。有了绑定,您就不必仅仅因为它们采用不同的语言而再次编写所有代码。绑定的另一个动机是您可以从不同编程语言的优点中受益。例如,C/C++ 比 JavaScript 快得多。为了性能目的,用 C/C++ 编写一些代码可能会有好处。

现在让我们看一下您附上的图片。 V8 引擎,根据 Google 官网介绍,是“用 C++ 编写的”。 libuv 添加了一个抽象层,提供异步 I/O 操作,用 C 编写。然而,Node.js 的核心功能,如网络、数据库查询、文件系统 I/O,是在库(或模块)中提供的如果你愿意的话)是用 JavaScript 编写的。另外,您的代码也是用 JavaScript 编写的。现在,为了使这些用不同编程语言编写的技术能够相互通信,您必须使用绑定将它们“绑定”在一起。这些绑定是 node.js 绑定。

我最近写了一篇文章,解释了

Node.js 内部代码库的架构,其中我解释了绑定如何融入 Node.js!


7
投票
Node.js 绑定是一系列可以在 Node.js 代码中使用的方法,这些方法实际上只是在后台运行 C++ 代码。

fs.readFile()

此方法不是 javascript 的一部分。它作为 Node.js 运行时的一部分提供给 v8。所以 javascript 不知道如何从磁盘读取文件,但 C++ 知道。因此,当我们使用 JavaScript 代码和 Node.js 从磁盘读取文件时,它只是将所有这些都推迟到可以实际从磁盘读取文件并返回结果的 C++ 函数。

Javascript 在浏览器中也有绑定。例如;

document.querySelector()

不是 JavaScript 代码。它是由chrome V8引擎实现的。


1
投票
经过进一步研究,我发现了这篇文章。我希望这对任何人都有帮助:

http://pravinchavan.wordpress.com/2013/11/08/c-binding-with-node-js/

© www.soinside.com 2019 - 2024. All rights reserved.