初探Node.js

在Node.js尚未普及前, Javascript大多被用來控制前端畫面. 對一個網頁後端工程人員來說, 壓根沒想到會去深入探討(想成為全端工程師例外), 就算使用包裝好的JQuery的機會也是少之又少. 但在看到一些Node.js的介紹並自己實作了幾個小功能後, 完全顛覆了這個觀念. 對我來說, 形容為Javascript的逆襲也不為過.

 

Node.js 使用 Javascript語言開發, 底層使用C++ 並引入Google v8 引擎. 目前使用的感覺是能提供類似 Apache 的功能, 並且能設定routing. 無阻塞更是他的一大特色. 而且還有成千上萬的人在NPM平台上持續的新增及強化套件供開發者使用. 這也展現出自由軟體的強大威力.

 

下列是初期我對於Node.js的應用:

  1. 即時通訊聊天室
  2. 自動提醒訊息(類似FB右上角的提示)
  3. 存取Mongodb

 

即時通訊聊天室以Node.js來說基本的架構就是一個大家互相廣播的概念. 但是如果要以其他的環境達成的話, 複雜的可以到要用一個資料庫然後整個畫面三不五時就刷個幾下, 刷到頁面刷新的音效吵到想關喇叭. 好一點的就用ajax方式對資料庫存取然後利用javascript更新畫面. 這些都在npm其中一個套件 Socket.io 的強大威力功能下有了新的實作方式.

 

Socket.io 有兩個部分 Client 跟 Server. Client部分會跟著js一起被載入到使用者端, 而且會利用WebSocket的方式與Server端做互動. Server端就只需要把從Client端拿到的訊息再廣播出去, 即時通訊聊天室大致上就已經完成.

 

自動提醒訊息的應用其實跟即時通訊聊天室的感覺差不多, 都是需要應用Socket.io. 其中差別在於Client會定期觸發事件, 讓Server能夠去讀取資料庫然後把結果回傳給Client. 這邊還需要一個Web Service, 要利用mongodb api或者是PHP連資料庫然後回傳資料的方式, 甚至是用Java Spring Framework寫一個RESTful Web Service都行. 不管利用哪種方式, 主要還是解決了網頁要被刷新才能得到新的訊息的命運.

 

最後是應用存取MongoDB. MongoDB是文件式的資料庫, 好處在於不需要額外的方式(如: RESTful Web Service, PHP的連線方法)就可以直接對資料庫做存取, 也就是程式跟資料庫之間的資料存取層被消除了. 這也意味著更快速的資料存取速度.

 

針對Node.js相關的資訊會在此持續與大家分享, 如果資訊有錯誤的話, 歡迎隨時糾正, 3Q~