先介紹一下,接下來要做什麼。
計畫初衷
通常從PHP這一類附屬於伺服器的程式語言入手node.js,會碰到一個問題:開發的不只是一個單純的伺服器端程式,而是一個伺服器。例如靜態檔案在撰寫php時,其實是透過伺服器在處理,根本不用管他。但是node.js只是在發生request時,丟兩個物件(ServerRequest/ServerResponse)叫你去處理。所以像node.js官網上的hello world範例:
var http = require('http');
http.createServer(function (req, res) {
res.writeHead(200, {'Content-Type': 'text/plain'});
res.end('Hello World\n');
}).listen(1337, "127.0.0.1");
console.log('Server running at http://127.0.0.1:1337/');
不論你在url中指定什麼資源,出現的結果都是一樣的:
(不過如果來自Ruby或是Python,應該已經熟悉這些了)
所以就想自己嘗試開發一個伺服器,看看要怎麼解決這些使用上的問題。不過這裡做的只是一些嘗試跟實驗,node.js已經有很好的http伺服器framework,例如Express、Strata等,要使用node.js做自己的網站,用這些framework還是比較方便的。尤其是Express是node.js環境中最早開發也最成熟的方案,有興趣可以先嘗試(他還包含了例如單元測試、覆蓋率測試的相關工具)。
預計範圍
之後的文章與程式,大致上會以下列主題依序進行
* 概念驗證
* 逐步改進架構設計
* 逐步加入QA
* MVC設計與實做
* 考慮開發易用性
各個部份都會有幾個嘗試。然後,一切,就從模仿通用網頁伺服器,解決與檔案系統對應開始。
(這樣做是我的私心。事實上,學習node.js不必這麼麻煩,因為已經有無數人寫好無數的套件,許多東西,只要直接拿來用就好了。)