轻松地创建一个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 =路线;
我们将句柄对象作为参数传递给服务器,然后通过路由接收它。最后,通过路径判断相应的请求处理程序是否存在,如果存在,调用相应的函数。
我们可以从关联数组元素从传输对象的访问请求的功能,所以是一个简单的和光滑的形状(如处理{路径});表达,这感觉就像在提到前面:你好,请帮我这条路。
这样,我们可以根据不同的要求做出不同的处理。
在下一节中,我们将进一步转换代码,并让服务器做出一些实际的反馈。