nodejs-用node轻松构建一个web服务器(http模块)

与fs文件模块一样,http模块也是nodejs核心模块中的一个
当学到这儿的时候我突然真正体会到了模块化编程究竟是什么样的过程

http模块之请求

1、引入http模块

1
var http = require('http')

2、实例化一个web服务器

1
var server = http.createServer()

3、注册request请求事件

1
2
3
4
server.on('request',function(){
console.log('服务器收到请求了!')
//一旦有请求过来就能触发回调函数
})

4、绑定端口号,启动服务器

1
2
3
server.listen(3000,function(){
console.log(server is running……)
})

http模块之响应

这部分一气呵成

1
2
3
4
5
6
7
8
var http =require('http')
var server = http.createServer()
server.on('request',function(req,res){
console.log('服务器收到请求了!')
//res对象有一个方法,用来给客户端发送响应
res.write('hello nodejs')
res.end() //这个方法用来结束客户端等待,要不然浏览器会一直转圈
})

http模块之Content-Type

学到这的时候我突然回忆起了当时学php的时候也是需要在请求头中设置Content-Type来解决浏览器的识别编码的问题
看来无论是什么语言都有这一步的操作

1
2
3
4
5
6
7
var http = require('http')
var server = http.createServer()
server.on('request',function(req,res){
res.setHeader('Content-Type','text/plain;charset=utf-8')
res.end('hello 世界')
})
sercer.listen(3000,function(){})

为什么?

服务器发送的数据其实是utf-8编码的内容。
但浏览器不知道是什么编码方式,所以它只会按照操作系统默认的方式解码。
因此,服务器得告诉浏览器,我的内容是个文本(text),你按照plain的格式来解析,字符按照utf-8编码方式解析

Content-Type有哪些?

不同的资源对应的Content-Type是不一样的。
可以在常用对照表参考
图片不需要指定编码。
一般只为字符数据指定编码(没有字符的话;charset=utf-8可以不写)

# nodejs

评论

Your browser is out-of-date!

Update your browser to view this website correctly. Update my browser now

×

// tidio机器人助手