码迷,mamicode.com
首页 > Web开发 > 详细

nodejs笔记

时间:2015-11-08 22:29:26      阅读:747      评论:0      收藏:0      [点我收藏+]

标签:

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();

  

nodejs笔记

标签:

原文地址:http://www.cnblogs.com/leyi/p/4948161.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!