NodeJS 模块&函数

nodejs的多文件操作通过模块系统实现,模块和文件一一对应。文件本身可以是javascript代码、JSON或编译过的C/C++扩展

基本用法

nodeJS通过exports和require两个对象实现模块通信。exports是模块对外的公开接口,require从外部获得其他模块exports的对象

举例:

$ tree
.
├── hello.js
└── main.js

hello.js

exports.world = function () {
    console.log('Hello World')
}

main.js

var hello  = require('./hello')
hello.world()

把对象封装到模块中

hello.js

function Hello() {
    var name
    this.setName = function (s) {
        name = s
    }
    this.sayHello = function () {
        console.log("Hello, I'm "+name)
    }
}

//使用module关键字申明模块接口
module.exports = Hello

main.js

var Hello  = require('./hello')
var hello = new Hello()
hello.setName("Jack")
hello.sayHello()

函数部分

函数部分本来应该是JavaScript语法部分,这里也总结一下

匿名函数

function execute(someFunc, value) {
    someFunc(value)
}

execute(function (world) {
    console.log(world)
}, "Hello world")

map-reduce

var materials = [
    'Hydrogen',
    'Helium',
    'Lithium',
    'Beryllium'
];

// array的map函数可以用一个函数映射
console.log(materials.map(function(material) {
    return material.length;
}))

// array的reduce函数默认使用左结合
console.log(materials.reduce(function (x,y){
    return x +"->"+ y
}))
/*输出*/
[ 8, 6, 7, 9 ]
Hydrogen->Helium->Lithium->Beryllium

常用全局量

nodeJS的全局宿主是global,地位和浏览器中的window相当

常用量

  • __filename:当前运行文件的绝对路径
  • __dirname:当前运行的绝对目录
  • global的process属性提供了非常丰富的属性:
    • argv:脚本参数列表
    • execPath:返回执行当前脚本的 Node 二进制文件的绝对路径
    • execArgv:返回一个数组,成员是命令行下执行脚本时,在Node可执行文件与脚本文件之间的命令行参数
    • env:返回环境变量
    • pid:进程号
    • chdir(directory):更换工作目录
    • cwd():当前目录
    • exit(code):退出,默认code为0
    • uptime:返回node已经运行的秒数