4.5

yblll發表於2024-06-18

什麼是 Nodejs ?

Node.js 的誕生

先來聊聊 Node.js 誕生的故事,瞭解一下它最早的定位,以及後來定位的變化。

Node.js 是2009的時候由大神 Ryan Dahl 開發的。Ryan 的本職工作是用 C++ 寫伺服器,後來他總結出一個經驗,一個高效能伺服器應該是滿足“事件驅動,非阻塞 I/O”模型的。C++ 開發起來比較麻煩,於是 Ryan 就想找一種更高階的語言,以便快速開發。

可以說有兩點促成了 Nodejs 的誕生。首先第一點,Ryan 發現 JS 語言本身的特點就是事件驅動並且是非阻塞 I/O 的,跟他的思路正是絕配。第二點,Chrome 的 JS 引擎,也就是 V8 引擎是開源的,而且效能特別棒。於是 Ryan 就基於 V8 開發了 Node.js ,注意 Node.js 聽名字好像是個 JS 庫,其實不是的,Node.js 是 C++ 開發的,到官網 可以看到

Node.js 是一個基於 Chrome V8 引擎的 Javascript 執行環境

所以說 Node.js 不是庫,是一個執行環境,或者說是一個 JS 語言直譯器。

Node.js 最初的定位是提升 Ryan 自己的日常工作效率,也就是用來寫伺服器程式碼的,但是後來沒有想到的是 Node.js 在前端領域卻大放異彩。

先說幾句 Node.js 在伺服器端的發展。Node.js 的誕生帶給人們的是個大大的驚喜,傳統上 Web 開發者,前端用 JS 寫,但是寫伺服器端程式碼的時候還必須用另外一種語言,類似 Ruby/Java/PHP 等。但是 Node.js 出現之後,JS 前後通吃了。如果去網上搜 Node.js 的資料,很多都是用 Node.js 去寫伺服器程式碼的。

但是,Node.js 今天也成為了 Web 前端開發必不可少的基礎設施。注意,Web 前端的 JS 程式碼最終還是執行在瀏覽器中的,所以執行的時候,或者說在產品環境下,不依賴於 Node.js 。但是,Node.js 誕生以後,前端大爆發,類似 React/Vuejs 這樣的前端框架的開發環境變得非常強大和負責,Node.js 是這些開發環境執行的基礎。

這就是關於 Node.js 誕生,以及它如何從純後端發展到前後通吃的故事。

Nodejs 中執行 JS 程式碼

接下來,演示一下 Nodejs 中如何執行 JS 程式碼。

以前 JS 只能執行在瀏覽器中,Node.js 出現之後,不管是伺服器上,還是我們自己的的筆記本上,只要安裝了 Node.js 就可以執行 JS 程式碼了。假設,咱們已經安裝好了 Node.js ,那麼進入命令列,

node

執行 node 命令,就可以進入 Node.js 的互動環境。

1 + 1

執行加法操作,回車,就可以看到程式碼正確執行了。Ctrl-D 可以退出這個互動環境。

但是更為常見的一種執行方式,是把把程式碼寫入到一個檔案中。

app.js

console.log("hello");

然後這樣來在命令列中執行

node app.js

就可以看到 hello 被列印出來了,而這樣過程跟瀏覽器沒有一毛錢關係。

另外有一點是要特別注意的。Node.js 和瀏覽器是不同的環境,是有著很多細小的差異的。首先,二者各自包含的全域性變數不同。document 物件是用來操作頁面的,所以只有瀏覽器環境下才可以直接使用。但是如果是要放到 Node.js 環境下執行程式碼,就不要使用 document 。同樣的道理,Node.js 中可以直接拿來使用的 http 物件,在瀏覽器環境下就沒有。其次,Node.js 和瀏覽器對 ES6 新特性的支援程度也是不同的,這一點也要注意。

關於如何在 Node.js 環境下執行 JS 程式碼,我們就聊到這裡。

npm 是世界上最大軟體包倉庫

最後來聊 npm 。Node.js 引發了前後端開發的爆發,尤其是前端。 JS 開發者眾多,所以貢獻開原始碼的人就非常多,所有這些凝結成了 npm 這個世界上最大的軟體包倉庫。

npm 是 Node Package Manager 的縮寫,意思是 Node 的包管理系統。Nodejs 現在如日中天,其中 npm 這個功不可沒。在這裡,我們要實現各種功能幾乎都能找到現成的別人寫好的包,直接拿了用就好了。

很多 npm 包都對應一個 Github 專案,但是如果只有程式碼,那麼使用起來還不是特別方便。而當系統上安裝好了 Node.js 之後,就會配套安裝一個命令,叫做 npm 。

npm install moment

執行 npm install moment 就可以把 moment 這個包從 npm 的軟體包倉庫中下載這個包,然後安裝到本地了。而 npm 的軟體包倉庫中,有數以萬計的 moment 這樣的包。

關於 npm ,我們就聊到這裡。

總結

什麼是 Node.js 這集主體內容就是這麼多了。總結一下:首先,Nodejs 是基於 Chrome 的 V8 引擎開發的一個 C++ 程式,目的是提供一個 JS 的執行環境。最早 Nodejs 主要是安裝在伺服器上,輔助大家用 JS 開發高效能伺服器程式碼,但是後來 Nodejs 在前端也大放異彩,帶來了 Web 前端開發的革命。Nodejs 下執行 JS 程式碼有兩種方式,一種是在 Node.js 的互動環境下執行,另外一種是把程式碼寫入檔案中,然後用 node 命令執行檔案程式碼。Nodejs 跟瀏覽器是不同的環境,寫 JS 程式碼的時候要注意這些差異。最後,我們介紹了 npm ,透過 npm 裝包的方式,開發中我們再也不用重造輪子了。

相關文章