标签:
URL 模块:使用 require(‘url‘) 来调用该模块 url.parse(urlStr, [parseQueryString], [slashesDenoteHost]) 输入 URL 字符串,返回一个对象。 > url.parse(‘http://user:pass@host.com:8080/p/a/t/h?query=string#hash‘) { protocol: ‘http:‘, slashes: true, auth: ‘user:pass‘, host: ‘host.com:8080‘, port: ‘8080‘, hostname: ‘host.com‘, hash: ‘#hash‘, search: ‘?query=string‘, query: ‘query=string‘, pathname: ‘/p/a/t/h‘, path: ‘/p/a/t/h?query=string‘, href: ‘http://user:pass@host.com:8080/p/a/t/h?query=string#hash‘ } url.format(urlObj) url.resolve(from, to) url.resolve(‘/one/two/three‘, ‘four‘) // ‘/one/two/four‘ url.resolve(‘http://example.com/‘, ‘/one‘) // ‘http://example.com/one‘ url.resolve(‘http://example.com/one‘, ‘/two‘) // ‘http://example.com/two‘ querystring 模块 querystring.stringify(obj[, sep][, eq][, options])//把js对象序列化 第二个参数是替换分隔符,第三个参数是替换等号 querystring.stringify({ foo: ‘bar‘, baz: [‘qux‘, ‘quux‘], corge: ‘‘ }) // returns ‘foo=bar&baz=qux&baz=quux&corge=‘ // Suppose gbkEncodeURIComponent function already exists, // it can encode string with `gbk` encoding querystring.stringify({ w: ‘中文‘, foo: ‘bar‘ }, null, null, { encodeURIComponent: gbkEncodeURIComponent }) // returns ‘w=%D6%D0%CE%C4&foo=bar‘ querystring.parse(str[, sep][, eq][, options]) //反序列化, //将一个 query string 反序列化为一个对象。可以选择是否覆盖默认的分割符(‘&‘)和分配符(‘=‘)。 querystring.parse(‘foo=bar&baz=qux&baz=quux&corge‘) // returns { foo: ‘bar‘, baz: [‘qux‘, ‘quux‘], corge: ‘‘ } // Suppose gbkDecodeURIComponent function already exists, // it can decode `gbk` encoding string querystring.parse(‘w=%D6%D0%CE%C4&foo=bar‘, null, null, { decodeURIComponent: gbkDecodeURIComponent }) // returns { w: ‘中文‘, foo: ‘bar‘ } querystring.escape()对字符串进行编码转义 querystring.unescape()对转义编码进行解码 > querystring.escape(‘张‘); ‘%E5%BC%A0‘ > querystring.unescape(‘%E5%BC%A0‘); ‘张‘ 函数传递: function aa(sth,sth2){ console.info(sth+‘---‘+sth2) }; function bb(fn,sth,sth2,sth3){ if(sth3){ fn(sth,sth2) }else { console.log(6666); } } bb(aa,‘2222‘,‘3333‘,false) //直接传递匿名函数 bb(function(sth,sth2){ console.info(sth+‘---‘+sth2) },‘vvvv‘,‘bbbbb‘,true) 小爬虫: var http=require(‘http‘); var url=‘http://www.baidu.com‘; http.get(url,function(res){ var html=‘‘; res.on(‘data‘,function(data){ html+=data; }) res.on("end",function(){ console.info(html); }) }).on(‘error‘,function(){ console.info(‘出错了‘); }); 事件机制 Event模块(events.EventEmitter)的核心是事件发射与事件监听器。具有addListener/on,once, removeListener,removeAllListeners,emit等基本的事件监听模式的方法实现。它与前端DOM树上的事件并不相 同,因为它不存在冒泡,逐层捕获等属于DOM的事件行为,也没有preventDefault()、stopPropagation()、 stopImmediatePropagation() 等处理事件传递的方法。: 如果对一个事件添加了超过10个侦听器,将会得到一条警告 emitter.setMaxListeners(0); //去掉限制,emitter.setMaxListeners的作用是给EventEmitter设置最大监听数 /* 调用events模块,获取events.EventEmitter对象 */ var EventEmitter=require(‘events‘).EventEmitter; var lisev=new EventEmitter(); /* EventEmitter.on(event, listener) 为事件注册一个监听 参数1:event 字符串,事件名 参数2:回调函数 */ lisev.on(‘事件名‘,function(ag1,ag2){ //回调函数 }) //监听事件 lisev.emit(‘注册一个事件,发射的意思‘,ag1,ag2); //注册事件 lisev.removeListener(event, listener) //移除某事件监听,listener参数不能为匿名的函数,否则移除不了 指定事件的监听函数。 lisev.removeAllListeners(event)//移除某某事件的所有的监听,不传参数的话就是移除全部事件的所有监听函 数 var listenerEventsArr = lisev.listeners(event);//返回值接收到event所有注册监听的集合. console.log(listenerEventsArr.length) //get/request请求 var http=require(‘http‘); var querystring=require(‘querystring‘); var postData=querystring.stringify({ ‘content‘:‘提交成功了没‘, ‘mid‘:8837 }); var argAptions={ ‘hostname‘:‘www.imooc.com‘, ‘port‘:‘80‘, ‘path‘:‘course/docomment?12=12‘, ‘method‘:‘post‘, ‘headers‘:{ ‘Accept‘:‘application/json, text/javascript, */*; q=0.01‘, ‘Accept-Encoding‘:‘gzip, deflate‘, ‘Accept-Language‘:‘zh-CN,zh;q=0.8‘, ‘Cache-Control‘:‘no-cache‘, ‘Connection‘:‘keep-alive‘, ‘Content-Length‘:postData.length, ‘Content-Type‘:‘application/x-www-form-urlencoded; charset=UTF-8‘, ‘Cookie‘:‘imooc_uuid=34445473-1548-4aef-89e1-1079139b1e38; loginstate=1; apsid=FlMWQyMDM4NmM5ZGM2MmVlOGYwOTZiMDlhM2M5ZDQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMTI5OTMzMgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA2MTkwMjUyODNAcXEuY29tAA AAAAAAAAAAAAAAAAAAADM0NWUwYjlkYzQ2OGI2YzcxNDkxYzhiMTk0NzEzYzM2Jbw9ViW8PVY%3DOG; last_login_username=619025283%40qq.com; PHPSESSID=hqen6530v47dgttfiolkfu8nu3; Hm_lvt_f0cfcccd7b1393990c78efdeebff3968=1446886385,1446958681,1446982322; Hm_lpvt_f0cfcccd7b1393990c78efdeebff3968=1446986445; cvde=563f329a87986-26‘, ‘Host‘:‘www.imooc.com‘, ‘Origin‘:‘http://www.imooc.com‘, ‘Pragma‘:‘no-cache‘, ‘Referer‘:‘http://www.imooc.com/video/8837‘, ‘User-Agent‘:‘Mozilla/5.0 (Windows NT 6.3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2431.0 Safari/537.36‘, ‘X-Requested-With‘:‘XMLHttpRequest‘ } } var request=http.request(argAptions,function(response){ console.log(‘状态信息:‘+response.statusCode); console.log(‘返回头信息:‘+response.headers); response.on(‘data‘,function(chunk){ console.log(Buffer.isBuffer(chunk)); console.log(typeof(chunk)); console.info(‘chunk:‘+chunk); }); response.on(‘end‘,function(){ console.log(‘评论完毕‘); }); }); request.on(‘error‘,function(e){ console.log(e.message); }); request.write(postData); request.end();
标签:
原文地址:http://www.cnblogs.com/leyi/p/4948161.html