Node之模块与npm包管理器
核心模块与文件模块
在Node.js中,以模块为单位划分所有功能。核心模块为Node内置模块,还有一些第三方的模块,模块是以js文件或者文件夹的形式存在于node中,每一个模块都是一个js的脚本文件
如何加载模块
加载模块只需要用
require('模块名')
在node中,可以自己编写或者从网上下载以下几种模块文件
- 后缀名为.js的JavaScript脚本文件。
- 后缀名为.json的JSON文本文件。
- 后缀名为.node的经过编译后的二进制模块文件。
在加载这些模块文件时,需要指定该文件的完整路径及文件名。在指定路径时,可以使用“./”前缀(代表当前目录)来指定相对路径,也可以用“/”前缀来指定绝对路径
从模块外部访问模块内的成员
在一个模块文件中定义的本地(即非函数内定义的)变量、函数或对象只在该模块内有效,当你需要从模块外部引用这些变量、函数或对象时,需要在该模块文件内使用exports对象
示例:
var myMsg="hello";
var funcname=function() {
return 'I'm funcname1 function.';
};
exports.msg=myMsg;
exports.funcname=funcname;
当从外部访问模块时使用require导入即可
node中模块加载的顺序
- /home/ry/projects/node_modules/
- /home/ry/node_modules/
- /home/node_modules/
- /node_modules/
模块对象的属性
- module.id:属性值为当前模块的ID。在默认情况下,主模块的ID属性值为“.”,其他模块的ID属性值为该模块文件的绝对路径。在模块文件中可以修改当前模块的ID属性值。
- module.filename:属性值为当前模块文件的文件名。
- module.loaded:属性值为布尔值,当属性值为false时表示模块尚未加载完毕,属性值为true时表示模块加载完毕。
- module.parent:属性值为当前模块的父模块对象,即调用当前模块的模块对象。
- module.children:属性值为一个数组,其中存放了当前模块的所有子模块对象,即当前模块中已加载的所有模块对象。
Node中的包
在Node.js中,可以通过包来对一组具有相互依赖关系的模块进行统一管理。通过包的使用,我们可以将某个独立的功能封装起来。一个包事实上是一个目录,其中包含了用于对包进行描述的JSON格式的package.json文件。在一个包中,通常包含如下所示的一些内容:
- 在包的根目录中存放package.json文件。
- 在bin子目录中存放二进制文件。
- 在lib子目录中存放JavaScript文件。
- 在doc子目录存放对包或包的使用方法进行说明的文档文件。
- 在test子目录中存放一些对包进行单元测试用的文件。
在一个package.json文件中,一个package.json文件中通常应该包含的字段及其作用如下所示:
- name:包名。包名是唯一的,由小写字母、数字和下划线组成,不能含空格。
- preferglobal:是否支持全局安装。字段值为true时支持全局安装,字段值为false时不支持全局安装。
- description:包说明。对包进行简要描述
- version:版本号。
- author:作者信息数组。每个数组元素中可包含name(作者姓名)字段、email(作者E-mail)字段、web(作者网址)字段。
- maintainers:包维护者信息数组。每个数组元素中可包含name(包维护者姓名)字段、email(包维护者E-mail)字段、web(包维护者网址)字段。
- bugs:bug的提交地址,可以是网址或电邮地址。
- licenses,许可证数组。每个元素要包含type(许可证名称)和url(链接到许可证文本的地址)字段。
- repository:仓库托管地址数组。每个元素要包含type(仓库的类型,如Git)、url(仓库地址)和path(相对于仓库的路径,可选)字段。
- keywords,关键字数组,通常用于搜索。
- dependencies,本包所依赖的包。是一个关联数组,由包名和版本号组成。
npm包管理工具
在Node.js中,提供了一个npm(NodePackageManager)包管理工具。该管理工具可用于从第三方网站上下载Node.js包。在Node.js的官方包网站(网址为https://npmjs.org/)上,我们可以发现许多可通过npm包管理工具进行下载的Node.js模块。
搜索并查看包的信息。
npm search <packName>
查看官方包仓库中forever包所用package.json文件中的信息。
npm view <packName>
下载包
npm install <packName> -g(全局并且加入环境变量)
查看全局包安装路径
npm root -g
修改全局包的安装路径
npmconfig set prefix "d:\node"
查看当前目录下所安装的所有包
npm list -g(全局下的)
卸载包
npm uninstall <packName> -g(全局并且加入环境变量)
升级包
npm update -g(全局下的)
本作品采用 知识共享署名-相同方式共享 4.0 国际许可协议 进行许可。