target到一个input输入框,通过ajax的get/post方法将值传给服务器,服务器返回一个值。为了实现,我们需要一个HTTP服务器来处理不同的请求。根据请求的URL,我们的服务器需要给出不同的响应,所以我们需要一个路由来将请求映射到请求处理程序(requesthandler),当请求被服务器接收并经过路由后,需要要处理,所以我们需要最终的请求处理程序。我们需要从html文件中提取数据,显示服务器传入的数据,所以需要将html和服务器结合起来。第一步:搭建本地Serverserver.js关于nodejs的模块机制,可以参考这篇文章《深入浅出Node.js(三):深入Node.js模块机制,很详细很透彻http.createServer(onRequest.listen(8888)创建一个服务器,监听8888端口,onRequest是该端口收到请求时处理的回调函数。在这个回调函数中,我们有两个参数req和res,分别是接收到的请求和作出的响应。通过url.parse(req.url).pathname解析请求的路径,然后我们会根据不同的路径指向不同的处理函数,也就是路由。因为get和post方法传递参数的方式不同,所以我们分开处理。我们知道get方法是在url后面传递?name=value形式的参数,所以我们还是通过解析请求地址.parse(req.url).query来获取url。post方法传递的参数在body中,所以可以通过data和end方法监听数据接收,直到接收完成。第二步:创建路由router.js这一步将服务器收到的请求传递给路由进行处理。在上一步中,我们注意到接收到数据后使用了函数route(handle,pathname,response,postData)将请求放到路由中,同样根据不同的路径,在路由句柄中选择不同的处理函数[路径名](响应,postData);requestHandler.js在这里定义了不同处理函数的具体内容,比如这里有start、upload、init三个处理方法,这三个方法如何对应不同路径的请求呢?index.js是我们最重要的入口文件,handle={}是将请求路径与处理函数以键名和键值的形式进行匹配。比如在地址栏输入“http://loacalhost:8888/public/index.html”,就会调用init函数,这样结构就很清晰了,我们再想一想:首先启动服务器,并在终端.js中输入nodeindex,初始化处理函数后,进入server.js监听发送到8888端口的请求,将请求地址和请求数据传递给路由route.js,路由判断是否请求满足要求,再传给对应的类目函数处理,就可以了。再看index.html文件,一目了然。以上是一个nodejs新手尝试的小例子。虽然很简单,但是我也整理了一下大概的流程。当然在实际项目中使用express框架会更方便。
