这篇文章主要介绍节点。js怎么搭建WEB服务器,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!
<强>简单例子强>
首先,从搭建最简单的<代码> Hello world 代码>开始,建立以下目录,文件和内容。
建立项目及运行
项目
WEB - +,|,安康;server.js
服务器。js
const http =,要求(& # 39;http # 39;); http.createServer(函数(请求,响应),{ ,//设置响应头 ,response.writeHeader (200, { “才能Content-Type",:,“文本/plain" ,}); ,//响应主体为,“Hello 世界!“ ,response.write (“Hello 世界!“); ,response.end (); })//,设置监听端口为9000 .listen (9000),
现在,在项目目录运行下面命令来执行服务器。js,浏览器地址栏中输入localhost: 9000年,如果一切访问都正常,浏览器就会显示Hello world !.
<代码>节点服务器。js代码>
提示:使用ctrl + c停止脚本运行。
至此一个简单例子就运行成功了,下面来分析一下代码。
<强>代码分析强>
首先,服务器。js中引入了节点。js的http模块,它提供了非常底层http API支持。这里使用createServer()方法,它返回一个http。服务器实例,使用该实例的听()方法来设置监听端口。
方法createSever()中填写的参数是一个函数,该函数会作为回调函数自动添加到请求事件去,其参数类型分别为http。IncomingMessage和http。ServerResponse。在回调函数体里,利用http。ServerResponse的方法设置了响应头和响应主体,最后以结束()方法结束本次请求。
<>强路由功能强>
上述的例子仅仅实现了简单请求响应功能,现在增加路由的功能来健壮我们的WEB服务器。现在,修改为以下的目录,文件和内容。
<>强实现简单路由强>
项目
WEB - ,|安康;server.js +,|,安康;router.js
服务器。js
const http =,要求(& # 39;http # 39;); const router =,要求(& # 39;。/router.js& # 39;); function handleHello(请求,响应),{ ,//设置响应头 ,response.writeHeader (200, { “才能Content-Type",:,“文本/plain" ,}); ,//响应主体为,“Hello 世界!“ ,response.write (“Hello 世界!“); ,response.end (); } http.createServer(函数(请求,响应),{ ,//注册路径和其对应回调函数 ,router.register(请求,响应,( {才能 ,,& # 39;url # 39;:, & # 39;/你好# 39; ,,& # 39;处理程序# 39;:handleHello ,,} ,]); })//,设置监听端口为9000 .listen (9000),
路由器。js
const url =,要求(& # 39;url # 39;); 时间=exports.register 函数(请求,响应,映射),{ ,//解析请求路径 ,var pathName =, url.parse (request.url) .pathname; ,//执行相应请求路径的回调函数 ,(let 小姐:=,0,,len =, mapping.length;小姐:& lt;, len;我+ +),{ 如果才能(映射[我].url ===,路径名),{ ,,映射[我].handler(请求,响应); ,才能回报; ,,} ,} ,//请求路径不存在返回404页面 ,response.writeHeader (404, { “才能Content-Type",:,“文本/html" ,}); ,response.end (' & lt;才能html> ,,& lt; head> ,,,& lt; title> NOT FOUND ,,& lt;/head> ,,& lt; body> ,,,& lt; h2> 404年,NOT FOUND ,,& lt;/body> & lt;才能/html> ,'); }
现在,再次执行服务器。js脚本,接着浏览器访问localhost: 9000 \你好会得到hello world !的结果,而访问其他路径则会得到404页面。
这个功能的核心实现是在路由器。js中,通过请求路径的解析,然后根据预先注册好数的映射组,找到与之对应的路径并执行相应的回调函数。
<强>静态资源请求强>
当前的路由功能只能实现回调函数的执行,而一个WEB服务器应具有响应静态资源请求的能力,接下我们继续来改造它。现在,保持服务器。js内容不变,只改变路由器。js中的内容(部分代码内容省略)。
路线。js
const url =,要求(& # 39;url # 39;); const path =,要求(& # 39;path & # 39;); const fs =,要求(& # 39;fs # 39;); function getErrorInfo (errorType), { ,//省略代码 } function writeErrorPage(反应,errorType), { ,//省略代码 } 时间=exports.register 函数(请求,响应,映射),{ ,//解析请求路径 ,var pathName =, url.parse (request.url) .pathname; ,//执行相应请求路径的回调函数 ,(let 小姐:=,0,,len =, mapping.length;小姐:& lt;, len;我+ +),{ 如果才能(映射[我].url ===,路径名),{ ,,映射[我].handler(请求,响应); ,才能回报; ,,} ,} ,//请求路径为文件返回文件内容 ,var file =, path.resolve (__dirname, & # 39;强生# 39;,+,路径名); ,fs.exists(文件,函数(的存在),{//才能,请求路径不存在返回404页面 如果才能存在(!),{ ,,writeErrorPage(响应,& # 39;NOT_FOUND& # 39;); ,,} else {才能 ,,var stat =, fs.statSync(文件);//,,,请求路径为目录返回403页面 ,,如果(stat.isDirectory ()), { null null null null null null null null null null null null nullnode . js怎么搭建WEB服务器