我对node.js很新,我似乎无法在任何地方找到关于节点绑定的定义.我已经看到这个术语用于幻灯片和nodejs会谈,但从未明确解释过.任何人都可以帮我澄清这个概念.我附上了我所指的内容.
Are*_* Li 48
不是理解node.js绑定是什么,而是首先理解"绑定"是什么更有用.
假设您正在编写一个web.apps(JavaScript)后端的Web应用程序:
现在通常你会自己编写所有代码.但是,您知道有一个很好的排序库可以处理第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!
Node.js 绑定是一系列可以在 Node.js 代码中使用的方法,这些方法实际上只是在后台运行 C++ 代码。
fs.readFile()
Run Code Online (Sandbox Code Playgroud)
此方法不是 javascript 的一部分。它作为 Node.js 运行时的一部分提供给 v8。所以 javascript 不知道如何从磁盘读取文件,但 C++ 知道。因此,当我们使用 JavaScript 代码和 Node.js 从磁盘读取文件时,它只是将所有这些都推迟到可以实际从磁盘读取文件并返回结果的 C++ 函数。
Javascript 在浏览器中也有绑定。例如;
document.querySelector()
Run Code Online (Sandbox Code Playgroud)
不是 JavaScript 代码。它是由chrome V8引擎实现的。
经过进一步研究,我发现了这篇文章。我希望这可以帮助任何人:
http://pravinchavan.wordpress.com/2013/11/08/c-binding-with-node-js/
归档时间: |
|
查看次数: |
12617 次 |
最近记录: |