[英]Why do we refactor Node.js code in different files
我有個問題。 我是 node.js 的初學者,我知道我們將服務器代碼重構為不同的文件(如 index.js、server.js、routes.js 等),以使我們的代碼庫更易於管理並且代碼更具可讀性。
但是我的上級告訴我,我們將代碼拆分到不同的文件中,以便節點 js 可以為每個文件生成一個單獨的進程,並且同時運行多個並發的代碼片段。
這個邏輯對我來說有點難以理解,我認為 nodejs 是單線程的,我們可以使用 setTimeout/promises 將我們的異步任務發送到事件隊列。 我的理解是,一旦我們使用了require
語句,代碼就會直接導入到我們從中導入它的地方。
我的理解錯了嗎?
我有個問題。 我是 node.js 的初學者,我知道我們將服務器代碼重構為不同的文件(如 index.js、server.js、routes.js 等),以使我們的代碼庫更易於管理並且代碼更具可讀性。
是的。
也使它更可重用。
但是我的上級告訴我,我們將代碼拆分到不同的文件中,以便節點 js 可以為每個文件生成一個單獨的進程,並且同時運行多個並發的代碼片段。
不。
模塊不會自動創建進程。
為此,您需要使用與外部代碼掛鈎的模塊(通常使用node-gyp實現),或者您需要使用工作線程明確地這樣做。
我認為nodejs是單線程的,
它不是。
JavaScript 在單個事件循環上運行代碼,除非它被明確地放在其他地方(例如使用上述方法),但它確實允許您運行多個線程/進程。 例如,參見上面的工作線程。
我們可以使用 setTimeout/promises 將我們的異步任務發送到事件隊列。
setTimeout
只是稍后運行代碼,而不是在不同的線程上。
Promise 用於管理異步代碼,它們不會使代碼異步或將其移動到不同的線程。
我的理解是,一旦我們使用了 require 語句,代碼就會直接導入到我們從中導入它的地方。
導出的對象/原語被導入到導入模塊。 代碼已經編譯和處理。
首先, NodeJS is not single threaded
的。
默認情況下,它有4 threads
,它們分別用於不同的任務,例如處理 I/O。
我們的“主要” javascript 代碼在這些線程one
中工作。
根據我們自己的目的,我們可以在worker_thread
模塊的幫助下生成更多線程。
這些產生的線程需要一些代碼來執行。
我們必須通過將文件(或 URL)的路徑傳遞給構造函數來為他們提供代碼。
我想相信我的解釋盡可能清楚:P
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.