3.1 Node.js
软件包
每一个基于
Node.js
平台开发的应用程序都是
Node.js
软件包。
所有
Node.js
软件包都被托管在
www.npmjs.com
中。
3.2
什么是
NPM
Node Package Manager
,
Node.js
环境中的软件包管理器。随
Node.js
一起被安装。
它可以将
Node
软件包添加到我们的应用程序中并对其进行管理,比如下载,删除,更新,查看版本等
等。
它没有用户界面,需要在命令行工具中通过命令的方式使用,对应的命令就是
npm
。
NPM
和
Node
是两个独立的应用程序,只是被捆绑安装了,可以通过版本号证明。
3.3 package.json
Node.js
规定在每一个软件包中都必须包含一个叫做
package.json
的文件。
它是应用程序的描述文件,包含和应用程序相关的信息,比如应用名称,应用版本,应用作者等等。
通过
package.json
文件可以方便管理应用和发布应用。
创建
package.json
文件
:
npm init
快速创建
package.json
文件
:
npm init
--
yes
{
"name"
:
"project-name"
,
"version"
:
"1.0.0"
,
"description"
:
""
,
"main"
:
"index.js"
,
"scripts"
: {
"test"
:
"echo \"Error: no test specified\" && exit 1"
},
"keywords"
: [],
"author"
:
""
,
"license"
:
"ISC"
}
3.4
下载
Node.js
软件包
在应用程序的根目录执行命令:
npm install <pkg>
或者
npm i <pkg>
npm install lodash
软件包下载完成后会发生三件事:
1.
软件包会被存储在
node_modules
文件夹中,如果在应用中不存在此文件夹,
npm
会自动创建。
2.
软件包会被记录在
package.json
文件中
.
包含软件包的名字以及版本号。
3. npm
会在应用中创建
package
-
lock.json
文件
,
用于记录软件包及软件包的依赖包的下载地址及
版本。
3.5
使用
Node.js
软件包
在引入第三方软件包时,在
require
方法中不需要加入路径信息,只需要使用软件包的名字即可,
require
方法会自动去
node_modules
文件夹中进行查找。
const
_
=
require
(
"lodash"
)
const
array
=
[
"a"
,
"b"
,
"c"
,
"d"
]
// chunk
对数组中的元素进行分组
//
参数一表示要进行操作的数组
//
参数二表示每一组中包含的元素个数
console
.
log
(
_
.
chunk
(
array
,
2
))
// [ [ 'a', 'b' ], [ 'c', 'd' ] ]
3.6
软件包依赖问题说明
1.
比如在我的应用中要依赖
mongoose
软件包,于是我下载了它,但是在
node_modules
文件夹中
除了包含
mongoose
以外还多出了很多其他软件包,为什么会多出这么多软件包呢?
实际上它们又是
mongoose
依赖的软件包。
2.
为什么
mongoose
依赖的软件包不放在
mongoose
文件夹中呢?
在早期的
npm
版本中
,
某个软件包依赖的其他软件包都会被放置在该软件包内部的
node_modules
文件夹中,但是这样做存在两个问题,第一个问题是很多软件包都会有相同的依
赖,导致开发者在一个项目中会下载很多重复的软件包,比如
A
依赖
X
,
B
依赖
X
,
C
依赖
X
,在
这种情况下
X
就会被重复下载三次。第二个问题是文件夹嵌套层次太深,导致文件夹在
windows
系统中不能被直接删除。比如
A
依赖
B, B
依赖
C, C
依赖
D ... ,
就会发生文件夹依次嵌套的情况。
3.