~ Node.js 包
Node.js 中的第三方模块,又叫做“包”。
所谓的“包”,实际上可以理解为:Node.js 中另外一种来源的模块。
不同于 Node.js 中的内置模块与自定义模块,是由第三方个人或团队开发出来的,免费供所有人使用。
理解:模块与包
Node.js 中,一个 .js 文件,就是一个独立的模块。
模块,可以简单分为:核心模块( 内置 API )和自定义模块。
- 核心模块,主要是提供了一些通用的功能,如路径管理、文件操作等;
- 自定义模块,主要用来实现一些业务功能,多数情况下,我们主要靠自定义模块来完成相应的业务
项目实际中,当业务量比较大的时候,我们不可能把所有的代码都放在同一个模块中,
因为这样,代码将难以维护,也不利于代码的重用。
所以,比较推荐的做法是:一个特定的模块只实现一个特定的功能,这样,一个项目中不可避免就会出现很多个模块。
问题在于,一个项目中可能会有很多不同子功能( 如,通信、路由 ),相对应的,特定的模块应当属于某种子功能,
但是,这些模块之间并没有一个逻辑上的关联关系,难以对它们进行分类界定,从代码重用的角度来看,就不太方便。
为了解决这个问题,Node.js 中就引入了 “包” 的概念,以下就是模块与包之间的关系:
- 模块,可以是任何一个文件或目录( 目录下可以有多个文件 ),只要能被 Node.js 通过 require() 获取即可;
- 包,一个文件或目录( 目录下可以有多个文件 ),只要有一个 package.json 文件来描述,就可以是一个包。
包的基本规范与管理
有了包之后,它可以帮助我们维护特定模块之间的关系:
- 一般一个包就完成一个特定的子功能
- 包里有很多的模块
也就是说,多个模块可以形成包,不过需要满足特定的规则才能形成规范的包。
- 项目描述文件 package.json 必须位于顶层目录下
- 二进制文件应该在 bin 目录下
- js 代码应该在 lib 目录下
- 文档应该在 doc 目录下
- 单元测试应该在 test 目录下
同时,Nodejs 也提供了一种机制( CommonJS 规范是理论,NPM 是其中的一种实践 )来管理这些包,也就是 NPM。
NPM 也是一个网站:https://www.npmjs.com,它托管了开源的 NPM 的包。
