1. 程式人生 > >Node.js API

Node.js API

參考nodejs版本0.10.x

一.url地址解析模組

1.url.parse(‘url字串地址’[, ‘是否將地址上的引數字串轉換為引數物件[, 斜線是否標識主機]’])

示例:
(1)在命令視窗輸入: node 回車
(2)輸入命令: url.parse(‘http://user:[email protected]:8080/p/a/t/h?query=string#hash’)
(3)地址解析結果如下:
在這裡插入圖片描述
url物件屬性詳解:
protocol: 小寫的請求協議,如 protocol: ‘http:’
slashes: 在協議冒號後面是否用斜槓’/’,值為false/true
auth: url驗證authentication部分的資訊
host:小寫的主機部分的資訊,包括埠號
port: 埠號
hostname: 主機名稱
hash:#部分的資訊,錨點
search:引數欄位的部分,包括前置的’?’
query: 引數欄位的部分
pathname:路徑部分,在主機資訊之後,引數資訊之前,包括中間的斜槓’/’
path: pathname和query部分的組合
href: 最初解析的最完整的地址,主機和協議都是小寫

可參考官網上的詳解圖:
在這裡插入圖片描述

(4)命令視窗輸入:url.parse(‘http://user:[email protected]:8080/p/a/t/h?query=string#hash’, true)
在這裡插入圖片描述

(4)命令視窗輸入:url.parse(‘http://user:[email protected]:8080/p/a/t/h?query=string#hash’, true, true)

2.url.format(‘urlObject’)

將一個url物件解析為完整url字串地址
示例:
在這裡插入圖片描述

3.url.resolve(from , to)

獲取一個基本URL和href URL,相當於解析為瀏覽器的錨標記
示例:
url.resolve(’/one/two/three’, ‘four’) // ‘/one/two/four’
url.resolve(‘

http://example.com/’, ‘/one’) // ‘http://example.com/one
url.resolve(‘http://example.com/one’, ‘/two’) // ‘http://example.com/two

二.querystring模組

1.querystring.stingify(物件[, 引數之間的連線符[, key value之間的連線符[, 限制key個數]]]),序列化物件

輸入:
querystring.stringify({
name: ‘毛豆’,
family: [‘父親’, ‘母親’],
address: ‘’
})
結果:
在這裡插入圖片描述

以逗號連線引數,輸入:
querystring.stringify({
name: ‘毛豆’,
family: [‘父親’, ‘母親’],
address: ‘’
}, ‘,’)
結果:
在這裡插入圖片描述

以’:'連線key,value,輸入:
querystring.stringify({name: ‘毛豆’,family: [‘父親’, ‘母親’],address: ‘’}, ‘,’, ‘:’)
結果:
在這裡插入圖片描述

key的maxlength設定為0,取消key個數限制,輸入:
querystring.stringify({name: ‘毛豆’,family: [‘父親’, ‘母親’],address: ‘’}, ‘,’, ‘:’, 0)
結果(沒什麼變化):
在這裡插入圖片描述

2.querystring.parse(字串[, 引數之間的連線符[, key value之間的連線符[, 限制key個數]]]),反序列化字串

用逗號連線引數,’:‘連線key,value方式解析字串,輸入:
querystring.parse(‘name:%E6%AF%9B%E8%B1%86,family:%E7%88%B6%E4%BA%B2,family:%E6%AF%8D%E4%BA%B2,address:’,’,’,’:’)
結果如下:
在這裡插入圖片描述

3.querystring.escape(str),將字串編碼

輸入: querystring.escape(‘歡迎’)
結果:
在這裡插入圖片描述

4.querystring.unescape(str), 將編碼字串轉碼

輸入:querystring.unescape(’%E6%AD%A1%E8%BF%8E’)
結果:
在這裡插入圖片描述

http模組

http是一種用於計算機之間相互通訊的協議,通訊過程如下:
(1)http客戶端發起請求,建立埠
(2)http服務端在埠監聽客戶端請求
(3)http伺服器向客戶端返回狀態和內容

從瀏覽器輸入網址到頁面渲染整個過程經歷了什麼?

以chrome為例:
(1)chrome搜尋自身的DNS快取,地址為:chrome://net-internals/#dns,儲存了瀏覽器訪問記錄,如果瀏覽器沒有找到快取或者過期失效,進入第二步;否則,停止搜尋返回。
(2)搜尋作業系統自身的DNS快取
(3)讀取本地的host檔案(windows系統下安裝資料夾下system32)
(4)瀏覽器發起一個DNS的域名解析請求
       (4.1)寬頻運營商伺服器檢視本身的快取
       (4.2)運營伺服器發起一個迭代DNS解析的請求
                         運營商向根域的伺服器提問:請問imooc.com的域名地址是多少?
                                        根域的伺服器回答:告訴你com域的頂級域的IP地址。
                      運營商向com域的伺服器提問:請問imooc.com的域名地址是多少?
                                     com域的伺服器回答:告訴你imooc.com域的IP地址。
            運營商向imooc.com域的伺服器提問:請問imooc.com的域名地址是多少?
                            imooc.com域的伺服器向運營商傳送結果。

運營商伺服器把結果返回給作業系統核心,同時快取在自身的快取區
作業系統核心把結果返回給瀏覽器
瀏覽器最終拿到了www.imooc.com對應的IP地址

(5)瀏覽器獲得域名對應的IP地址之後,發起HTTP“三次握手”
(6)TCP/IP連線建立起來後,瀏覽器就可以向伺服器傳送HTTP請求。比如用HTTP的GET方法請求根域裡的一個域名,協議可以採用HTTP1.0的協議。
(7)伺服器端接受到了這個請求,根據路徑引數,經過後端的一些處理之後,把處理後的結果資料返回給瀏覽器。
(8)瀏覽器拿到伺服器返回的完整html程式碼,在解析和渲染頁面時,js、css、圖片靜態資源同樣也是通過一個個http請求獲取。
(9)瀏覽器根據拿到的資源對頁面進行渲染,最後將完整的頁面呈現給使用者。

在這裡插入圖片描述
timing
stalled: 請求發出前的等待時間,包括代理協商、可複用的htttp連線釋放的時間,不包含DNS查詢和TCP連線建立時間
DNS lookup: 域名解析的時間
proxy negotiation: 代理商協商時間
request sent: 請求第一個位元組到最後一個位元組發出完成時間,也就是上傳時間
waiting:請求發出到收到第一個響應位元組的時間,整個過程包括伺服器響應這個請求所做的邏輯處理
content download:收到第一個響應位元組到最後一個響應位元組的時間,也就是下載時間

請求方法
get
post
put
delete
head
trace
options

狀態碼
1XX:
2XX:
3XX:
4XX:
5XX: