我關注 Node.js 的發展好久一段時間了, 大概 2012 年底 v 0.8.16 時我就下載安裝試玩, 但沒時間繼續研究就擱下了. Node.js 吸引我的原因, 是因為它是我夢想已久的完美開發平台, 前後端都用 Javascript 開發, 程式語言能力需求單純. 我最早玩網頁設計是從 ASP 開始, 當時大部分的人都是用 VB Script 來寫, 但我找到一本用 Javascript 寫 ASP 的書, 我覺得很棒, 這樣我就不用再去學一種程式語言了. 但也因為如此, 我很晚才學 PHP.
以前用 Javascript 寫 ASP 時, 因為只能在微軟 IIS 伺服器上才能這樣玩, 似乎有點被綁架的感覺. 我就在想, 怎麼沒人寫一個不需要 IIS 就可以跑 Javascript 的後端平台呢? 當 Node.js 橫空出世, 我知道, 夢幻平台終於出現了. 不過 Node.js 並不是像 PHP 是一個必須寄託在 Apache 伺服器執行的解譯器, Node.js 本身就內建了 HTTP 伺服器支援函式, 可以很容易地自己實作一個網站伺服器. 關於 Node.js 參見 Wiki :
#
Wiki : Node.js
下載 Node.js 請連線到官網 :
#
https://nodejs.org/
點 download 可選擇下載項目, 目前是 v 0.12.5 版 :
我的電腦是 Win7 64 位元, 所以下載 Windows Installer 64-bit, 這會下載 node-v0.12.5-x64.msi 檔; 但也可以下載免安裝的可執行檔 node.exe :
執行安裝檔會將 Node 安裝到程式集 C:\Program Files\nodejs\ 下, 並自動在環境變數 path 中加入 C:\Program Files\nodejs\, 然後打開命令提示視窗或者程式集中的 Node.js command prompt 就可以直接使用 node 指令了.
打開控制台的系統查看環境變數 path, 果然已經自動加入 nodejs 目錄了 :
參考 :
#
用 Node.js 學 JavaScript 語言(1)簡介與安裝
#
用 Node.js 學 JavaScript 語言(2)基本控制
#
用 Node.js 學 JavaScript 語言(3)函數、參數與閉包
#
使用 NODE.JS 來達成電腦網頁與手機網頁即時互動
如果下載的是 免安裝的可執行檔 node.exe, 則只能在 node.exe 所在目錄下才能執行 node 指令, 或者手動將 node.exe 加入 path 路徑中也可以, 我覺得可執行檔還蠻方便的, 只要下載一個 binary 檔就可以玩 Node 了.
網路上有 Node.js 的線上入門電子書 :
#
Node 入門
而市面上也已有數本 Node.js 的中文書, 其中我覺得最適合初學者的是松崗的這本 "
不一樣的 Node.js" :
以及佳魁的 "
Google 御用網頁語言 Node.js" :
如果要更深入了解 Node 的技術細節, 就要找這本博碩文化出版, 大陸 Node 傳道先鋒朴靈 (田永強) 寫的 "
深入淺出 Node.js" :
以下就以 "
不一樣的 Node.js" 書中的範例來測試. 首先來測試最常用的 console.log() 輸出指令. 先用記事本打一個 js 檔, 內容很簡單, 只有一行 :
console.log("hello!");
然後存成 hello.js, 就可以用 node 執行了 :
D:\Node.js>
node hello.js
hello!
接著來測試計時器函式 console.time() 與 console.timeEnd(), 主要用在計算程式執行所耗費之時間 :
console.time("test"); //命名計時器為 test
for (var i=0; i<10; i++) {
console.log("index=" + i);
}
console.timeEnd("test"); //停止計時器 test
把上面程式碼存成 duration.js 執行 :
D:\Node.js>node duration.js
index=0
index=1
index=2
index=3
index=4
index=5
index=6
index=7
index=8
index=9
test: 5ms
耗費時間 5 毫秒.
最後來測試如何用 Node.js 寫一個網站伺服器, 程式 http.js 如下 :
var http=require("http"); //載入 http 模組
var server=http.
createServer(function(req,res){ //建立伺服器物件
res.
writeHead(200,{"Content-Type":"text/plain"}); //輸出回應標頭
res.
end("Hello World\n"); //輸出回應內容
})
server.
listen(12345); //監聽 12345 port
console.log("Server running at 127.0.0.1:12345/"); //顯示伺服器執行中
存檔後執行 http.js :
E:\Node.js>node http.js
Server running at 127.0.0.1:12345/
可見伺服器已經啟動並監視 12345 埠, 這時用瀏覽器連到 127.0.0.1 (localhost) 的 12345 port :
可見用 Node.js 很簡單就建立了一個網頁伺服器了, 用 Node.js 架站根本不需要安裝甚麼 Apache 伺服器, 自己就可以搞一個出來. 以上便是 Node.js 的簡單測試.
Node.js 發展潛力很大, 連嵌入式系統的 Raspberry Pi 上也可以跑. 最重要的是, Node,js 底層採用 Chrome 瀏覽器的 Javascript V8 引擎, 效能所向無敵; 加上採用單執行緒, 非同步 I/O 與事件驅動架構, 不像傳統多執行緒頻繁的 Context 切換, 執行效能遠超過大部分現行架構, 值得繼續關注其發展.
據 "
深入淺出 Node.js" 書中描述, 為什麼 Javascript 會成為 Node.js 的程式語言呢? 因為 Node.js 的發明人 Ryan Dahl 研究發現, 設計高性能 Web 伺服器的方向應該朝向事件驅動與非阻塞式 I/O. Javascript 在瀏覽器中本來就是事件驅動模式, 而 Javascript 長期在後端沒有市場, 所以在 I/O 部分沒有任何包袱, 可以直接導入非阻塞式 I/O, 加上 V8 引擎的高性能, 於是 Javascript 就雀屏中選了.
最後來看看知名的軟體專案版本控管網站 GitHub 上的程式語言排行榜, Javascript 是關注度第一的語言 :
#
http://githut.info/
Javascript 這個以前被嫌得要死的程式語言, 在前端框架 jQuery 與後端 Node.js 的聯手拉抬下, 終於展翅高飛啦! 特別是 Node.js, 它讓 Javascript 的彷彿吃了大補丸, 能力大釋放, 脫離瀏覽器的牢籠, 變成活力十足的脫韁野馬.
Node.js 託管主機參考 :
#
OpenShift – Red Hat 最新的雲端主機服務
#
OpenShift 教學(一):申請免費空間、安裝WordPress
#
https://www.openshift.com/
Node.js 的桌面應用參考 :
#
用 JavaScript 開發桌面應用程式:node-webkit
其他 :
#
node.js教學-操作MySQL資料庫
#
如何在 Windows 上設定 node.js 的開發環境