以前用 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 的開發環境
沒有留言 :
張貼留言