function start(response){
response.writeHead(200,{"Content-Type":"text/plain"});
response.write("start") ;
response.end();
return ("Request handler 'start' was called.");
}
function upload(response){
response.writeHead(200,{"Content-Type":"text/plain"});
response.write("upload") ;
response.end();
return ("Request handler 'upload' was called.");
}
exports.start = start;
exports.upload = upload;
修改 route.js(路由模塊)爲:
//把response對象傳給handlers模塊,直接將結果返回到頁面或進行處理。
function route(handle,pathname,response){
console.log(typeof handle[pathname]) ;
//判斷當前映射的action是否爲一個函數
if(typeof handle[pathname] === 'function') {
//不用知道這裏的handle是什麼對象,直接執行handle的特定方法就可以
var content = handle[pathname](response);
console.log("handle content: "+content) ;
}else{
console.log("No request handler found for " + pathname) ;
response.write(404,{"Content-Type":"text/plain"});
response.write("404 not found");
response.end();
}
}
var http = require("http");
var url = require("url");
function start(route,handle) {
function onRequest(request,response) {
var pathname = url.parse(request.url).pathname;
console.log("Request for "+pathname+" received.") ;
//調用路由模塊
route(handle,pathname,response);
}
http.createServer(onRequest).listen(3333);
console.log("Server has started");
}
exports.start = start;
var server = require("./service/server") ;
var router = require("./service/route");
var requestHandlers = require("./service/requestHandlers");
//創建handle映射類,就是將請求路徑和具體的action函數進行映射關聯
//var handle = {"/":requestHandlers.start,
// "/start":requestHandlers.start,
// "/upload":requestHandlers.upload};
var handle = {};
handle["/"] = requestHandlers.start;
handle["/start"] = requestHandlers.start;
handle["/upload"] = requestHandlers.upload;
console.dir(["handle",handle]);
server.start(router.route,handle);