本课我们来创建路由处理模块
上一课,我们已经学会了怎么样去创建路由模块, 那么要真正的实现路由,还必须要添加具体的处理逻辑。
那么在哪里添加呢?
在routes.js 里的 get函数里添加下面的代码来处理
if (pathname == '/home') {
//do something
} else if (pathname == '/about') {
// do something
}
这样子,功能上是没问题的。不过并不是一个好的方案。为什么呢?
因为,上一课我们实现的路由模块,虽然简单,但是很纯粹。 它只负责实现路由的过程。
路由结束之后,具体采取什么行动,它并不负责
如果把路由结束后的 具体行为 也写入到routes模块,那么, 当有成千上万个路由请求时, 将无法很好的扩展routes模块。
而且,如果routes里实现了具体的处理逻辑,那么这个模块也就只能成为一个具体的服务器的模块,而不再是一个可重用的,通用用的routes模块了。
(假如,我又要实现一个新的服务器server2.js, /home 的逻辑是完成不一样的,那么直接把routes.js拿来使用显示不能得到正确的结果)
因此,我们应该针对 路由结束后的具体行为编写一个单独的模块, 在此把它称为requestHandler模块,在模块中,为每一个请求处理 ,添加一个对应的函数,最后把这些函数作为模块的方法导出:
编写模块我们已经很熟悉了, 直接上代码
上一课,我们已经学会了怎么样去创建路由模块, 那么要真正的实现路由,还必须要添加具体的处理逻辑。
那么在哪里添加呢?
在routes.js 里的 get函数里添加下面的代码来处理
if (pathname == '/home') {
//do something
} else if (pathname == '/about') {
// do something
}
这样子,功能上是没问题的。不过并不是一个好的方案。为什么呢?
因为,上一课我们实现的路由模块,虽然简单,但是很纯粹。 它只负责实现路由的过程。
路由结束之后,具体采取什么行动,它并不负责
如果把路由结束后的 具体行为 也写入到routes模块,那么, 当有成千上万个路由请求时, 将无法很好的扩展routes模块。
而且,如果routes里实现了具体的处理逻辑,那么这个模块也就只能成为一个具体的服务器的模块,而不再是一个可重用的,通用用的routes模块了。
(假如,我又要实现一个新的服务器server2.js, /home 的逻辑是完成不一样的,那么直接把routes.js拿来使用显示不能得到正确的结果)
因此,我们应该针对 路由结束后的具体行为编写一个单独的模块, 在此把它称为requestHandler模块,在模块中,为每一个请求处理 ,添加一个对应的函数,最后把这些函数作为模块的方法导出:
编写模块我们已经很熟悉了, 直接上代码