讀書筆記: nodejs 參考文檔

來源:互聯網
上載者:User

標籤:des   io   os   ar   檔案   資料   sp   art   on   

>> buffer
Buffer對象是全域對象
Buffer支援的編碼方式:ascii, utf8, base64, binary
new Buffer(size)
new Buffer(array)
new Buffer(str, encoding=‘utf8‘)

buffer.write(str,offset=0, encoding=‘utf8‘)
buffer.toString(encoding, start=0, end=buffer.length);

buffer[index]

Buffer.byteLength(string, encoding=‘utf8‘)
buffer.length //分配給buffer對象的記憶體大小 位元組為單位

buffer.copy(targetBuffer, targetStart, sourceStart, sourceEnd=buffer.length)
buffer.slice(start, end);//返回引用同一段記憶體的buffer對象, 注意和str.slice()不同


>> eventEmitter
所有能夠觸發事件的對象都是 events.eventEmitter 的執行個體。
註冊新的事件監聽器時,會觸發 newListener 事件
出錯則觸發 error事件,若沒被捕獲,則輸出調用棧,並退出應用

* event: newListener
* event: error

* emitter.on(event, listener); //向監聽器數組添加1個監聽器
如:
server.on(‘stream‘, function(){
console.log(‘someone connected‘);
});

* emitter.removeListener(event, listener); //從指定監聽器數組,移除指定監聽器 (監聽器數組重新調整索引 splice)
如:
var callback = function(stream){ console.log(‘someone connected!‘)};

server.on(‘stream‘, callback);
//...
server.removeListener(‘stream‘, callback);

* emitter.removeAllListeners(event)

* emitter.listeners(event); //返回指定事件的監聽器數組

* emitter.emit(event, [arg1], [arg2],...); //觸發事件

>> streams
stream是一個抽象介面,node中很多個物件都實現了這個介面(如 request, stdout), stream對象是EventEmitter的執行個體。
stream可以是 唯讀,唯寫,可讀可寫 的

> readable stream 唯讀流
唯讀流的方法、屬性和事件

* event:data
stream.on(data, function(data){
//data: buffer or string (若調用過setEncoding())
});

* event:end
流遇到EOF或TCP中的FIN時觸發,表示不會再有資料進來
stream.on(‘end‘, function(){ });

* event:error
stream.on(‘error‘, function(exception){ });

* event:close
內部的檔案描述符被關閉時觸發
stream.on(‘close‘,function(){ });

* event:fd
當資料流接收到檔案描述符資訊時觸發 (一個檔案的資料流資訊包括2部分:檔案描述符資訊和檔案的資料資訊) unix流
stream.on(‘fd‘, function(fd){ });

* stream.readable

* stream.setEncoding(encoding);
設定data事件返回的是字串而不是buffer對象,編碼方式有:ascii, utf8, base64

* stream.pause(); //暫停觸發data事件

* stream.destroy();
關閉內部的檔案描述符,這樣流不會再觸發任何事件

> writable stream 可寫流
可寫流的方法、屬性和事件:

* event:drain
在一個write方法被調用並返回false後觸發,表示可安全地再次寫入該stream
stream.on(‘drain‘, function(){ });

* event:error
stream.on(‘error‘, function(exception){ });

* event:close
當底層的檔案描述符已終止時觸發
stream.on(‘close‘, function(){ });

* stream.writable

* stream.write(string, encoding=‘utf8‘,[fd]);
用指定的編碼方式編碼字串後寫入流中,若字串被成功重新整理到核心緩衝區則返回true, 否則返回false, 資料在未來寫入。
drain事件通知核心緩衝區何時為空白

* stream.write(buffer); 同上

* stream.end();
通過EOF或FIN來終止流

* stream.end(string, encoding); //~~相當於 stream.write(string, encoding) 後,stream.end()

* stream.end(buffer); //同上

* stream.destroy();
終止底層的檔案描述符,之後流不會發出任何事件

>> global objects 全域對象

* global
全域命名空間對象 ~~類似於瀏覽器環境下的window?

* process 進程對象

* require() 載入相依模組

* require.paths
一個儲存了require函數搜尋路徑的數組,可往裡面添加自訂路徑

* __filename
當前正在執行的指令碼的絕對路徑

* __dirname
當前正在執行指令碼的檔案夾

* module
指向當前模組的引用, module.exports 和 exports指向同一個引用


> process 進程
process對象是EventEmitter的執行個體

* event:exit
進程退出時觸發,是檢查模組狀態的好地方(如單元測試)
process.on(‘exiti‘, function(){ });
如:
process.on(‘exit‘, function(){
process.nextTick(function(){//下一次事件迴圈
console.log(‘this will not run‘);
});
console.log(‘about to exit‘);
});

* event:uncaughtException 未捕獲異常
process.on(‘uncaughtException‘, function(error){ });
如:

 

讀書筆記: nodejs 參考文檔

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.