我們的服務器應當知道路由的存在並加以有效利用。我們當然可以通過硬編碼的方式將這一依賴項綁定到服務器上,但是其它語言的編程經驗告訴我們這會是一件非常痛苦的事,因此我們將使用依賴注入的方式較鬆散地添加路由模塊(你可以讀讀Martin Fowlers關於依賴注入的大作來作爲背景知識)。
首先,我們來擴展一下服務器的start()函數,以便將路由函數作爲參數傳遞過去:
var http = require("http"); var url = require("url"); function start(route) { function onRequest(request, response) { var pathname = url.parse(request.url).pathname; console.log("Request for " + pathname + " received."); route(pathname); response.writeHead(200, {"Content-Type": "text/plain"}); response.write("Hello World"); response.end(); } http.createServer(onRequest).listen(8888); console.log("Server has started."); } exports.start = start;
同時,我們會相應擴展index.js,使得路由函數可以被注入到服務器中:
var server = require("./server"); var router = require("./router"); server.start(router.route);