node入门学习(一)
2024-08-28 23:16:04
一、安装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对象中的方法。
最新文章
- angularjs provider 供应商服务
- shell在一个大文件找出想要的一段字符串操作技巧
- UITableViewCell里面separator的设置
- ramnit病毒
- CSS3学习
- 【HTTP劫持和DNS劫持】腾讯的实际业务分析
- 设置session失效时间
- Android通过webservice对sqlserver数据库进行操作
- 103. Binary Tree Zigzag Level Order Traversal
- Setup FTP Server On CentOS, RHEL, Scientific Linux 6.5/6.4/6.3
- 第八章I/O
- leetcode_question_62 Unique Paths
- java在CMD环境下执行需注意字符集设定
- Linux下如何彻底删除MySQL
- 阿里舆情︱舆情热词分析架构简述(Demo学习)
- innodb二阶段日志提交机制和组提交解析
- react组件中的constructor和super小知识
- List 比较大小
- linux每日命令(16):head命令
- ZOJ 3963 Heap Partition(multiset + stl自带二分 + 贪心)题解
热门文章
- WPF 扩大,回弹效果
- 9.26 开课第二十三天 (JS表单验证)
- 【LG3247】[HNOI2016]最小公倍数
- 关于js中直接获取后台的值,直接弹窗获取到的值
- 洛咕 P3964 [TJOI2013]松鼠聚会
- SQL 上线平台(内含全部完整资料)
- Appium+python的单元测试框架unittest(1)(转)
- 【原创】标准HTTP请求工具类
- git pull fatal: refusing to merge unrelated histories
- Unity消息简易框架 Advanced C# messenger