談談Nodejs值得你思考的一些問題

ManuXu發表於2020-11-25

Nodejs 你不知道的幾個知識點

nodejs 體系問題:

nodejs是什麼?

nodejs是基於chrome V8 引擎的JavaScript 的執行環境
nodejs之前可以在瀏覽器執行,node出現之後,nodejs可以在nodejs環境下執行

nodejs和前端js的區別?

都使用 了ES語法
前端 webAPI
後端 node API

nodejs如何除錯?

啟動nodejs服務 使用inspect
使用debugger
chrome中debug chrome://inspect

當前檔案和目錄的路徑 如何獲取?

path.resolve(__dirname,)
path.resolve(__pathname,)
兩個全域性變數

commonjs 和 es6的區別?

1.語法不同
2.commonjs 是動態引入
if(xxx){const resource = require(’…/module/app.js’)} 可以在執行的時候引入
3.ES6 Module 是靜態引入
import 必須在開頭/最頂層 引入 否則編譯不通過 編譯的時候引入 不是在執行的時候引入

path.resolve / path.join的區別?

都是用於拼接路徑 ,join 相對路徑 , resolve絕對路徑
const p1 = path.join(’…’,‘src’,‘code1’) = …/src/code1
const p2 = path.resolve(’…’,‘src’,‘code1’) = /user/84824/houduankaifa/src/code1 拼接順帶查詢根目錄的

eventloop 和nodejs 瀏覽器中的區別?

時間型別 : w任務:promise async await process.nextTick()
h任務 settimeout setInterval ajax setImmediate IO檔案 連線mysql soctet連線
微任務比巨集任務更早執行 先執行同步程式碼
callStack 空閒的時候會執行 觸發event loop 機制 執行巨集任務
觸發eventloop之前 會把所有微任務執行完
同步程式碼執行完之後 執行微任務 在進行
1.執行同步程式碼
2.執行微任務
3.執行巨集任務 回到第二步

session 如何實現登陸?

session 為什麼要放在redis中:
程式記憶體限制
多程式隔離無法共享

koa2 和express的中介軟體機制?

程式碼看來就是一個next函式
設計上來說 就是一個獨立模組
模組拆分 模組流轉 產生功能

async 和 await 的執行順序的考察?

koa2 的洋蔥模型?

如何逐行讀取1G的日誌檔案?

stream 流式讀取 記憶體有限 網路頻寬有限

nodejs為什麼要開啟多程式?

1.高效使用cpu
2.充分利用伺服器記憶體
3.最終壓榨伺服器資源,不浪費資源

相關文章