这是一个连续的结节学习笔记,本文是第一章,会持续更新,持续完善
大蟒好用,用久了就会把人的脾气养起来,nodejs不好用,但效率很好,也能彻底治好你的坏脾气
开发的回调是我用过的最蛋疼的编程方式之一,但也足够巧妙,学好节点,对一个程序员而言,也是一个稳赚不赔的买卖
废话不多说,上代码
1.完成环境的搭建,运行一个正则,提取字符串中的数字
让NumRe=/ d/g;控制台。日志(' 123 dsg Fas 12434 sdfasdf 234dag sdfg ' .match(NumRE));
开发的语法和浏览器射流研究…的语法非常接近,安装好结节后,可以写个正则,测试一下环境是否安装成功,通过原子的脚本插件容易造成端口占用,建议学习过程中用命令行工具执行结节脚本,如节点HelloWorld.js
2.超文本传送协议(超文本传输协议的缩写)模块开启一个服务
const http=require('http')//开启一个监听8080端口的静态服务http.createServer(函数(req,res){ console.log('==',req。网址);如果(请求。URL==='/1。html '){ RES . write('您有请求1。html ');} else if(req。URL==='/2。html '){ RES . write('您有请求2。html ');}else{ res.write('404(找不到页面)');} RES . end();}).听(8080)开启服务,分三步:
第一步: 引入模块第二步: 调用模块http.createServer第三步: 监听端口http.createServer(函数(请求,资源){}).听(8080)
3.满量程模块读写文件
const fs=require(' fs ');//写入文件fs.writeFile('HelloWorld.txt ',' HelloWorld HelloNode ',函数(错误){如果(错误){控制台。日志(err);} //读取刚刚写入的数据else { fs。readfile(' helloworld。' txt ',函数(err,data){ if(err){ console。日志(err);} else { console。日志(数据。tostring());} }) }})简单读写文件非常简单,与其它编程语言类似,把调用方法背过就可以了
4.实现一个静态超文本传送协议(超文本传输协议的缩写)服务器
const http=require(' http ');const fs=要求(' fs ')http。createserver(函数(req,res){ //打开www/目录下的文件fs.readFile(' ./www/' req.url,函数(err,data){ if(err){ console。日志(err);RES . write(' 404 ');RES . end();} else { console。日志(数据。tostring())RES . write(数据);RES . end();} })}).听(8080)通过了读取www/目录下的文件,实现了静态资源服务器
5.获取得到数据
const http=require(' http ');const URL=必选(' URL ');http.createServer(函数(req,RES){ let reqObj=URL。解析(请求。URL,true)让URL路径=reqObj。路径;让URL data=ReqObj . querylet log='==URl path : ' URl path '==URl data : ' JSON。stringify(URl DATa);控制台。日志(log);res.write(日志);RES . end();}).听(6060)解析得到请求的参数
6.获取邮政数据
const http=require(' http ');const查询字符串=require('查询字符串');http.createServer(函数(req,RES){ let DataStr=' ';设I=0;req.on('data ',function(data){ dataStr=data;控制台。日志(` 0第${i }次收到数据`);}) req.on('end ',function(){ console。日志(' end ');让parseData=查询字符串。解析(DataStr);console.log('parseData: ',解析数据);res.write(新缓冲区(dataStr,' utf8 ');RES . end();})}).听(8800)解析邮政请求的参数
小结: 用已有知识实现简单的服务器程序
const http=require(' http ');const fs=require(' fs ');const查询字符串=require('查询字符串');/**1.访问万维网内的静态资源*2.解析得到请求,并保存到serverLog.txt*3 .解析邮政请求serverLog.txt*///获取当前时间函数getNowDate(){ let dt=new Date();让year=dt。getfull year();让月=dt。getmonth();让day=dt。GetDate();//将月份加一个月=第一个月;//将月份补齐到两位if(月=9){月='0 '月;} //将日补齐到两位if (day=9){ day='0 '天;}让小时=dt。gethours();让分钟=dt。getminutes();让秒=dt。getseconds();返回年'-'月'-'日'-'小时'-'分钟'-'秒;}http.createServer(函数(请求,决议){ //1 .尝试访问万维网下的静态资源fs.readFile(' ./www' req.url,函数(err,data){ if(err){ //2 .解析请求的参数,并保存到记录if(请求。方法==' GET '){控制台。日志('收到了得到请求)让getData=查询字符串。解析(请求。网址。拆分('?')[1]);console.log('获得的得到数据为==',getData);fs.writeFile(' ./serverLog.txt ',GetNowDate()' n ' JSON。stringify(GetDATa)' n ',{flag: 'a'},函数(错误){如果(错误){控制台。日志(err);console.log('GET数据保存至原木出错');} });} else if(req。方法==' POST '){控制台。日志('收到了邮政请求)让tmpData=' ' req.on '(数据),函数(数据){ tmpData=data });req.on('end ',function(){ let PostDATa=查询字符串。解析(TMpdata);console.log('获得的邮政数据为==',PostDATa);fs.writeFile(' ./serverLog.txt ',GetNowDate()' n ' JSON。stringify(PostDATa)' n ',{flag: 'a'},function(err){ if(err){ console。日志(err);console.log('POST数据保存至原木出错');} });})} RES . write(' 404 ');RES . end();}else{ res.write(数据);RES . end();} })}).听(8000)python测试脚本
导入请求。get(' http://127。0 .0 .1:8000/?name=zhaohaage=18 method=GET)请求。开机自检(' http://127。0 .0 .0 .1:8000 ',数据={'name': '赵赵,' age': 18,' method ' : ' POST ' })(9501 . 163.com)
熟悉了开发回调机制,用原生开发写服务器程序是一件很有效率的事情,测试脚本还是要求好用!
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。