加入收藏 | 设为首页 | 会员中心 | 我要投稿 帝国网站管理系统 (https://www.0356zz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 服务器 > 系统 > 正文

Node.js搭建WEB服务器的示例代码

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

(编辑:帝国网站管理系统)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    热点阅读