node.js核心模塊

全局對象 global 是全局變量的宿主node

全局變量
在最外層定義的
全局對象的屬性
隱士定義的變量(未定義直接賦值的變量)編程

當定義一個全局變量時 這個變量同時也會成爲全局對象的屬性 反之亦然數組

注意:
Node.js中你不可能在最外層定義變量 由於全部用戶代碼都是屬於當前模塊的 而模塊自己不是最外層上下文緩存


process
process.argv 是命令行參數數組 第一個元素是node 第二個元素是腳本文件名稱 第三個開始是每一個元素的運行參數
例子
//argv.js
console.log(process.argv);
執行命令 node argv.js 1991 name=byvoid --v "Carbo Kuo"
輸出
[ 'node',
'/home/byvoid/argv.js',
'1991',
'name=byvoid',
'--v',
'Carbo Kuo'
]服務器

process.nextTick(callback) 功能:爲事件循環設置一項任務 Node.js 會在 下次事件 環調 應時調用 callback?????????????????cookie

Node.就是適合I/O密集型應用 而不是計算密集型應用 由於一個node.js進程只有一個線程 所以在任什麼時候刻都只有一個事件在執行
若是這個事件佔用大量的CPU時間 執行事件循環中的下一個事件就要等待好久 node.js的一個編程原則就是儘可能縮短每個事件的執行時間 session


console
console.log()
接受一個參數 直接打印字符串
兩個參數時 第二個參數替換掉佔位符
console.log("abc"); //"abc";
console.log("abc%cba") //"abc%cba";
console.log("abc%cba", 1991)//"abc1991cba";負載均衡

console.error() 用法同上 只是向標準錯誤流輸出
console.trace() 向標準錯誤流輸出當前的調用棧異步

 

經常使用工具的utilide

util.inherits(constructor, superConstrutor);
是一個實現對象間原型繼承的函數
只繼承自原型上的函數 構造函數內部的不繼承
console.log不打印原型中定義的函數


util.inspect(object, [showHidden], [depth], [colors]);
用於將任意對象轉換成字符串方 一般用於調試和輸出錯誤
至少接受一個 object參數
showHididen true 時將會輸出更多隱藏信息 參數可選
depth 表示最大遞歸的層數 若是對象很複雜 你能夠指定層數以控制輸出信息的多少 不指定默認遞歸2層 null表示不限制次數
color true 輸出格式將會以ANSI顏色編碼 一般用於終端顯示更漂亮的效果

其餘自行百度

事件驅動evnets
events 模塊只提供了一個對象 events.EventEmitter
EventEmitter的核心就是事件反射與事件監聽器功能的封裝

經常使用API
EventEmitter.on(event, listener); 爲指定事件註冊一個監聽器 接受一個字符串event 和一個回調函數listener
EventEmitter.emit(event, [arg1], [arg2], [...])發射event事件 傳遞若干個可選參數到事件監聽器的參數表
EventEmitter.once(event, listener); 爲指定事件註冊一個單次見監聽器 即監聽器最多隻會觸發一次 觸發後當即解除該監聽
EventEmitter.removeListener(event, listener) 移除指定事件的某個監聽器 listener必須時該事件已經註冊過的監聽器

EventEmitter.removeAllListener([event]) 移除全部事件的全部監聽器 若是指定event 則移除指定事件的全部監聽器


EventEmitter error事件 通常要爲發射error事件的對象設置監聽器 避免遇到錯誤後整個程序崩潰


文件系統fs
全部的fs模塊操做都提供了同步和異步的兩個版本

fs 函數定義和功能

fs.readFile(fileName, [encoding], [callback(err, data)]);
參數介紹
fileName 讀取的文件名
encoding 表示文件的編碼格式
callback 回調函數 用於接收文件 若是定義了encoding data爲編碼以後的字符串 未定義data將會以buffer形式表示二進制的數據

fs.readFileSync(fileName, [encoding]);
返回結果是一個data
若是文件未找到 將會拋錯
同步須要用try{}catch(e){console.log(e)};

fs.open(path, flags, [mode], [callback](err, fd));
是POSIX open函數的封裝 相似於C語言的fopen函數
參數
path文件的路徑
flags能夠是如下值
r 以讀取模式打開文件
r+ 以讀寫模式打開文件
w 以寫入模式打開文件 若是文件不存在則建立
w+ 以讀寫模式打開文件 若是文件不存在則建立
a 以追加模式打開文件 若是文件不存在則建立
a+ 以讀取追加模式打開文件 若是文件不存在則建立
mode 參數用於建立人間時給文件指定權限 默認 0666
回調函數傳遞一個文件描述符fd 非負整數 表示操做系統內核爲當前進程所維護的打開文件的記錄表索引

fs.read(fd, buffer, offset, length, position, [callback(err, bytesRead, buffer)]);
是POSIXread函數的封裝 相比readFile提供了更底層的接口
功能:從指定的文件描述符fd中讀取數據並寫入buffer指向的緩存區對象
參數介紹
offset buffer的寫入偏移量
length 要從文件中讀取的字節數
position 是文件讀取的起始位置 值爲null 則會從當前文件指針的位置讀取
回調函數傳遞的bytesRead 和 buffer 分別表示讀取的字節數 和緩存區對象

通常來講 非必要不要使用這倆種方式讀取文件 由於它要求你手動管理緩存區和文件指針 尤爲是不知道文件大小 很麻煩


HHTTP服務器
http.createServer(callback(req, res));
req 請求對象 res 響應對象

?????????????疑惑?????????????

1: process.nextTick(callback) 怎麼就減小事件的執行時間了
2: fs.open()怎麼使用

負載均衡 四部交換機 dns輪轉 不能用session 只能用cookie 有的cookie不支持

相關文章
相關標籤/搜索