标签:
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