什么是“本机模块工具”?帮助新手决定是否有必要(NodeJS 安装)

Cod*_*ell 7 javascript installation node.js chocolatey native-module

我刚刚开始我的 NodeJS 课程,该讲座是在 NodeJS 版本 10 时录制的(在 Mac 上)。我使用的是 Windows,现在是版本 16。本讲座不包含安装屏幕的此页面:

安装向导截图

摘要:我不知道我是否想要本机模块,或者它们是什么 - 但我不想要巧克力味。

我已经完成了我的研究,但我仍然找不到任何东西可以在任何地方为我解决以下问题。

1.我的问题:这些
原生模块 有多重要?我需要它们吗?或者您推荐它们,为什么?

2.Chocolatey:
出于兴趣,也许你可以告诉我为什么 NodeJS将原生模块和 Chocolatey捆绑在一起?

我决定不想要巧克力(没问题,如果我决定安装“工具”,那么我将进入 GitHub 并手动安装它们,如屏幕截图中所述。)

我不想要巧克力的原因是因为:根据我的研究,我认为我不需要巧克力,并且我发现卸载巧克力可能会导致我出现一两个问题,所以我会一起避免它 - 但我想我'我要顺便提一下,因为也许有人知道将它们捆绑在一起的一个非常有效的原因,这会改变我的想法。

非常感谢 Stack Overflow 社区。

Ben*_*est 6

本机模块需要编译,通常(但不限于)从 C/C++ 源代码编译,才能发挥作用。有些人像癌症一样避免它们,因为它们需要在安装时进行编译,这可能会带来部署风险。其他人(比如我)接受本机模块是因为它们可以带来性能优势。

请注意,这并不是 Javascript 或 Node.js 独有的概念。其他语言(如 Ruby 和 Python)也有“模块”(以其他名称),它们涉及编译本机代码以便也能正常运行。

至于为什么 Node.js 使用 Chocolatey 来管理其原生工具链,这是因为 Chocolatey 已经提供了可用于其所需工具的软件包。维护这些工具的单独 NPM 包是没有意义的,并且依赖现有包可以减少安装大量工具和实用程序的大量开销。此外,Chocolatey 可以在系统范围内安装或仅用于特定应用程序的使用。我不确定 Node.js 使用哪种技术,但如果它询问,我认为它想要使用系统范围的配置。

如果您不想使用 Chocolatey,则必须自行管理本机工具链。如果您告诉它使用 Chocolatey,您可以使用该choco upgrade命令管理工具链升级。


也就是说,如果我是你,我会考虑探索巧克力。它使 Windows 上的包管理变得更加容易。它与第 3 方解决方案所能达到的标准非常接近,部分原因是它是基于 构建的nuget,并且您可以在技术上使用 PowerShell 管理 Chocolatey 包,而无需安装 Chocolatey(尽管我不建议这样做,只需使用 Chocolatey)。