var http = require("http") //加载一个模块
示例创建服务器
var server = http.createServer(function(req,res){ req[请求]附带的信息 res是我们[响应]返回给浏览器的信息
设置响应头 数据用html返回 plain是用字符串返回 用utf-8解码 告诉浏览器后面发的"hello world"数据需要去如何解析
res.setHeader("Content-Type","text/html; charset = utf-8")
响应头 status code: 200 OK 当前请求的状态 一个约定 约定200是成功的也可以换成其他
res.writeHead(200,"OK")
响应体 发给浏览器什么
res.write('<html><head><meta charset='gbk'></head>')
res.write('<body>')
res.write('<h1>你好</h1>')
res.write('body')
res.write('html')
结束
res.end()
})
server.listen(8080) //启动服务器 监听8080这个端口
res.end(123456) end里直接写内容= res.write + res.end
启动服务器
cd到文件当前目录
node index.js 启动文件
localhost:8080
ctrl+c 退出服务器
这里cosole.log()的结果展示在终端
响应头[Response Headers]是设置基本设置信息
响应体是看响应体的设置 对发送给浏览器的数据作什么样的解析 一个页面的查看源代码
ajax是请求头 这里是服务器给你的响应头
流程
在浏览器输入localhost:9000的时候 会有一个请求
有一个 请求头 浏览器自动加的
请求到了服务器之后 会进入我写的这个函数
可以根据用户请求的url 执行不同的逻辑 找到不同的逻辑后 返回不同的数据
发了一个响应res.write('hello world') res.write是响应体
做一个静态服务器
使用模块
var http = require('http') //创建服务器的
var path = require('path') //处理路径url windows mac 的路径可能是不一样的 用来处理
var fs = require('fs') //用来读写文件
var url = require('url') //可以自动解析url得到一些信息
服务器处理
function staticRoot(staticPath,req,res){
console.log(staticPath) 获得服务器读取到的绝对路径
console.log(req.url) 获得请求的文件路径
var pathObj = url.parse(req.url,true) 获得一堆数据 所需要的是pathname:'/index.html'
这里if 是设置localhost:8080/index.html 如果localhost:8080 默认打开index.html
//这里通过pathObj.pathname获得了完整路径
if(pathObj).pathname === '/'{
pathObj.pathname += 'index.html'
}
var filePath = path.join(staticPath,pathObj.pathname) 得到所请求文件的具体的路径
读取filePath得到的具体路径 使用binary二进制的方法 来处理错误和成功的方法
fs.readFile(filePath,'binary',function(err,fileContent){
if(err){
console.log('404')
res.writeHead(404,'not found')
res.end(<h1>404 Not Found</h1>)
}else{
console.log('OK')
res.writeHead(200.'OK')
res.write(fileContent,'binary')
res.end()
}
})
}
服务器本身
var server = http.createServer(function(req.res){
staticRoot(path.join(__dirname,'static'),req,res) __dirname代表当前文件 static加载内容的总文件夹名 /当前文件夹/static
})
server.listen(8080)
网友评论