学习笔记:用Nodejs搭建一个简单的本地服务器

目标

向一个input输入框,将value经过ajax的get/post方法传到服务器,服务器再返回一个值。html

实现

  • 咱们须要一个HTTP服务器node

  • 对于不一样的请求,根据请求的URL,咱们的服务器须要给予不一样的响应,所以咱们须要一个路由,用于把请求对应到请求处理程序(request handler)ajax

  • 当请求被服务器接收并经过路由传递以后,须要能够对其进行处理,所以咱们须要最终的请求处理程序express

  • 咱们须要从html文件里提取数据以及展现服务器传入的数据,所以须要将html和服务器结合起来服务器

第一步:搭建本地服务器

server.js
clipboard.png框架

关于nodejs的模块机制,能够参考这篇文章`深刻浅出Node.js(三):深刻Node.js的模块机制,讲得很是详细和透彻函数

http.createServer(onRequest).listen(8888)建立了一个服务器,监听端口8888,onRequest即为端口接收到请求时进行处理的回调函数。
在这个回调函数里,咱们有两个参数reqres即接收到的请求和做出的响应。
经过url.parse(req.url).pathname解析出请求的路径,以后咱们将根据不一样的路径指向不一样的处理函数,即路由。
由于get和post方法传入参数的方式不同,所以咱们分别对其处理,get方法咱们知道传参数是在url后面用?name=value这样的形式表示,所以咱们仍是经过解析请求地址来得到url.parse(req.url).query
post方法传参数是在body中,所以能够经过dataend方法监听数据的接收,直到接收完毕。post

第二步:建立路由

router.js
clipboard.pngurl

这一步就将服务器接收到的请求传递给路由进行处理,上一步咱们注意到数据接收完毕后使用了函数route(handle, pathname, response, postData)就是把请求放在路由里了,一样根据路径的不一样,在路由里选择不一样的处理函数handle[pathname](response, postData);
requestHandler.js
clipboard.pngspa

这里就定义了不一样的处理函数的具体内容,好比这里有start,upload,init三种处理方式,怎样将这三种方式对应到不一样的路径请求呢?
index.js

clipboard.png

这里才是咱们最重要的入口文件,handle = {}里面就是以键名和键值的方式将请求路径与处理函数对应起来。好比在地址栏里输入"http://loacalhost:8888/public/index.html"就会调用init这个函数,这样结构就很清楚了吧

再理一下思路:
首先启动服务器,在终端里输入node index.js,初始化处理函数后,进入server.js里监听发送到端口8888的请求,将请求地址和请求数据都传递给路由route.js,路由判断请求是否符合要求,再分门别类地传递给对应的处理函数,这样就完成啦。

再看一下index.html文件

clipboard.png

这里一看就明白了。

以上就是nodejs新手尝试的一个小例子,虽然很简陋,也梳理了一下大概流程,固然真的项目中会结合express框架来应用,就更加方便了。