Node.js对于我们来说,再熟悉不过了,很多的框架结构。Node.js 10即将推出,并且有很多改进。令我们兴奋的是对本地模块库n-api的更新。它在即将发布的版本中脱离实验状态。
与其他语言相比,JavaScript总是拥有最低限度的标准库。一开始,我们只在浏览器中使用JavaScript。随着浏览器逐渐发展并成熟为应用程序虚拟机,需要通过浏览器库添加更多功能。这带来了新的应用程序,如Web蓝牙,Web USB等; 不断扩展我们可以使用JavaScript的东西。
一点历史
有一次,我们意识到,由于其事件驱动性,JavaScript将成为编写高度可扩展的服务器应用程序的绝佳语言。Node.js诞生了。一个新的最小标准库,由用于编写非浏览器应用程序(如文件系统绑定,TCP堆栈,模块加载程序等)所需的一些基本功能组成。很难准确估计未来的用例,所以为了使平台更加灵活,增加了用C / C 编写模块的能力。这使得开发人员可以充分利用其平台上提供的任何API,但仍然将其公开为JavaScript API供用户使用。
许多伟大的模块是这样写的。 LevelDB是一个嵌入式的快速数据库,它被编写为一个本地模块,它将LevelDB C 代码与易于使用的JavaScript API相结合。LevelDB引发了一个生态系统,在其中开发了许多有趣的模块和应用程序。很少有LevelDB的用户知道模块中的C 是如何工作的,但幸运的是,我们不需要 - 本地模块将所有这些都抽象出来。
随着越来越多的人开始使用本地模块,我们也学到了一些缺点。事实证明,它们很难维护,因为用于实现模块的V8 API变化很大。对于用户使用模块,他们需要在他们的机器上安装一个完整的编译器堆栈(在Windows上,这个过程涉及用户必须安装Visual Studio!)。
Along Came NAN
为了解决不断变化的V8 API的问题, NAN 诞生了。NAN代表“Node.js的Native Abstractions”,它是一系列抽象出不断变化的V8 API之间差异的宏。实际上,NAN最初由Rod Vagg创建, 以帮助 LevelDB 开发。这意味着您可以使用最新版本的Node.js编写本地模块,并且可以在大多数以前的版本中工作,而且不会太复杂。这也意味着在大多数较新的Node.js版本中,您的旧模块将继续编译。这是能够维护原生模块的巨大改进。
网友评论文明上网理性发言已有0人参与
发表评论: