學習筆記 — Node.js基本知識

TH K
Apr 28, 2023

--

這是一個學習筆記,裡面我會在一些字後面加上英文,實際上是我理解中的英文關鍵字而不是專有翻譯,有任何錯誤請留言告訴我,十分感謝。

說實話在參加bootcamp的期間,會接觸到一些技術常識問題,但答案常常讓我覺得模棱量可,如

Q:什麼是 Node.js?

A: 他是 javascript 的runtime可以實現使用javascript開發後端程式

我都在思考面試的時候這樣回答跟沒講有什麼兩樣,今天終於找到滿意的答案,文章底部有reference。

JavaScript 和 ECMAScript 是相關但不同的東西

  1. ECMAScript 是定義 JavaScript 語言的語法和功能的標準
  2. JavaScript 是一種程式語言為 ECMAScript 標準的具體實現

為什麼需要ECMAScript,早期JavaScript是沒有固定規範的,這導致JavaScript不同的瀏覽器運行的不相容,為了維護跟效率必要存在標準化

JavaScript Engine

  1. JavaScript屬於高階程式語言,他的編碼電腦是讀不懂的
  2. JavaScript engine 將JavaScript code 轉換成電腦能讀懂的指令(interpreter)
  3. JavaScript engine的通常由瀏覽器開發商開發,如 V8(用於 Chrome)、SpiderMonkey(用於 Firefox)和 JavaScriptCore(用於 Safari)

V8 engine

V8引擎本身是用C++編寫的,所以可以用C++編寫V8的擴展和應用程序。

也能透過 JavaScript 編寫應用程序

JavaScript Runtime

  1. JavaScript 執行環境(如瀏覽器就是JavaScript Runtime)
  2. JavaScript engine屬於Runtime的元件之一
  3. 以瀏覽器舉例

Node.JS source code

運行於瀏覽器之外的JavaScript Runtime,不是library 也不是 framework

可以用於開發Traditional websites, Backend services like APls, Real-time applications, Streaming services, CLI tools, Multiplayer games

https://stackoverflow.com/questions/36766696/which-is-correct-node-js-architecture

終於釐清了 engine 跟 runtime 的差異,還有原來底層運作是透過C++控制的~

ref: https://www.youtube.com/playlist?list=PLC3y8-rFHvwh8shCMHFA5kWxD9PaPwxaY

--

--