命名空间
首先我们需要考虑的是组织和重用代码,那么这就涉及到命名空间(namespace)。
Node.js 针对命名空间处理如下,
模块输出:module.exports 或者 exports,(exports只是对module.exports的一个全局引用)
模块引入:require,( I/O 同步操作, 在程序中I/O密集的地方尽量不要用require)
Node.js对于模块的处理如下:
- 是否调用的是核心模块(https://nodejs.org/api/)
- 是否存在在当前node_modules目录下面
- 是否存在在环境变量NODE_PATH下面
- 模块规则
如require('my_module') ,则需要模块在以上位置中,且定义的名称为my_module.js 或者 my_module目录中的index.js文件,(默认的index文件名可以通过package.json的main参数重定义)
异步编程
再有就是Node.js比较重要的一个特性,就是异步编程。
Node.js中有两种响应逻辑管理方式:
- 回调:用来定义一次性响应的逻辑
- 事件监听器:本质上也是一个回调,不同的是,它跟一个概念实体(事件)相关联
回调:
var fs = require('fs');
fs.readFile('test.dat' , function(err , data){
console.log('这行代码会在读取文件完成之后进行');
})
console.log('这行代码会在读取文件完成之前进行');
事件监听器:
使用new EventEmitter()来实现事件功能
包括两个方面
事件监听器: eventemitter.on('action' ,function(){}) // 如果只希望响应一次,on -> once
事件发射器: eventemitter.emit('action')
流程控制
异步跟同步其实也就是流程中的串行跟并行
- 异步 - 并行
- 同步 - 串行
比较流行的流程控制的工具:Nimble,Step,Seq
串行可以通过Nimble工具实现:
nimble.series([function(),function(),...])
参考自:《Node.js实战》 - Mike Cantlon 等
上一篇 | 下一篇 |
---|---|
Node.js 第一步 | Node.js Web相关 |
网友评论