Node中的模块和包之间的区别?

Bre*_*ako 47 package node.js

我是Node noob.Node.js中的"包"和"模块"有什么区别?

mat*_*tth 47

模块是node.js的库.请参阅以下api的摘录:

Node有一个简单的模块加载系统.在节点中,文件和模块是一一对应的.

模块示例:

  • Circle.js
  • Rectangle.js
  • Square.js

包是一个或多个模块(库)组合(或打包)在一起.这些通常由其他包或您自己的项目使用.Node.js使用包管理器,您可以在其中查找和安装数千个包.

包的示例:

Shapes             <- Package name
  - Circle.js      <- 
  - Rectangle.js   <- Modules that belong to the Shapes package
  - Square.js      <-
Run Code Online (Sandbox Code Playgroud)

基本上,您可以安装软件包,Shapes并可以访问Circle,Rectangle和Square模块.


MDI*_*DIT 9

一个模块是有一些合理的功能单一的JavaScript文件。

是与它的内部的一个或多个模块,并且具有围绕包装元数据的的package.json文件的目录。

例如,一个包可以非常简单下划线只有一个 JavaScript 文件(我们看到它的两个版本,常规和缩小版本以及 package.json)

open@open-PC MINGW64 ~/Desktop/module-package-demo/node_modules/underscore
$ dir
LICENSE       README.md      underscore-min.js
package.json  underscore.js  underscore-min.js.map
Run Code Online (Sandbox Code Playgroud)

而像Express这样更复杂的包在根目录中有一个 JavaScript 文件,但在它的子目录中有更多的 JavaScript 文件,并且在它的子目录中还有更多

open@open-PC MINGW64 ~/Desktop/module-package-demo/node_modules/express
$ dir
History.md  index.js  lib  LICENSE  package.json  Readme.md
Run Code Online (Sandbox Code Playgroud)

现在人们将包称为模块是很常见的。


use*_*789 7

我搜索Node.js文档并找到了他们的模块定义

在 Node.js 模块系统中,每个文件都被视为一个单独的模块

npm在这里有一些官方定义。

是受一个的package.json文件中描述的文件或目录。
模块是在可以由Node.js的需要()函数被加载的node_modules目录中的任何文件或目录。
注意:由于模块不需要具有 package.json 文件,因此并非所有模块都是包。只有具有 package.json 文件的模块也是包。


tim*_*hew 5

你能做的一切require()都是一个模块。在CommonJS世界的大多数情况下,每个模块一个文件。

一个包可以包含多个模块,但您通常会加载入口点 ( main),如果没有提供属性,则它在package.json或其index.js 中指定main,例如:require('express')

但是,如果您知道位置,您也可以需要另一个文件(不是主文件)。例如,require("express/lib/application")(在 Node.js 中你可以省略扩展名:.js)。

一个包可以访问来自其他包的模块,如果它们列在package.jsondependencies属性中。

实际上 npm 将所有包安装到node_modules 中,这令人困惑,因为它应该是node_packages

模块 | Node.js 文档


Jas*_*ols 3

每个Node应用程序都是a package,并且应该有一个package.json文件.那些充当中间件(或相当于库)的应用程序,应该安装在其他应用程序中modules.

简而言之,所有modules都是packages,但并非所有packages都被用作modules,尽管许多都可以.

将安装模块(如果dependenciespackage.json文件中列出)并放入node_modules文件夹中,但npm通过其package.json文件进行递归以添加modules它们所依赖的文件.