在node.js中,以模块为单位划分所有功能,并提供了一个完整的模块加载机制,可以将应用程序划分为不同的部分,并且对这些部分进行很好的协同管理。
-通过各种可重用代码编写在各种模块中的方法,减少应用程序的代码量,提高应用程序的开发效率及应用程序代码的可读性。
-通过模块加载机制,可以将各种第三方模块引入到应用程序中
核心模块与文件模块
在node.js中,模块是一个非常重要的概念,它允许我们将第三方类库引入到我们的应用程序中,在加载核心模块时,只需将模块名指定为require函数的参数即可。
在加载这些文件时,需要指定该文件的完整路径及文件名。在指定路径时,可以使用“/”前缀来指定相对路径。也可以指定绝对路径。
在模块外部访问模块内的成员
1.使用exports对象
在一个模板中定义的本地变量、函数或对象只在该模块内有效,当你需要从模块外部引用这些变量、函数或对象时,需要在该模块文件内使用exports对象。
2,将模块定义为类
在模块文件内将exports对象书写为‘’module.exports”,但是在需要将模块定义为一个类时,只能使用“module.exports”的书写方法
3.为模块类定义类变量或类函数
当把模块定义为类的时候,可以为该类定义类变量或类函数。
组织与管理模块
1.从node_modules目录中加载模块
加载方式更为灵活,因为你可以移动模块文件的所在位置而不需修改代码中指定的路径。
2.使用目录来管理模块
可以将目录名指定为模块名,以便可以通过目录来管理模块,只需为该目录指定一个入口点
一个最简单的将目录名定为模块名的方法是在应用程序根目录下创建一个node_modules子目录,然后在其中为模板创建一个目录,并在其中放入一个index.js文件。这样node.js会自动加载目录下的index.js模块
3.从全局目录中加载模块
如果在操作系统的环境变量中设置了NODE_PATH变量,并将变量值设置为一个有效的磁盘目录。当在require函数中只指定模块名,而没有指定模块文件的路径,而且node.js从其它路径中寻找不到需要被加载的模块文件时,node.js将从DODE_PATH变量值所指向的磁盘目录中寻找并加载该模块文件。
为了获得更好的性能,node.js推荐用户将模块文件放置在全局目录中‘
模块对象的属性
.module.id:属性值为当前模块的ID,在默认情况下,主模块的ID属性值为“.”,其他模块的ID属性值为该模块文件的绝对路径。在模块中可以修改当前模块的ID属性值
.module.filename:属性值为当前模块文件的文件名
.module.loaded:属性值为布尔值,当属性值为false时表示模块尚未加载完毕,属性值为true时,表示模块加载完毕
.module.parent:属性值为当前模块的父模块对象,即调用当前模块的模块对象
.module.children:属性值为一个数组,其中存放了当前模块的所有子模块对象,即当前模块已加载的所有模块对象
包与npm包管理工具
在node.js中,通过包的使用,我们可以将某个独立的功能封装起来。
在node.js中,一个包实际上是一个目录,其中包含了用于对包进行描述的json格式的package.json文件。一个包中,通常包含如下所示的一些内容:
1)在包的根目录中存放package.json文件
2)在bin子目录中存放二进制文件
3)在lib子目录中存放JavaScript文件
4)在doc子目录存放对包或包的使用方法进行说明的文档文件
5)在test子目录中存放一些对包进行单元测试用的文件
一个package.json文件中应该包含的字段及作用如下:
1)name :包名,是唯一的,由小写字母、数字和下划线组成,不能含空格
2)preferglobal,是否支持全局安装,字段值为true时支持全局安装,字段值为false时,不支持全局安装
3)description,包说明,对包进行简要描述
4)version,版本号
5)author,作者信息组,每个数组元素中可包含name、email、web等字段
6)maintains,包维护者信息数组,每个数组元素中可包含name、email、web等字段
7)bugs,bug的提交地址,可以是网址或电邮地址
8)license,许可证数组,每个元素包含type和url字段
9)repository,仓库托管地址数组,每个元素包含type、url和path等字段
10)keywords:关键字数组,通常用于搜索
11)dependencies:本包所依赖的包,是一个关联数组,由包名和版本号组成
npm包管理工具
在node.js中,提供了一个npm包管理工具,该管理工具可用于从第三方网站上下载node.js包
以forever包为例:
npmsearch forever:搜索并查看forever包
npmview forever:查看forever包所用package.json文件中的信息
npm install forever:下载forever包
npm install -g forever :把forever包安装在node.js的全局包的安装路径中
npm root -g:查看node.js的全局包的安装路径
npmconfig set prefix " d:\node":修改node.js的全局包的安装路径
npmlist:展示窗口当前目录下所安装的所有包
npmlist -g :查看node.js全局包的安装路径下安装的所有包
npm uninstall <包名> :卸载命令行提示窗口当前目录下安装的某个包
npm uninstall -g <包名>:卸载node.js的全局包的安装路径下安装的某个包
npm update <包名> :更新命令行提示窗口当前目录下安装的某个包
npm update -g <包名>:更新node.js的全局包的安装路径下安装的某个包
npm update:更新命令行提示窗口当前目录下安装的所有包
npm update -g:更新node.js的全局包的安装路径下安装的所有包