Node中的模块和包之间的区别?
我是Node noob。 Node.js中“包”和“模块”有什么不同?
模块是node.js的库。 请参阅下面的api摘录:
节点有一个简单的模块加载系统。 在Node中,文件和模块是一一对应的。
模块示例:
- Circle.js
- Rectangle.js
- Square.js
一个包是一个或多个模块(库)分组(或打包)在一起。 这些通常由其他软件包或您自己的项目使用。 Node.js使用包pipe理器 ,您可以在其中find并安装数千个包。
包的例子:
Shapes <- Package name - Circle.js <- - Rectangle.js <- Modules that belong to the Shapes package - Square.js <-
本质上,你可以安装包, Shapes
,并有权访问圆形,矩形和方形模块。
每个Node应用程序都是一个package
,并且应该有一个package.json
文件。 这些应用程序充当中间件(或等同于库),并且被安装在其他应用程序中的是modules
。
简而言之,所有的modules
都是packages
,但并不是所有的packages
都被用作modules
,尽pipe很多都可以。
如果将模块列为package.json
文件中的dependencies
,并将其放置到node_modules
文件夹中,则模块将被安装,但npm
将通过package.json
文件recursion以添加它们依赖的modules
。
一切你可以require()
是一个模块。 CommonJS世界大多数情况下,一个文件就是一个模块。
一个包可以包含多个模块,但是通常在package.json中指定入口点( main
),或者在没有提供main
属性的情况下加载index.js ,例如: require('express')
但是如果你知道位置,你也可以要求另一个文件(不是主文件),例如: require("express/lib/application")
(在node.js中,你可以省略扩展名: .js )
如果包在package.json的dependencies
属性中列出,则包可以从其他包中访问模块。
实际上npm 会把所有的软件包都安装到node_modules中,因为它应该是node_packages 。