-
require.resolve(id)
返回文件的绝对路径
require.resolve('fs') //fs
require.resolve('./demo') // xxx/xxx/xxx/demo.xxx
-
require.cache
返回自动缓存的文件
require.cache // [Object: null prototype] {xxxx}
// 从缓存中删除一个???Reflect.deleteProperty(require.cache,require.resolve(id))
-
node demo.js 2> 1.log
会将错误信息输入到1.log
文件里面
node demo.js 2> 1.log
标准流:总共有3个标准流,
stdin
、stdout
、stderr
,在UNIX
终端中,它们被数字代表 0代表输入流,1代表输出流,2代表错误
平常我们使用
console.timeEnd()
会显示基准测试信息。这些方法都是基于Date.now()
计算函数执行的时间??梢允褂酶泳嫉牡谌侥??,benchmark
以及microtime
process.exit()
退出程序
0表示正常退出,非0表示非正常退出。这个状态码可以通过$?
在shell
中获取process.on()
响应信号量
process
对象是一个EventEmitter
对象,所以可以对其添加监听器,在UNIX
系统中可以使用man sigaction
来查看所有的信号
process.stdout.resume();
process.on('SIGHUP',function(){
console.log('Reload configuration')
})
-
process.nextTick()
方法允许把一个回调放在下一次事件轮询队列的头上,比setTimeout更有效率
如果没有提供编码格式,那么文件操作以及很多网络操作就会将数据作为
Buffer
类型返回。
let fs = require('fs');
fs.readFile('./demo.txt',function(err,buf){
Buffer.isBuffer(buf); // true
})
-
new Buffer(str,encoding)
使用Buffers来修改字符串编码
或者使用
let buf =Buffer(buf).toString('base64')
处理data URIs
。格式如下:
data:[MIME-type][;charset=<encoding>][;base64],<data>
- 从
EventEmitter
继承
let util = require('util')
let events = require('events')
function MusicPlayer(){
events.EventEmitter.call(this)
}
util.inherits(MusicPlayer,events.EventEmitter)
- 通过
domains
管理异常
处理多个
EventEmitter
实例的异常感觉非常困难,Node
的domain
??槟鼙挥美醇械卮矶喔鲆觳讲僮?。其中包括EventEmitter
实例发出的未处理的error
事件
let damain = require('domain')
let demoDomain = domain.create()
demoDomain.on('error',(err)=>{
console.log(err)
})
demoDomain.run(() => {
// todo
})
-
EventEmitter
的替代方案
可以使用发布/订阅、AMQP
、js-signals
,这些是Node
的比较流行的EventEmitter
的替代品。