mat*_*tth 47
模块是node.js的库.请参阅以下api的摘录:
Node有一个简单的模块加载系统.在节点中,文件和模块是一一对应的.
模块示例:
包是一个或多个模块(库)组合(或打包)在一起.这些通常由其他包或您自己的项目使用.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模块.
一个模块是有一些合理的功能单一的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)
现在人们将包称为模块是很常见的。
我搜索了Node.js文档并找到了他们的模块定义:
在 Node.js 模块系统中,每个文件都被视为一个单独的模块。
npm在这里有一些官方定义。
甲包是受一个的package.json文件中描述的文件或目录。
甲模块是在可以由Node.js的需要()函数被加载的node_modules目录中的任何文件或目录。
注意:由于模块不需要具有 package.json 文件,因此并非所有模块都是包。只有具有 package.json 文件的模块也是包。
你能做的一切require()
都是一个模块。在CommonJS世界的大多数情况下,每个模块一个文件。
一个包可以包含多个模块,但您通常会加载入口点 ( main
),如果没有提供属性,则它在package.json或其index.js 中指定main
,例如:require('express')
。
但是,如果您知道位置,您也可以需要另一个文件(不是主文件)。例如,require("express/lib/application")
(在 Node.js 中你可以省略扩展名:.js)。
一个包可以访问来自其他包的模块,如果它们列在package.json的dependencies
属性中。
实际上 npm 将所有包安装到node_modules 中,这令人困惑,因为它应该是node_packages。
每个Node应用程序都是a package
,并且应该有一个package.json
文件.那些充当中间件(或相当于库)的应用程序,应该安装在其他应用程序中modules
.
简而言之,所有modules
都是packages
,但并非所有packages
都被用作modules
,尽管许多都可以.
将安装模块(如果dependencies
在package.json
文件中列出)并放入node_modules
文件夹中,但npm
通过其package.json
文件进行递归以添加modules
它们所依赖的文件.
归档时间: |
|
查看次数: |
10834 次 |
最近记录: |