2016-07-17 42 views
-2

如果JavaScript文件被加載並在瀏覽器中執行,服務器如何知道什麼時候該文件是一個節點js文件,因此在服務器上執行?新手:JavaScript的VS節點JS

回答

2

Web瀏覽器和nodej都運行JavaScript腳本。主要區別在於NodeJS是一個服務器端框架,並且在服務器中執行JavaScript代碼,而不是在Web瀏覽器(客戶端)的環境中執行。

沒有任何像nodejs文件的概念。只有javascriprt腳本可以在客戶端上運行(通過內置在Web瀏覽器中的JavaScript引擎的幫助,比如用於chrome的V8)或者在服務器中(通過在這種情況下的NodeJS的幫助)如果我沒有錯的是使用的NodeJS JavaScript引擎是V8,谷歌的JavaScript引擎。)

+0

@Max歡迎您!我很高興我的幫助。 – Christos

3

我想一些幾件事情添加到克里斯托的答案。

JavaScript是一種語言。 node.js不是一種語言,而是運行普通JavaScript的「環境/軟件集」。

所有瀏覽器都運行網頁的JavaScript的(SpiderMonkey的爲Firefox,V8 Chrome瀏覽器)JavaScript引擎。

Node.js的僅僅是一些庫捆綁做I/O和網絡,這樣就可以使用JavaScript的瀏覽器之外創建後端服務的V8發動機。

+1

謝謝,有道理 – Max

3

我認爲當空氣混亂時,具體的例子比概念上的解釋更好。所以,借這個例子:

(當然在JavaScript中,)你叫Node.js的劇本「hello.js」,只是輸出「Hello World!」在控制檯中並退出。您可以通過輸入node hello.js來運行此腳本。它只會打印消息並退出。

您有另一個名爲「server.js」的Node.js腳本實現了在端口3000上偵聽的HTTP服務器(又名Web服務器)。該服務器從名爲「static」的目錄提供靜態文件。該文件夾中有兩個文件:「index.html」和「app.js」。這些是網站的文件(當然,app.js使用JavaScript)。您通過輸入node server.js運行此腳本。它將啓動HTTP服務器並開始等待客戶端請求。

雖然HTTP服務器腳本運行,您訪問「http://localhost:3000」打你上面開始很Web服務器。服務器知道如何關閉靜態文件,並知道它應該默認提供index.html。您的瀏覽器會加載index.html,並對其進行處理並理解它也應該返回並請求app.js文件(因爲index.html中的標記爲<script>)。當瀏覽器加載app.js時,瀏覽器運行它。 Node.js服務器不關心任何事情,只是將它作爲另一個靜態文件提供。

+0

很好的例子謝謝 – Max

+0

很好的解釋 –