Node.js学习笔记(二)

来源:互联网 发布:广告法 数据来源 编辑:程序博客网 时间:2024/05/16 04:54

fs模块

var fs=require('fs');

执行对文件系统的操作,与其他模块不同的是,他提供了同步和异步的方法,所有同步(或者阻塞)的操作文件系统的方法都会以’Sync’结尾。

同步读取:fs.readFileSync('path/to/file');

该方法将会返回一个包含文件完整内容的Buffer对象。Buffer对象是Node用来高效处理数据的方式,是一个包含0个或任意个字节的数组(和Array不同),无论数据是二进制文件还是ASCII或是其他格式,Buffer都可以通过调用toString()方法将其转换为字符串。

var str=buf.toString();
//同步读取text1中的字符串内容var fs=require('fs');var str=fs.readFileSync('text1.txt').toString();console.log(str);

若我们在该方法中增加一个参数utf-8,则读到的内容为String类型。

fs.readFileSync('path/to/file','utf-8')

同步操作的好处是代码简单,缺点是需要等待IO操作,在等待的时间内无法响应其他的事件,而异步读取不用等待IO操作。

异步读取:fs.readFile('path/to/file','utf-8',callback);

其中callback为标准的回调函数,第一个参数代表错误信息,第二个参数代表读到的结果。当文件正常读取时,err为null,data读到的数据因‘utf-8’为String类型,若无该参数,为Buffer类型。当文件发生错误时,err代表一个错误对象,data为undefined。

function(err,data){    if(err){        console.log(err);    }    else{        console.log(data);        }}

http模块

 var http=require('http');

应用程序不直接和http协议打交道,而是操作http模块提供的request和response对象。request对象封装了http请求,调用request对象就可以拿到所有http请求的信息。response对象封装了http响应,操作response对象的方法可以将http响应返回给浏览器。他们均为stream类型。
方法一:http.get();

http.get('url',callback);//用来发起简单的GET请求

第一个参数是想要GET的URL,第二个参数为回调函数。

function callback(response){...};

其中response为stream对象,所以有

response.on('data',function(chunk){    ...    }).on('error',function(){    ...    }.on('end',function(){    ...    })

其中,data事件表示流的数据已经可以读取了,end事件表示这个流已经到末尾了,error事件表示出错了。data事件可能有很多次,每次传递的chunk是流的一部分数据。

 var http=require('http'); http.get("http://www.sina.com/index.html",function(response){    response.setEncoding('utf8');//data事件中传递字符串    response.on('data',function(chunk){        var data="";        data+=chunk;    }).on('end',function(){        console.log(data);    }) })

方法二:http.createServer();

http.createServer(callback);//创建一个服务器用http协议进行通信,返回一个http服务器实例,接收一个回调函数,在服务器每一次进行连接的时候执行。
var http=require('http');var fs=require('fs');var server=http.createServer(function(require,response){    response.writeHead(200, { 'content-type': 'text/plain' });    var rs=fs.createReadStream('text3.txt','utf-8');    rs.pipe(response);})server.listen(8080);console.log('Server is running at http://127.0.0.1:8080/');

完成了nodeschool的learnyounode的所有练习,具体代码。

原创粉丝点击