Node.js(瀏覽器組成,通信,渲染過程)

瀏覽器的組成

  1. UI用戶界面
  2. 網(wǎng)絡(luò)請求部分
  3. JS引擎
  4. 渲染引擎(內(nèi)核)
  5. 數(shù)據(jù)儲(chǔ)存(cookie,localStorage,sessionStorage)

瀏覽器和服務(wù)器通信的過程

  1. 在瀏覽器地址欄中輸入域名
  2. 瀏覽器向DNS服務(wù)器發(fā)送請求,獲取域名對應(yīng)ip地址
  3. 服務(wù)期使用ip地址向服務(wù)器發(fā)送請求
  4. 服務(wù)器接收請求,處理請求
  5. 服務(wù)器生成相應(yīng)結(jié)果,返回給瀏覽器
  6. 瀏覽器接受到服務(wù)器的相應(yīng)(HTML)
  7. 瀏覽器解析html,渲染

瀏覽器的渲染過程

  1. 根據(jù)html源碼生成DOM樹
  2. 根據(jù)DOM樹和CSS規(guī)則組合生成渲染樹
  3. layout(布局)確定渲染樹中元素的位置,大小
  4. 瀏覽器根據(jù)渲染樹繪制頁面Painting

npm

  1. 安裝 :node安裝好,npm自己就安裝好了
  2. 檢測是否安裝好 , 執(zhí)行npm -v
安裝方式
  1. 全局安裝
    當(dāng)需要將包作為全局命令來使用的時(shí)候,一般都會(huì)做全局安裝,將內(nèi)容裝到npm根目錄:%appdata%/npm C:\Users\Ryan\AppData\Roaming\npm
    1.將包安裝到了這個(gè)目錄中的node_modules文件夾中
    2.在目錄下創(chuàng)建一個(gè)全局命令
    npm install 包名@版本號(hào) -g
  2. 本地安裝
    當(dāng)前項(xiàng)目需要用到的所有的資源,都使用本地安裝
    安裝好的內(nèi)容就在當(dāng)前項(xiàng)目目錄中的node_modules中
npm init -y
npm install 包名@版本號(hào)
npm 常用命令

install:安裝包
uninstall:卸載包
version -v:查看版本
init:創(chuàng)建package.json文件

-S -D

本地安裝包的時(shí)候,可以有兩個(gè)選項(xiàng)
--save 縮寫 -S
當(dāng)安裝包的時(shí)候,使用的是--save或者-S的時(shí)候,安裝的包信息(名字和 版本)會(huì)被存儲(chǔ)到package.json文件的depende'ncies中,這個(gè)是線上會(huì)用到的資源包,都放在json文件的dependencies中

--save-dev縮寫-D
當(dāng)安裝包的時(shí)候,使用的是--save-dev或者-D的時(shí)候,安裝的包信息(名字和版本)會(huì)被儲(chǔ)存到package.json文件中的devDependencies中
這個(gè)是在開發(fā)階段會(huì)用到的資源包.都放在json文件的devDependencies中

將所依賴的包的信息保存到package.json中的目的:
提高代碼分享的效率

request和response對象

request: 所有請求相關(guān)的內(nèi)容,都封裝在這個(gè)對象中
request.url: url中除去協(xié)議域名端口號(hào)錨點(diǎn)之外的所有的信息
request.method: 請求的方式
request.httpVersion: http協(xié)議版本
request.headers:請求頭中的所有的內(nèi)容

response:提供好多用來響應(yīng)的api

response.write: 向?yàn)g覽器發(fā)送數(shù)據(jù)的,發(fā)送的數(shù)據(jù)可以是字符串也可以是Buffer,可以調(diào)用多次

response.end:向?yàn)g覽器發(fā)送數(shù)據(jù)并結(jié)束響應(yīng)過程的,發(fā)送的數(shù)據(jù)可以是字符串也可以是Buffer,只能調(diào)用一次,每次請求,必須保證調(diào)用,否則請求會(huì)掛起

response.setHeader:設(shè)置響應(yīng)頭的一次只能設(shè)置一條,可以調(diào)用多次

response.writeHead:設(shè)置響應(yīng)頭的,一次可以設(shè)置多條,還可以設(shè)置狀態(tài)碼和狀態(tài)信息,如果和setHeader一起用,那么setHeader必須在前面,內(nèi)容如果有沖突則以writeHead為準(zhǔn),其他不沖突的就合并了

response.statusCode: 設(shè)置響應(yīng)狀態(tài)碼 如果用了writeHead設(shè)置,那么這個(gè)就沒有用了

response.statusMessage: 設(shè)置響應(yīng)狀態(tài)信息


























?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容