Node.js搭建WEB服务器的示例代码
前言
这几天为了熟悉vue.js框架,还有webpack的使用,就准备搭建一个发布和浏览markdwon的简单WEB应用。原本是想着用bash脚本和busybox的httpd来作为后台服务,但是bash脚本解析和生成JSON非常不方便,而用Java语言写又觉得部署不方便,所以就想到了正在用到的Node.js,于是就有了这篇博文。(文末有本文代码的github地址)
简单例子
首先,从搭建最简单的Helloworld开始,建立以下目录、文件和内容。
建立项目及运行
project
web-server +|-server.js
server.js
consthttp=require('http'); http.createServer(function(request,response){ //设置响应头 response.writeHeader(200,{ "Content-Type":"text/plain" }); //响应主体为"Helloworld!" response.write("Helloworld!"); response.end(); }) //设置监听端口为9000 .listen(9000);
现在,在项目目录运行下面命令来执行server.js,浏览器地址栏中输入localhost:9000,如果一切访问都正常,浏览器就会显示Helloworld!。
nodeserver.js
提示:使用ctrl+c停止脚本运行。
至此一个简单例子就运行成功了,下面来分析一下代码。
代码分析
首先,server.js中引入了Node.js的http模块,它提供了非常底层HTTPAPI支持。这里使用createServer()方法,它返回一个http.server实例,使用该实例的listen()方法来设置监听端口。
方法createSever()中填写的参数是一个函数,该函数会作为回调函数自动添加到request事件去,其参数类型分别为http.IncomingMessage和http.ServerResponse。在回调函数体里,利用http.ServerResponse的方法设置了响应头和响应主体,最后以end()方法结束本次请求。
路由功能
上述的例子仅仅实现了简单请求响应功能,现在增加路由的功能来健壮我们的WEB服务器。现在,修改为以下的目录、文件和内容。
实现简单路由
project
web-server |-server.js +|-router.js
server.js
consthttp=require('http'); constrouter=require('./router.js'); functionhandleHello(request,response){ //设置响应头 response.writeHeader(200,{ "Content-Type":"text/plain" }); //响应主体为"Helloworld!" response.write("Helloworld!"); response.end(); } http.createServer(function(request,response){ //注册路径和其对应回调函数 router.register(request,response,[ { 'url':'/hello', 'handler':handleHello } ]); }) //设置监听端口为9000 .listen(9000);
router.js
consturl=require('url'); exports.register=function(request,response,mapping){ //解析请求路径 varpathName=url.parse(request.url).pathname; //执行相应请求路径的回调函数 for(leti=0,len=mapping.length;iNOTFOUND 404NOTFOUND