在Node.js中,可以自己编写或从网上下载模块文件:
- 后缀名为.js的JavaScrip文件
- 后缀名为.json的JSON文件
- 后缀名为.node的经过编译后的二进制模块文件
使用require()引入模块文件时需要指定文件的路径及文件名:
- ‘./’代表当前目录来指定相对路径
- '/'代表绝对路径
自定义模块
使用 exports对象,暴露模块内的变量、函数 或 对象
var myMsg = 'hello'; var func = function(){ //... } exports.msg = myMsg; exports.func = func;
//也可以使用module.exports.XXX
自定义模块为类
使用 module.exports 的书写方法。
var name=''; var age = 0; var foo = function(){ //... } foo.prototype.name = name; foo.prototype.age = age; foo.prototype.getName = function(){ //... } foo.prototype.setName = function(){ //... } module.exports = foo;
为模块类定义变量或函数
当把模块定义为类时,可以为该类定义类变量或类函数
var foo = function(){ //... } foo.staticName = ''; foo.staticFunc = function(){ //... } module.exports = foo;
组织管理模块
如果在require函数中参数只使用文件名,但不指定路径,则Node.js将该文件视为 node_modules目录下的文件。
使用目录管理模块:
- 将目录名指定为模块名:在应用程序根目录下创建一个node_modules子目录,在其中创建一个目录,并在其中放入一个index.js文件
- 在应用程序根目录下的node_modules子目录的foo子目录下创建一个package.json文件,并在其中使用如下所示的代码创建模块名与主文件
{ "name":"foo", "main":"./lib/foo.js" }
从全局目录中加载模块
如果在操作系统的环境变量中设置了NODE_PATH变量,并将变量值设置为一个有效的磁盘目录,在require中只指定模块名,而没有指定路径时,并且Node.js从其他路径中找不到需要加载的模块文件,Node.js将从NODE_PATH变量值所指向的磁盘目录中寻找并加载模块。
模块对象属性
module.id
当前模块的ID。
在默认情况下,主模块的ID属性值为“.”,其他模块的ID属性值为该模块文件的绝对路径。
module.filename
当前模块文件的文件名。
module.loaded
属性值为布尔值,当为false时,表示模块尚未加载完毕,为true时,表示 属块加载完毕。
module.parent
属性值为当前模块的父模块对象。
module.children
属性值为一个数组,存放了当前模块的所有子模块对象。
Node.js中的包
一个包事实上是一个目录,其他包含了用于对包进行描述的JSON格式的package.json文件。
包中的内容:
- 在包的根目录中存放package.json文件
- 在bin子目录中存放二进制文件
- 在lib子目录中存放JavsScript文件
- 在doc子目录中存放对包 或 包的使用方法的说明文件
- 在test子目录中存放单元测试文件
package.json中的内容:
- name:包名
- preferglobal:是否支持全局安装
- description:包说明
- version:版本号
- author:作者信息数组
- maintainers:包维护者信息数组
- bugs:bug提交地址
- licenses:许可证数组
- repository:仓库托管地址数组
- keywords:关键字数组
- dependencies:本包所依赖的包
npm包管理工具
//搜索并查看forever包信息 npm search forever //查看forever包所用package.json中的信息 npm view forever //下载forever npm install forever //全局安装包 npm install -g forever //查看Node.js的全局包的安装路径 npm root -g //修改Node.js的全局包的安装路径 npm config set prefix "d: ode" //查看命令行提示窗口当前目录下所安装的所有包 npm list //查看Node.js的全局包的安装路径下安装的所有包 npm list -g //卸载当前目录下安装的某个包 npm uninstall <包名> //卸载Node.js全局包的安装路径下安装的某个包 npm uninstall -g <包名> //更新当前目录下安装的某个包 npm update <包名> //更新Node.js的全局包的安装路径下安装的某个包 npm update -g <包名> //更新当前目录下安装的所有名 npm update //更新Node.js的全局包的安装路径下安装的所有包 npm update -g