所有软件包也是Node中的模块吗?

时间:2020-04-22 18:32:04

标签: node.js npm node-modules

我已经读过npm doc,但是我的一些概念仍然不清楚,可能看起来很幼稚,如下所示:

Q1。

包是package.json描述的文件或目录 文件。

“由package.json文件描述的” 是什么意思?有没有容易理解的例子?

第二季度。

要打包的条件

包是package.json描述的文件或目录 文件。

要成为模块的条件

要由Node.js require()函数加载,模块必须是一个 以下:

  • 包含package.json文件的文件夹,其中包含“主”字段。
  • 其中包含index.js文件的文件夹。
  • JavaScript文件。

注意:由于模块不需要具有package.json文件,因此不需要 所有模块都是软件包。仅具有package.json文件的模块 也是包。

因此,根据注意,这是否也并不意味着所有软件包也是模块,因为所有软件包都有package.json文件?

1 个答案:

答案 0 :(得分:1)

模块是可以用require()加载的任何东西,并且可以做一些有用的事情。它可以是单个文件。它不需要与package.json相关联。实际上,许多本地开发的“模块”却没有。同一目录中可以有许多模块。

软件包是为便于分发而设计的一组代码。如果您使用的是NPM软件包管理器,则NPM软件包将包含package.json文件,该文件包含一堆有关该软件包的元数据,包括诸如对其他模块的依赖关系,作者信息,存储库信息以及有关如何测试的信息模块,有关哪个文件是模块的启动文件的信息,等等...

仅供参考,NPM并不是唯一的软件包管理器,因此它也不是唯一的处理方式,但是对于node.js开发,它无疑是使用最广泛的软件包,并且它提供了一个中央存储库,可以轻松地“发布”软件包进行广泛而简单的分发。

所有软件包在Node中也都是模块吗?

我想可以在程序包中分发可运行代码以外的东西,但是NPM包的主要用途是分发模块。

这里是分发静态数据而不是代码的示例:JSON Data Node Modules Part 1: Using NPM to Store and Distribute Static Data