24

我对 node.js 很陌生,我似乎无法在任何地方找到关于 node.js 绑定的定义。我在幻灯片和 nodejs 演讲中看到过这个术语,但从未明确解释过。谁能帮我澄清这个概念?我附上了我所指的图片。在此处输入图像描述

4

3 回答 3

64

与其理解什么是 node.js 绑定,不如先理解什么是“绑定”更有用。

假设您正在编写一个带有 node.js (JavaScript) 后端的 Web 应用程序:

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

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

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

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

我最近写了一篇文章,解释了Node.js 内部代码库的架构,我解释了绑定如何适应 Node.js!

于 2016-05-27T18:30:29.020 回答
3

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

fs.readFile()  

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

在此处输入图像描述

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

document.querySelector()

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

于 2019-06-15T04:08:03.240 回答
1

经过进一步研究,我遇到了这篇文章。我希望这可以帮助任何人:

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

于 2014-01-06T22:18:48.633 回答