NodeJS依賴注入

我們的服務器應當知道路由的存在並加以有效利用。我們當然可以通過硬編碼的方式將這一依賴項綁定到服務器上,但是其它語言的編程經驗告訴我們這會是一件非常痛苦的事,因此我們將使用依賴注入的方式較鬆散地添加路由模塊(你可以讀讀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);
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章