處理非阻塞I/O /* *回調函數的方法 異步 */ /* function f(cb){ fs.readFile('./4',(err,data)=>{ cb(data.toString()); //回調 }) } f(function(data){ console.log(data); }); */ function f(){ fs.readFile('./4',(err,data)=>{ myEvent.emit('talk',data.toString());//事件進行綁定 }) } //執行 ----發布者 f(); myEvent.on('talk',(data)=>{ console.log(data); //data == data.toString() }) 三URL模塊 和queryString模塊; var queryString = require('quirestring'); //查詢字符串, //queryString.parse(string)將字符串解析成對象; let str = 'name:idhorse?age:18?gender:male'; let obj = queryString.parse(str,'?',':') //默認情況下 第二個參數是&,第三個是= //解析結果 {name:'idhorse',age:'18',gender:'male'}; //queryString.stringify()將一個對象解析成一個字符串 let str2 = queryString.stringify(obj,'&','='); //'name=idhorse&age=18&gender=male'
querystring模塊
querystring.eacape( "" );對給定的 str 進行 URL 編碼
querystring.uneacape( "" );對給定的 str 進行解碼
querystring.stringify() 方法 將一個對象轉成字符串
querystring.parse() 方法 將一個字符串轉成對象
let a = encodeURIComponent(str)//進行編碼加密處理 let b = decodeURIComponent(a);//進行解碼處理 解析url var http = require('http'), urlApi = require('url'), server; server = http.createSever((request,response)=>{ response.writeHead(200,{'Content-type':'text/plain;charset=UTF-8'}); if(request.url!='/favicon.ico'){ let url = urlApi.parse(request.url,true); cosoleo.log(url); if(url.pathname=='/a.html'){ res.end('這里請求的是a.html,請求的參數是') } } response.end('收到請求!'); }).listen(3000,()=>{ console.log('start') }) //==== 解析url var http = require('http'), server; sever = http.createServer(function(request,response){ response.writeHead(200,{'Content-type':'text/plain;charset=UTF-8'}); let url = request.url; if(url!= '/favicon.ico'){ let arr1 = url.split('?'); let arr2 = arr1[1].split('&'); let Obj = {}; arr2.map(function(data,i){ Obj[data.split('=')[0]]=data.split('=')[1]; }) if(arr1[0]=='/a.html'){ response.end('這里請求的是a.html,請求的參數是'+JSON.stringify(Obj)); } } response.end('收到請求!'); }).listen(3000); //======= 處理post請求 var http = require('http'); var server = http.createServer((req,res)=>{ res.writeHead(200,{'Content-type':'text/plain;charset=UTF-8'}); console.log('req,url'); let str = ''; res.on(data,(data)=>{ 'use strict'; str+= data; }); res.on('end',()=>{ console.log(str); }); res.write('收到請求!'); res.end(); }).listen(3000); // 項目文件上傳 formidable let http = require('http'); let urlLib = require('url'); let fs = require('fs'); let pathLib = require('path'); let formidable = reqiure('formidable'); let server = http.createServer((req,res)=>{ let urlObj = urlLib.parse(req.url,true); if(urlObj.pathname==='/'){ res.readFile('./template/form.html',(err,data)=>{ res.write(data); res.end(); }) } if(urlObj==='/upload'){ let form = formidable.IncomingForm(); form.encoding = 'utf-8'; form.upLoadDir = _dirname+'/folder'; form.parse(req,function(err,fields,files){ if(err)throw err; console.log(files); let ext = pathLib.exname(files.wangpengde.name); let oldPath = files.wangpengde.path; let newPath = pathLib.join(_dirname,'/folder/')+files.wangpengde.name; fs.rename(oldPath,newPath,(err)=>{ if(err)throw err; console.log(ext); res.writeHead(200,{'content-type':'text/plain;charset=UTF-8'}); res.write('成功!'); res.end(); }) }) } }) server.listen(3000,()=>{ console.log('start'); }) 三. http模塊 const http = require('http'); const cheerio = require('cheerio'); http.get('http://www.easyvoa.com',function(res){ if(res.statusCode ==200){ let str = ''; res.on('data',(data)=>{ str += data; }); res.on('end',()=>{ const $ = cheerio.load(str); const titles = $('.title_a'); for(let i = 0; i<titles.length ;i++){ console.log(titles.eq(i).text()); } }) } })
