首页IT科技node.js 10实战(Node.js基础入门第七天)

node.js 10实战(Node.js基础入门第七天)

时间2025-04-28 21:57:31分类IT科技浏览4265
导读:经过前面六天的知识学习,对Node.js开发的基础知识,有了一个初步的掌握,今天继续学习Node.js后端web开发的相关知识,本篇文章作为Node.js服务端程序开发的基础入门知识,仅供学习分享使用,如有不足之处,还请指正。...

经过前面六天的知识学习            ,对Node.js开发的基础知识                  ,有了一个初步的掌握      ,今天继续学习Node.js后端web开发的相关知识         ,本篇文章作为Node.js服务端程序开发的基础入门知识                  ,仅供学习分享使用         ,如有不足之处      ,还请指正            。

创建服务端程序

通过Node.js创建web服务端程序                  ,需要引用http模块            ,创建服务   ,并监听对应端口                  ,如下所示:

在命令行窗口运行程序               ,即可启动服务,示例如下:

浏览器中               ,输入网址http://http://localhost:8080/                  ,如下则表示成功                  。

注意:响应对象同时也是一个流对象   ,在最后一定要结束流      。

端口查看

通过命令行输入netstat -abo可以查看启动端口的程序和进程ID            ,如下所示:

按请求路径响应内容

通过以上示例不难发现                  ,创建web服务      ,只需要四步         。但是在真实的需求中         ,会有不同的页面                  ,那如何根据不同路径         ,返回不同内容呢?

后端程序可以根据访问的req.url属性      ,来判断用户访问的具体页面信息                  ,来做出不同的响应            ,具体如下所示:

1 //3. 监听请求事件,当有请求时   ,触发回调函数 2 server.on(request,function(req,res){ 3 res.writeHead(200,{"content-type":"text/html;charset=utf-8"}); 4 console.log(req.url); 5 if(req.url==="/"){ 6 res.write("<span>这是首页</span>"); 7 } 8 if(req.url==="/list.html"){ 9 res.write("<span>这是列表页</span>"); 10 } 11 if(req.url==="/detail.html"){ 12 res.write("<span>这是明细页</span>"); 13 } 14 res.write("<br /><span>Iam 小六公子</span>"); 15 res.end(); 16 });

运行程序                  ,如下所示:

打开浏览器               ,分别输入网址进行测试,如下所示:

状态码

状态码是http协议规定的服务器响应数据时的状态编码                  。常用的状态码如下所示:

200 请求响应成功 304 未修改               ,所请求的资源未更改 404 请求的资源不存在         。 500 服务器内部错误      。

其他状态码可参考百度百科                  ,如下所示:

在Node.js中通过res.writeHead方法   ,可以返回响应头信息            ,其中包含状态码                  ,如下所示:

1 server.on(request,function(req,res){ 2 res.writeHead(200,{"content-type":"text/html;charset=utf-8"}); 3 res.write("<span>这是首页</span>"); 4 res.end(); 5 });

在浏览器中      ,进行访问         ,通过监控网络即可查看状态码                  ,即可返回消息头         ,如下所示:

如果程序内出现错误      ,则可以返回500错误                  ,如下所示:

1 server.on(request,function(req,res){ 2 res.writeHead(200,{"content-type":"text/html;charset=utf-8"}); 3 try{ 4 var t =a+1; 5 res.write("<span>这是首页"+t+"</span>"); 6 }catch(e){ 7 res.writeHead(500,{"content-type":"text/html;charset=utf-8"}); 8 } 9 res.end(); 10 });

在浏览器打开            ,如下所示:

响应头

状态码是保存在响应头中的   ,响应头中不仅包含状态码                  ,还包含其他内容                  。如下所示:

Content-Type响应内容的格式类型               ,常用Content-Type: text/html;charset=utf-8            。 Content-Length:响应内容的长度,一般不设置               ,默认即可   。 Access-Control-Allow-Origin 响应头跨域设置                  ,默认可以设置成*号                  。 Access-Control-Allow-Methods: POST, GET, OPTIONS, DELETE Access-Control-Max-Age: 86400

响应头示例如下所示:

1 server.on(request,function(req,res){ 2 res.writeHead(200,{ 3 "content-type":"text/html;charset=utf-8", 4 "Access-Control-Allow-Origin":"*", 5 "Access-Control-Allow-Methods":"POST, GET, OPTIONS, DELETE", 6 "Access-Control-Max-Age":86400}); 7 res.write("<span>这是首页</span>"); 8 res.end(); 9 });

在浏览器中运行   ,并打开开发者工具进行监控            ,可以非常方便的查看响应头信息                  ,如下所示:

构建静态网站

通过以上示例      ,可以看出         ,创建一个web服务器端程序                  ,非常简洁         ,但是以上示例都是在js后端代码中      ,内嵌html代码                  ,那如何实现代码分离呢?以下以静态网站为例            ,如下所示:

首先创建静态html页面   ,如下所示:

创建web服务程序                  ,根据请求的url路径               ,自动读取对应的html页面文件内容并返回,如下所示:

1 //1.引入http模块 2 var http = require(http); 3 var fs = require(fs); 4 var path = require(path); 5 //2.创建服务 6 var server = http.createServer(); 7 var extnames = {".html":"text/html",".css":"text/css",".png":"image/png"}; 8 //3. 监听请求事件,当有请求时               ,触发回调函数 9 server.on(request,function(req,res){ 10 11 var url=req.url; 12 if(url==="/"){ 13 url="/index.html"; 14 } 15 var localPath = ./www+url; 16 var extname = path.extname(localPath); 17 console.log(localPath); 18 if(extname===".ico"){ 19 res.end(); 20 }else{ 21 fs.readFile(localPath,function(err,data){ 22 res.writeHead(200,{"content-type":""+extnames[extname]+";charset=utf-8"}); 23 res.write(data); 24 res.end(); 25 }); 26 } 27 }); 28 29 //4. 监听8080端口 30 server.listen(8080,function(){ 31 console.log("server is running"); 32 });

运行程序                  ,如下所示:

在浏览器中进行访问   ,如下所示:

备注

登金陵凤凰台【作者】李白【朝代】唐

凤凰台上凤凰游            ,凤去台空江自流               。

吴宫花草埋幽径                  ,晋代衣冠成古丘。

三山半落青天外      ,二水中分白鹭洲               。

总为浮云能蔽日         ,长安不见使人愁                  。

声明:本站所有文章                  ,如无特殊说明或标注         ,均为本站原创发布   。任何个人或组织      ,在未征得本站同意时                  ,禁止复制            、盗用                  、采集      、发布本站内容到任何网站         、书籍等各类媒体平台            。如若本站内容侵犯了原著者的合法权益            ,可联系我们进行处理                  。

创心域SEO版权声明:以上内容作者已申请原创保护,未经允许不得转载,侵权必究!授权事宜、对本内容有异议或投诉,敬请联系网站管理员,我们将尽快回复您,谢谢合作!

展开全文READ MORE
华为鸿蒙系统补电有用吗(鸿蒙系统可以进行补电吗?鸿蒙系统补电教程) iframe嵌套页面传递参数(iframe嵌套其它网站页面及相关知识点详解)