一、安装node.js

方式很多npm,git等,新手建议从官网上直接去下载node的安装包。一键安装.

二、创建一个web服务器。

const http = require('http');
http.createServer(function(request,response){
response.writeHead(200,{'Content-Type':'text/plain'});
response.end('Hello World');
}).listen(8888);
console.log('server start http://127.0.0.1:8888')

三、读取文件的方式(同步,异步)

1.同步

var fs = require('fs');
var data = fs.readFileSync('input.txt');
console.log(data.toString());
console.log('同步执行');

2.异步

var fs = require('fs');
fs.readFile('input.txt',function(error,data){
if(error){
    console.log(error);
  };
console.log(data.toString());
});
console.log('异步执行')

三、事件循环

var events = require('events');

var eventEmitter = new  events.EventEmitter();//创建一个事件对象

function handEvent(){

    eventEmitter.emit('data_connection'); //调用 data_connection事件
};
function data_connection(){
console.log('数据已经连接');
};
eventEmitter.on('connection',handEvent);
eventEmitter.on('data_connection',data_connection); eventEmitter.emit('connection'); //调用,on绑定的connection事件 console.log('程序执行完毕');
/*
* 事件 执行的过程.
* 1. require('events') events 模块
* 2.new events.EventEmitter(); 创建以事件模块
* 3. eventEmitter.on(); 绑定事件
* 4.eventEmitter.emit(); 触发绑定事件的函数
*
*/

四、数据缓冲区

1.向缓存区写入数据

var buf = new Buffer(26);  // buf 的字节数

var l  = buf.write('start nodejs'); // 向node Buffer缓冲区写入数据.并返回长度
console.log('字节长度为:' + l); //

2.读取缓冲区的内容

var buf = new Buffer(26);  // buf 的字节数

for(var i = 0; i < 26; i++){
buf[i] = i + 97;
}; var str = buf.toString('utf8',0,8); //buf.toString(encoding,start,end);
//编码格式, 开始位置, 结束位置
console.log(str);

3.Buffer 转为JSON对象

var buf = new Buffer('hello world');
var json = buf.toJSON(buf); console.log(json);
//{ type: 'Buffer',data: [ 104, 101, 108, 108, 111, 32, 119, 111, 114, 108, 100 ] }

4.concat();合并几个Buffer对象

var buf1 = new Buffer('hello');
var buf2 = new Buffer(' ');
var buf3 = new Buffer('world');
var count = Buffer.concat([buf1,buf2,buf3]);
//Buffer.concat([]); concat(); 中的参数必须是对象
console.log(count.toString());// hello world

5.缓冲区的比较buf1.compare();

var buf1 = new Buffer('A');
var buf2 = new Buffer('B');
var result = buf1.compare(buf2);
console.log(result); //-1; /*
1. result < 0; 说明 buf1 在 buf2之前
2. result == 0; 说明 buf1 和buf2相等
3.result > 0 ; 说明 buf2在 buf2之前 */

6.拷贝缓冲区 buf.copy();

var buf1 = new Buffer('hello');
var buf2 = new Buffer('worl');
buf1.copy(buf2);
console.log(buf2.toString());//hello //buf1.copy(target,start,end);
//target 拷贝的对象,start 起始位置, end 结束位置

7.缓冲区的剪切 buf.slice();

var buf1 = new Buffer('hello');
var end = buf1.slice(0,2); //he
console.log(end.toString()); //he //buf1.slice(start,end); start.开始的位置,结束的位置

8.缓冲区的长度 buf.length

var buf1 = new Buffer('hello');
var l = buf1.length;
console.log(l); //5;缓冲区 长度

五、stream

1.从流中读取数据 createReadStream();

var fs = require('fs');
var txt = ''; //用于储存 stream.txt中的内容 //1.创建可读的流
var readStream = fs.createReadStream('stream.txt'); //2.设置编码格式
readStream.setEncoding('UTF8'); //3.事件流的处理 data,end,error //a. data 事件
readStream.on('data',function(chunk){
txt += chunk;
}); // b end 事件
readStream.on('end',function(){
console.log(txt);
}); //c错误情况 readStream.on('error',function(error){
console.log(error.stack)
}); console.log('执行完毕')

2.写入流 createWriteStream();

var fs = require('fs');
var data = '这是一个写入的stream流'; var writeStream = fs.createWriteStream('output.txt'); //写入数据 并设置格式 writeStream.write(data,'UTF8');
writeStream.end(); //事件处理流 data end error writeStream.on('finish',function(data){
console.log('写入完成')
}); console.log('程序执行完毕');

3.管道流 pipe 从一个文件读取东西,放到另外一个文件中

var fs = require('fs');
var readStream = fs.createReadStream('output.txt');
var writeStream = fs.createWriteStream('null.txt'); //把output.txt 中的内容 写 到null.txt中
readStream.pipe(writeStream); console.log('写入完毕');

4.链式流 通过pipe来压缩,解压文件

a.压缩文件

var fs = require("fs");
var zlib = require('zlib'); // 压缩 input.txt 文件为 input.txt.gz
fs.createReadStream('input.txt')
.pipe(zlib.createGzip())
.pipe(fs.createWriteStream('input.txt.gz')); console.log("文件压缩完成。");

b.解压文件

var fs = require('fs');
var zlib = require('zlib');
fs.createReadStream('input.txt.gz')
.pipe(zlib.createGunzip())
.pipe(fs.createWriteStream('newInput.txt')); console.log('解压完毕')

六、入门学习(一)完毕。

主要知识为 1.创建web服务器 2.同步,异步,读取文件的方法。

3.事件绑定机制 4.Buffer缓冲区对象 5.stream对象中的方法。

最新文章

  1. angularjs provider 供应商服务
  2. shell在一个大文件找出想要的一段字符串操作技巧
  3. UITableViewCell里面separator的设置
  4. ramnit病毒
  5. CSS3学习
  6. 【HTTP劫持和DNS劫持】腾讯的实际业务分析
  7. 设置session失效时间
  8. Android通过webservice对sqlserver数据库进行操作
  9. 103. Binary Tree Zigzag Level Order Traversal
  10. Setup FTP Server On CentOS, RHEL, Scientific Linux 6.5/6.4/6.3
  11. 第八章I/O
  12. leetcode_question_62 Unique Paths
  13. java在CMD环境下执行需注意字符集设定
  14. Linux下如何彻底删除MySQL
  15. 阿里舆情︱舆情热词分析架构简述(Demo学习)
  16. innodb二阶段日志提交机制和组提交解析
  17. react组件中的constructor和super小知识
  18. List 比较大小
  19. linux每日命令(16):head命令
  20. ZOJ 3963 Heap Partition(multiset + stl自带二分 + 贪心)题解

热门文章

  1. WPF 扩大,回弹效果
  2. 9.26 开课第二十三天 (JS表单验证)
  3. 【LG3247】[HNOI2016]最小公倍数
  4. 关于js中直接获取后台的值,直接弹窗获取到的值
  5. 洛咕 P3964 [TJOI2013]松鼠聚会
  6. SQL 上线平台(内含全部完整资料)
  7. Appium+python的单元测试框架unittest(1)(转)
  8. 【原创】标准HTTP请求工具类
  9. git pull fatal: refusing to merge unrelated histories
  10. Unity消息简易框架 Advanced C# messenger