我对node.js很新,我似乎无法在任何地方找到关于什么节点绑定的定义。我已经看到这个术语用于幻灯片和nodejs会谈,但它从未明确解释过。任何人都可以帮我澄清这个概念。我附上了我所指的内容。
答案 0 :(得分:42)
不是理解node.js绑定是什么,而是首先理解“绑定”是什么更有用。
假设您正在编写一个带有node.js(JavaScript)后端的Web应用程序:
现在通常你会自己编写所有代码。但是,您知道有一个很好的排序库可以处理第3步(即排序查询结果)。唯一的问题是库是用C / C ++等系统编程语言编写的,而代码是用JavaScript编写的。通常,您不能在代码中使用该库,因为它们使用不同的编程语言,但是使用绑定,您可以。
绑定基本上是“绑定”两种不同编程语言的库,以便用一种语言编写的代码可以用在另一个库中编写的代码中。存在绑定时,您不必再次编写所有代码,因为它们使用不同的语言。绑定的另一个动机是您可以从不同编程语言的优势中受益。例如,C / C ++比JavaScript快得多。为了性能目的,在C / C ++中编写一些代码可能是有益的。
现在让我们来看看你附上的图片。据谷歌官方网站称,V8引擎是“written in C++”。 libuv添加了一个提供异步I / O操作的抽象层,用C语言编写。但是,Node.js的核心功能,如网络,数据库查询,文件系统I / O,都在库中提供(或者如果你喜欢的模块)用JavaScript编写。另外,您的代码也是用JavaScript编写的。现在,为了使用不同编程语言编写的这些技术相互通信,您必须使用绑定将它们“绑定”在一起。这些绑定是node.js绑定。
我最近写了一篇文章解释了Node.js' internal codebase的架构,我解释了绑定如何适合Node.js!
答案 1 :(得分:2)
经过进一步研究,我发现了这篇文章。我希望这可以帮助任何人:
http://pravinchavan.wordpress.com/2013/11/08/c-binding-with-node-js/
答案 2 :(得分:0)
Node.js绑定是可以在Node.js代码中使用的一系列方法,这些方法实际上只是在幕后运行C ++代码。
fs.readFile()
此方法不是javascript的一部分。它是作为node.js运行时的一部分提供给v8的。因此,javascript不知道如何从磁盘读取文件,但是C ++可以。因此,当我们使用javascript代码和node.js从磁盘读取文件时,它只是将所有内容都推迟到了C ++函数中,该函数实际上可以从磁盘读取文件并返回结果。
JavaScript在浏览器中也具有绑定。例如;
document.querySelector()
不是javascript代码。它是由chrome V8引擎实现的。