持续创作,加速成长!这是我参与「掘金日新计划 · 10 月更文挑战」的第4天,点击查看活动详情
1.安装node
LTS与Current版本的区别
- LTS为长期稳定的版本
- current为新特性尝鲜版本
创建最基本的web服务器
1.导入http文件
const http =require('http')
2.调用http.createServer()
const server = http.createServer()
3. 为服务器实例绑定request事件
在我们调用完http.createServer()方法以后呢,就创建好了一个服务器,就得为服务器绑定request事件,用来监听客户端发送过来的网络请求。
在这一步中我们需要调用".on()"方法,为服务器绑定request事件,在客户端请求我们服务器时,就回触发request事件。
server.on('request',(req,res)=>{
//只要有客户端来请求我们自己的服务器,就会触发request事件,从而调用这个事件处理函数
//req.url是客服端请求的ur地址
const url =req.url
//req.method是客服端请求的method类型
const method = req.method
const str ='发送的内容'
//设置相应头防止乱码
res.setHeader('content-Type','text/html;charset=utf-8')
//res.end()方法的作用:
//向客服端发送指定的内容,并结束这次请求的处理过程
res.end(str)
})
4.启动服务器
//调用server.listen(端口号,cb回调)方法,即可启动web服务器
server.listen(80,()=>{
console.log('')
})
5.解决中文乱码问题
设置响应头
res.setHeader('content-Type','text/html;charset=utf-8')
根据不同的url相应不同的html地址
核心步骤:
- 获取请求的url
- 设置默认的响应内容为404 Not found
- 判断用户请求是否是 / 或者 /index.html
- 判断用户请求的是否是/about.htm
- 设置 Content-Type响应头,防止中文乱码
- 使用res.end()把响应内容发送给客户端
//核心代码
server.on('request', (req, res) => {
res.setHeader('content-Type', 'text/html;charset=utf-8')
const url = req.url
const fpath = path.join(__dirname, url)
fs.readFile(fpath, 'utf8', function(err, datastr) {
if (err) {
return res.end(content)
} else {
res.end(datastr)
}
})
//1.导入模块
const fs = require('fs')
const http = require('http')
const path = require('path')
//2.创建web服务器
const server = http.createServer()
//监听web服务器的request事件
server.on('request', (req, res) => {
//只要有客户端来请求我们自己的服务器,就会触发request事件,从而调用这个事件处理函数
//设置响应头
res.setHeader('content-Type', 'text/html;charset=utf-8')
//req.url是客服端请求的ur地址
const url = req.url
//拼接地址
const fpath = path.join(__dirname, url)
// 设置默认响应值为404
let content = '404 not fund'
fs.readFile(fpath, 'utf8', function(err, datastr) {
if (err) {
return res.end(content)
} else {
res.end(datastr)
} //打印正确的结果
})
})
//3. 启动服务器
server.listen(80, () => {
console.log('启动成功')
})