---恢复内容开始---
1、node初体验
安装完成node,写好相应的js代码后,在cmd中node 文件名即可完成编译执行过程。
2、尝试使用node搭建一个简单服务器
//引入http模块 const http = require('http') //创建服务器 let server = http.createServer(function (req,res) {//默认有两个参数,请求与相应 res.write('welcome') res.end()//终止响应 }) //监听及设置端口 server.listen(8080,function(){ console.log('server is running') })
通过打印上述代码中的req对象,有用的是
.url 请求的资源地址
3、文件读写:
1)使用模块:fs
2)读取操作
const fs = require('fs') fs.readFile('a.txt',function(err,data){ if(err){ console.log(err) }else{ //将二进制数据转换为字符串 console.log(data.toString()) } })
3)写入操作
const fs = require('fs') fs.readFile('a.txt',function(err,data){ if(err){ console.log(err) }else{ //将二进制数据转换为字符串 console.log(data.toString()) } }) //writeFile(fileName,data,callback) fs.writeFile('b.txt','hello,b!',function(err){ console.log(err) })
4)结合服务器一同使用
//引入http模块 const http = require('http') const fs = require('fs') //创建服务器 let server = http.createServer(function (req,res) {//默认有两个参数,请求与相应 let file=`./www${req.url}`//进行目标文件路径的拼接 fs.readFile(file,function(err,data){ if(err){ res.end('读取失败哦') }else{ res.end(data) } }) }) //监听及设置端口 server.listen(8080,function(){ console.log('server is running') })
要注意的是,不论前台是按什么方式发起请求,form/ajax/jsonp,
后台的处理方式都是相同的,请求方式才有影响
4、服务器对get的处理
1)使用queryString模块
const qs=require('querystring')
qs.parse('aquerystring')//将查询字符串转为json对象
2)使用url模块
将帮助我们解析url地址
.parse(url,true)
将返回一个对象,包含请求参数,端口等各种信息
给了true的话query将被自动解析为json,同时也会解析pathname
const http = require('http') const qs=require('querystring') const urlLib=require('url') //创建服务器 let server = http.createServer(function (req,res) {//默认有两个参数,请求与相应 let obj=urlLib.parse(req.url,true) let url=obj.pathname let query=JSON.stringify(obj.query) console.log(`${url}=====${query}`) res.end('test page') }) //监听及设置端口 server.listen(8080,function(){ console.log('server is running') })
5、服务器对post的处理
const http = require('http') const qs = require('querystring') //创建服务器 let server = http.createServer(function (req, res) {//默认有两个参数,请求与相应 let str = ''//用于存储发送过来的数据,不严谨 //由于通过post发送的数据可能很大,因此根据数据量大小采取分段多 //多次发送的策略 //data,在有一段数据到达后触发,可能触发多次 req.on('data', function (data) { str += data }) //end,数据全部到达后触发,仅触发一次 req.on('end', function () { let postData = qs.parse(str) console.log(postData) res.end('请求完成') }) }) //监听及设置端口 server.listen(8080, function () { console.log('server is running') })
6、阶段性总结,写一个比较完整的服务器
const http = require('http') const qs = require('querystring') const fs = require('fs') const urlLib = require('url') //创建服务器 let server = http.createServer(function (req, res) {//默认有两个参数,请求与相应 //get let obj=urlLib.parse(req.url,true) let url=obj.pathname const GET=obj.query //post let str='' req.on('data',function (data) { str+=data }) req.on('end',function(){ const POST=qs.parse(str) }) //文件请求 let file='./www'+url fs.readFile(file,function(err,data){ if(err){ res.end('404') }else{ res.end(data) } }) }) //监听及设置端口 server.listen(8080, function () { console.log('server is running') })