我们来分解一下这个应用,为了实现上文的用例,我们需要实现哪些部分呢?
* 我们需要提供Web页面,因此需要一个_HTTP服务器_
* 对于不同的请求,根据请求的URL,我们的服务器需要给予不同的响应,因此我们需要一个_路由_,用于把请求对应到请求处理程序(request handler)
* 当请求被服务器接收并通过路由传递之后,需要可以对其进行处理,因此我们需要最终的_请求处理程序_
* 路由还应该能处理POST数据,并且把数据封装成更友好的格式传递给请求处理入程序,因此需要_请求数据处理功能_
* 我们不仅仅要处理URL对应的请求,还要把内容显示出来,这意味着我们需要一些_视图逻辑_供请求处理程序使用,以便将内容发送给用户的浏览器
* 最后,用户需要上传图片,所以我们需要_上传处理功能_来处理这方面的细节
我们先来想想,使用PHP的话我们会怎么构建这个结构。一般来说我们会用一个Apache HTTP服务器并配上mod_php5模块。
从这个角度看,整个“接收HTTP请求并提供Web页面”的需求根本不需要PHP来处理。
不过对Node.js来说,概念完全不一样了。使用Node.js时,我们不仅仅在实现一个应用,同时还实现了整个HTTP服务器。事实上,我们的Web应用以及对应的Web服务器基本上是一样的。
听起来好像有一大堆活要做,但随后我们会逐渐意识到,对Node.js来说这并不是什么麻烦的事。
现在我们就来开始实现之路,先从第一个部分--HTTP服务器着手。