核心模块与文件模块

在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(全局下的)