轻松地创建一个NodeJS服务器(5):事件处理程序

为了对差异做出不同的反馈,我们引入了事件处理器模块。

该模块为requesthandlers,我们首先添加启动两占用功能()和上传()。

的requesthandlers.js代码如下:

复制代码代码如下所示:

函数start(){

console.log(把这当访问/明星。);

}



函数上载(){

console.log(把这当访问/上传。);

}



exports.start =开始;

exports.upload =上传;



在实际应用中,请求处理程序的数量正在增加。我们确实不希望每次有新URL或请求处理程序时就完成请求。

处理程序被映射和重复。

此外,我们也不希望有很多的X请求,然后调用处理程序,在路由中,这将使代码看起来非常混乱,非常不专业的感觉。

在这里,我将使用关联数组的概念来处理这个需求。我们将通过一个对象传递一系列请求处理程序,我们需要使用松耦合的方法将这个对象注入到路由()函数中。

我们首先介绍这个对象的主要文件index.js:

复制代码代码如下所示:

var(=);

var路由器=要求();

无功requesthandlers =需要(, / requesthandlers );



var句柄{ };

处理{ / = requesthandlers.start;

处理{ /启动= requesthandlers.start;

处理{ /上传= requesthandlers.upload;



Server.start(router.route,手柄);



例如,我想添加一个 /显示映射和添加处理{ /显示} requesthandlers.show直接。

哈哈,代码这么简单有序吗!

接下来我们通过处理对象的服务器,和server.js修改如下:

复制代码代码如下所示:

var(=HTTP);

需要(url);

函数开始(路由,句柄){

功能要求(请求、响应){

VaR的路径= url.parse(请求URL)。Pathname;

console.log(+路径+收到。请求);

路线(手柄、路径);

response.writehead(200,{内容类型:文本/平原});

response.write(Hello World);

response.end();

}

http.createserver(要求)听(8888);

console.log(服务器已经开始。);

}

exports.start =开始;



修改路径()在route.js函数文件修改功能:

复制代码代码如下所示:

功能路线(手柄,路径名){

console.log(路由请求+路径);

如果(typeof处理{ } = { 'function路径)

{ }()处理路径;

{人}

console.log(没有请求处理程序发现+路径);

}

}

exports.route =路线;



我们将句柄对象作为参数传递给服务器,然后通过路由接收它。最后,通过路径判断相应的请求处理程序是否存在,如果存在,调用相应的函数。

我们可以从关联数组元素从传输对象的访问请求的功能,所以是一个简单的和光滑的形状(如处理{路径});表达,这感觉就像在提到前面:你好,请帮我这条路。

这样,我们可以根据不同的要求做出不同的处理。

在下一节中,我们将进一步转换代码,并让服务器做出一些实际的反馈。