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

这篇个人笔记介绍了如何利用Node.js的http模块创建一个基础的Web服务器,包括监听端口、响应请求以及处理不同URL的逻辑。通过设置Content-Type解决中文编码问题,最后强调在JavaScript中Node.js环境中无需使用分号。

简单使用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格式的文本)

在这里插入图片描述

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

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

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值