一直想对NodeJS做个归纳总结,把里面的常用的知识点进行一个阐述,下面是我对NodeJS中涉及常用的东西做的一个分享。
NodeJS 归纳篇(一)数据请求
- 模块、自定义
- 框架express\koa\es6
- 应用
优势:
- 性能
与PHP比较: - PHP 200台 400万
- nodeJS 3台 6W
- 跟前台JS配合方便
fs文件系统
方法
- fs.readFile()//readFile(文件名,回调函数) 异步操作
- fs.writeFile()//writeFile(文件名,内容,回调函数)
eg
const http = require('http'); const fs = require('fs'); var server = http.createServer(function(req,res){ var file_name = './www'+req.url; fs.readFile(file_name,function(err,data){ if(err){ res.write('404'); }else { res.write(data); } res.end(); //什么时候读取完文件,什么时候end }); }); server.listen(8080);
接收前台数据请求
前台:请求方法
- 表单
- ajax
- jsonp
- webSocket
后台:无论前台什么请求方式,一样的处理方式。
前台<—http—>后台
对于后台,接收到的都是http 请求。
http请求方式:
- GET 数据在Url
- POST 数据不在Url
####处理GET方式
const http = require('http'); var server = http.createServer(function(req,res){ console.log(req.url) var GET= {}; if(req.url.indexOf('?')!=-1){ var arr = req.url.split('?'); var url = arr[0]; var arr2 = arr[1].split('&'); for(var i in arr2){ var arr3 = arr2[i].split('='); GET[arr3[0]] = arr3[1]; } }else { var url = req.url; } console.log(GET); }); server.listen(8080);
改进:QueryString 模块
const querystring = require('querystring'); var json = querystring.parse("user=blue&pass=12345&age=19"); console.log(json);
const http = require('http'); const querystring = require('querystring'); var server = http.createServer(function(req,res){ var GET= {}; if(req.url.indexOf('?')!=-1){ var arr = req.url.split('?'); var url = arr[0]; GET = querystring.parse(arr[1]); }else { var url = req.url; } console.log(GET); res.write('aaa'); res.end(); }); server.listen(8080);
改进:url 模块
const http = require('http'); const urlLib = require('url'); var server = http.createServer(function(req,res){ var GET= {}; GET = urlLib.parse(req.url,true); console.log(GET.pathname,GET.query); res.write('aaa'); res.end(); }); server.listen(8080);
####处理POST方式
- POST数据很大,需要分段传输
const http = require('http'); const querystring = require('querystring'); var server = http.createServer(function(req,res){ var str = '';//接收数据 //data :有一段数据到达就会发生一次 req.on('data',function(data){ str+=data; }); //end:数据全部到达才发生,只发生一次 req.on('end',function(){ var post = querystring.parse(str); console.log(post); }); }); server.listen(8080);