我的朋友和我說 單純的這么去看文檔是沒有效果的 你需要先有需求 再去看文檔 這樣才能真正的一步步學會Node 我覺得他說的很對 但是每個人的學習方法都會有些許不一樣 我想按照我自己的思路走下去
Event
事件是整個Nodejs的基礎(chǔ)茁肠,所以我們一定要去理解這個模塊
Class: events.EventEmitter
這么一個核心模塊說起來也不難 總的來說的一下幾點
- 可以為特定事件添加監(jiān)聽(永久監(jiān)聽或者只監(jiān)聽一次)
- 可以刪除事件監(jiān)聽
- 可以發(fā)射事件
比較進階的用法就是自己創(chuàng)建類繼承這個類實現(xiàn)事件的功能
HTTP
非常核心的一個類 能夠創(chuàng)建服務(wù)器 和客戶端
Class: http.Server
是由http.createServer([requestListener])
創(chuàng)建 其中requestListener是一個function 直接響應(yīng) request事件
是EventEmitter的子類
它擁有一系列的事件可以去監(jiān)聽 比如 request connection ....
你需要使用 listen來開啟這個服務(wù)器
你當然也可以關(guān)閉它击你, 也可以設(shè)置每一個socket鏈接超時時間
Class: http.ServerResponse
它是由server創(chuàng)建的 是request事件的第二個參數(shù)逝钥,而且實現(xiàn)了 Writable Stream 接口
這里需要注意的一點就是可以使用writeHead來添加header,但是這個方法只能使用一次考蕾,而且只要使用了這個方法,其他的便利設(shè)置header的方法都會失效
response.write()可以被多次調(diào)用 但是第二次以及之后的調(diào)用不會發(fā)送header而且數(shù)據(jù)會變成數(shù)據(jù)流傳輸,調(diào)用end()結(jié)束回復(fù)
http.request(options[, callback])
我們可以通過這個方法去作為客戶端進行http通信
Class: Class: http.ClientRequest
這個和response有些相似 實現(xiàn)了 Writable Stream 接口 值得注意的是 這個是通過 http.request()創(chuàng)建的 請求 贴捡,而 作為客戶端請求得到的response 還有 作為服務(wù)器得到的 req 其實他們都是 http.IncomingMessage 對象 而不是這個 http.ClientRequest
Query String
這個類其實是處理對象序列化的問題 主要應(yīng)用在url解析上面
通過 querystring.stringify(obj[, sep][, eq][, options]) ``querystring.parse(str[, sep][, eq][, options])
序列化和反序列化對象
當然番枚,可以選擇重寫默認的分隔符('&'
) 和分配符 ('=')法严。
URL
這是一個專門生成和解析URL的模塊,和Query string結(jié)合能夠更好地工作
Utilities
這是一個實用工具類
首先這個類提供了多個輸出方法
inspect() 這個方法可以輸出對象 你可以設(shè)置一些參數(shù)
還是擁有一些類判斷對象類型的方法
這個類里面最有用的的方法就是 util.inherits(constructor, superConstructor)
這個方法能幫助我們簡單的實現(xiàn)類的繼承
Globals
這個模塊記錄了一些全局對象葫笼,在使用這些的事后不需要require
__filename和__dirname是會經(jīng)常實用的
setTimeout(cb, ms),clearTimeout(t),setInterval(cb, ms),clearInterval(t)這是一系列的延遲執(zhí)行的方法