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的所有练习,具体代码。
- Node.js学习笔记(二)
- Node.js学习笔记(二)—— 模块化
- node.js框架StrongLoop学习笔记(二)
- Node.js学习笔记(二)入门指南
- Node.js学习笔记之二:回调
- node.js学习(二)
- node.js学习(二、node.js安装)
- Node.js学习笔记(一)-认识Node.js
- Node学习笔记(二)
- Node.JS学习笔记
- node.js学习笔记
- Node.js 学习笔记
- node.js学习笔记
- node.js 学习笔记
- Node.js 学习笔记
- Node js 学习笔记
- Node.js学习笔记
- node.js学习笔记
- leetcode-month2-week8
- Java不定参数Object… obj 和 Object[] 的区别
- 作业一 顺序表
- 更改Windows鼠标滑轮滚动方向
- 了解Python 必备标准库
- Node.js学习笔记(二)
- JavaScript 闭包
- Java基础总结
- JAAS Authorization文档
- MyBatis基础配置
- 微信小程序开发-从起步到放弃
- Django Learn on windows01
- Jsp中EL表达式的使用
- Linux常用命令大全