簡體   English   中英

為什么我們要在不同的文件中重構 Node.js 代碼

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM