包 package CommonJS
的包规范允许我们***将一组相关的模块组合到一起***,形成一组完整的工具。CommonJS
的包规范由包结构和包描述文件两个部分组成。
包结构:用于组织包中的各种文件。
包描述文件 :描述包的相关信息。
包实际上就是一个压缩文件,解压以后还原为目录。符合规范的目录,应该包含如下文件:
-package.json 描述文件 相当于包的简历 位于包的根目录下
目录
-bin 可执行的二进制文件
-lib js代码
-doc 文档
-test 单元测试
pack.json
中的字段有:name:包的标识符;version:版本;keywords:关键词(用于查询);licenses:协议;repositories:表示一个仓库;dependencies:生产依赖;devdependencies
:开发依赖;os
:操作系统…;
但是很多时候我们使用的包会有很多,这个时候就需要找一个东西来对包进行管理。
NPM
对于Node而言,NPM
帮助其完成了第三方模块的发布,安装和依赖等。借助NPM
,Node与第三方模块之间形成了很好的一个生态系统。这时候你需要什么包,都可以在npm
中寻找。
那么npm
在哪里呢?npm
相当于node赠送的一项服务,所以只要下载了node,npm
就直接给你安装了。
npm init
npm初始化会创建一个package.json
的文件。
然后使用npm install Math
安装这个包。而我们做过项目都知道,所有使用npm
下载的包(文件夹)都放在了node_modules这个文件夹中。
现在我们的node_module中有一个Math的包,想要在本地引入,怎么使用呢?
//例如创建了一个index.js的文件 引入
var math=require("math");
console.log(math);
//在终端执行运行命令 `node index.js`就会输出Math包中的内容
//使用包
console.log(math.add(10,11));//输出结果21
除此之外,我们有时候会发现一种情况就是,比如我们下载的包只有一个,但是打开node_modules的不止有一个包,这是为什么呢?因为我们要下载的包可能会依赖于其他的包(简单来讲就是我自身不够用,需要借助其他的包来帮忙)。所以在下载这个包的时候,会顺带把这些包都给下载下来。
npm
的其他命令 。
npm search
:用来查询与关键词有关的包;
npm remove
:删除包;
npm install Math --save
:安装包并添加到生产依赖中(我们发现会在package.json
的dependencies中多一条依赖的信息)。但是普通的下载,不会出现在package中;
npm
install 会根据package.json
的配置信息来下载相应的包;
npm
install 包名 -g 全局安装包(全局安装的包一般都是一些工具:不用于项目,而是作用于计算机的);
cnpm
毕竟npm
是老外的东西,服务器也是在遥远的国外,所以这时候使用’npm
下载就会导致速度很慢。这时候npm
的镜像服务器就诞生了。
镜像服务器就是从外国服务器上把内容下载到国内的服务器,然后下载的时候访问的就是国内服务器了。这样就解决了服务器繁忙速度慢的问题。
如何实现呢?请看下面
1.npm install -g cnpm --registry=https:?/registry.taobao.org
直接将连接国内的taobao
服务器,这时候使用npm
命令访问的就是taobao
的服务器。
2.但是使用上面的这种方法会带来一个问题就是,以后使用npm
命令就访问不到实际服务器了。所以还有一种方式就是重新使用一种指令,来访问taobao
服务器。npm install -g cnpm --registry=https://registry.npm.taobao.org
;
Node内部提供一个Module构建函数,所有的模块都是Module的实例。