在Node.js中,能够本身编写或从网上下载模块文件:node
使用require()引入模块文件时须要指定文件的路径及文件名:npm
自定义模块json
使用 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;
组织管理模块
ui
若是在require函数中参数只使用文件名,但不指定路径,则Node.js将该文件视为 node_modules目录下的文件。spa
使用目录管理模块:
{ "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中的内容:
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:\node" //查看命令行提示窗口当前目录下所安装的全部包 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