简单使用node.js构建一个web服务器

简单使用node.js构建一个web服务器(个人笔记)

node.js中专门提供了一个核心模块叫http,加载http核心模块,使用http.createServer()方法创建一个web服务器,代码:

//接触过layui前端框架的应该知道模块的引用,其实个人认为挺类似的,也可能是刚学没有深入。。。

var http=require(‘http’)//引用模块

var server=http.createServer()//这里是创建服务器的方法直接调用

server.on(‘request’,function(){ console.log(‘收到请求!’) })//这里的request是请求事件,当客户端请求时,会自动触发该事件,然后执行第二个参数回调处理。

server.listen(3000,function(){ console.log(‘服务器可以通过http://127.0.0.1:3000端口来访问’) })//这里用来绑定端口号,启动服务器,个人认为可以算一个监听吧。。

代码写好后,cmd打开小黑框,cd指向该文件的文件夹,具体步骤不懂得可以百度,然后输入 node 文件名.js 命令启动服务器。(注意小黑框不能关,最小化就行了。。)

打开浏览器输入IP端口号,回车,看小黑框! 成功!但是因为没有响应事件所以浏览器不会有任何变动,只会显示加载中,因为它在等待服务器响应,然而你懂得,它并不会响应,因为没写!!!

嗯,没响应不行,改这一段: server.on(‘request’,function(){ console.log(‘收到请求!’) })

在function中加上两个字段 server.on(‘request’,function(request,response){ console.log(‘收到请求!请求为:’+request.url) })//这样可以看到请求的路径。

response有个方法叫write,顾名思义就是写,你想要响应的东西,都会写在response对象里,也就是保存在response里面。 server.on(‘request’,function(request,response){ console.log(‘收到请求!请求为:’+request.url) response.write(‘hello ‘) response.write(’ I give you a response!’) response.end() }) 一定要注意,用end方法结束response,不然浏览器依旧没有反应,一直等待。。(其实就是告诉客户端我的话说完了,你显示吧!!)

嗯,看下实际情况。。

依旧是输入命令,启动服务器。。

这样响应也有了,只不过太弱了,所有的请求,响应的全是这个,这时候就可以在里面添加逻辑代码,让不同的url请求响应不同的信息。 例如:

server.on(‘request’,function(request,response){ console.log(‘收到请求!请求为:’+request.url) if(request.url==’/a’){ response.write(‘1’) }else{ response.write(‘2’) } response.end() })

当然一般来说,response.write()不经常用,只要response.end(…),就可以了。然而,事情总有不顺的时候,比如中文。。 server.on(‘request’,function(request,response){ console.log(‘收到请求!请求为:’+request.url) response.end(‘欢迎你!!’) }) 所以,前面加一句。。 server.on(‘request’,function(request,response){ console.log(‘收到请求!请求为:’+request.url) response.setHeader(‘Content-Type’,‘text/plain;charset=utf-8’) response.end(‘欢迎你!!’) })//服务端默认发送utf-8编码内容,但浏览器不知道,所以要告诉他我用的是utf-8编码 //Content-Type是http协议中的数据内容的类型 //text/plain普通文本(举例:text/html是html格式的文本)

最后,我想说一下,因为本人学习后端语言的因素,所以总会下意识的打上分号(;),但是这个不需要,如果打上还会报错,我当时还迷糊了一段时间不知道问题在哪。。。。。。

此文章纯属自学笔记,大佬勿喷,也请多指教!!

经验分享 程序员 微信小程序 职场和发展