Nodejs 入门(二)
2016-05-07 本文已影响81人
babybus_superdo
1、如何创建一个server
var http = require('http');
http.createServer(function (request, response){
//发送 HTTP 头部
//HTTP 状态值 200:ok
//内容类型 text/plain
response.writeHead(200,{'Content-Type':'text/plain'});
//发送响应数据“hello world
response.end('hello worl2d\n');
}).listen(8888);
// 终端打印信息
console.log('Server running at http://127.0.0.1:8888/');
2.读取文件的两种方式
//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(err, data){
if(err) return console.error(err);
console.log(data.toString());
});
console.log("程序执行结束")
3.EventEmitter时间分发的使用
//引入 events 模块
var events = require("events")
//创建 eventEmitter对象
var eventEmitter = new events.EventEmitter();
// 创建事件处理程序
var connectHandler = function connected(){
console.log('连接成功。');
// 触发 data_received 事件
eventEmitter.emit('data_received');
}
// 绑定 connection 事件处理程序
eventEmitter.on('connection', connectHandler);
// 使用匿名函数绑定 data_received 事件
eventEmitter.on('data_received', function(){
console.log('数据接收成功。')
});
// 触发 connection 事件
eventEmitter.emit('connection');
console.log('程序执行完毕。');
//另一种绑定监听的方式 和 监听的解除
var events = require('events');
var eventEmitter = new events.EventEmitter();
// 监听 #1
var listener1 = function listener1(){
console.log('监听器 listener1 执行。');
}
// 监听 #2
var listener2 = function listener2(){
console.log('监听器 listener2 执行。');
}
// 绑定 connection 事件,处理函数为 listener1
eventEmitter.addListener('connection', listener1)
eventEmitter.on('connection', listener2)
var eventListeners = require('events').EventEmitter.listenerCount(eventEmitter,'connection');
console.log(eventListeners + " 个监听器监听连接事件。");
// 处理 connection 事件
eventEmitter.emit('connection');
// 移除监听绑定的listenrt1函数
eventEmitter.removeListener('connection', listener1);
console.log('listener1 不再受监听。');
// 触发连接事件
eventEmitter.emit('connection');
eventListeners = require('events').EventEmitter.listenerCount(eventEmitter,'connection');
console.log(eventListeners + " 个监听器监听连接事件。");
console.log("程序执行完毕。");
4.Buffer的使用
// 创建buff方式1:指定长度
var buf = new Buffer(10);
// 创建buff方式2: 给定数组
var buf = new Buffer([10, 20, 30 ,40 ,50]);
// 创建buff方式3: 字符串
// 支持的编码格式: ascii utf8 utf16le ucs2 base64 hex
var buf = new Buffer("www.runoob.com", "utf-8");
// 写入缓冲区操作
buf = new Buffer(256);
len = buf.write("www.runoob.com");
console.log("写入字节数:" + len);
// 读取缓冲区数据
buff = new Buffer(26);
for (var i = 0; i >26; i++) {
buff[i] = i + 97;
}
// 输出:abcdefghijklmnopqrstuvwxyz
console.log(buf.toString("ascii"));
// 输出abcde
console.log(buf.toString("ascii", 0, 5));
// 输出abcde
console.log(buf.toString("utf8", 0, 5));
// 默认使用uft8输出
console.log(buf.toString(undefined, 0, 5));
// Buffer转成json
var buf = new Buffer("www.runoob.com");
var json = buf.toJSON(buf);
console.log(json);
// 缓冲区合并
var buffer1 = new Buffer('菜鸟教程');
var buffer2 = new Buffer('www.runoob.com');
car buffer3 = Buffer.concat([buffer1,buffer2]);
console.log('buffer3 内容:' + buffer3.toString());
// 缓冲区比较
var buffer1 = new Buffer('ABC');
var buffer2 = new Buffer('ABCD');
var result = buffer1.compare(buffer2);
if(result < 0 ){
console.log(buffer1 + "在 " + buffer2 + "之前");
}else if(result == 0){
console.log(buffer2 + "与 " + buffer2 + "相同");
}else{
console.log(buffer1 + "在 " + buffer2 + "之后");
}
// 缓冲区拷贝
var buffer1 = new Buffer('ABC');
// 拷贝一个缓冲区
var buffer2 = new Buffer(3);
buffer1.copy(buffer2);
console.log("buffer2 content:" + buffer2.toString());
// 缓冲区裁剪
var buffer1 = new Buffer('runoob');
//剪切缓冲区
var buffer2 = buffer1.slice(0, 2);
console.log("buffer2 content:" + buffer2.toString());
// 缓冲区的长度
var buffer = new Buffer('www.runoob.com');
// 缓冲区的长度
console.log("buffer length:" + buffer.length);
5.Stream的使用
- 1.Stream的读取
// 1.Stream 会一个抽象接口,Node中有很多对象实现了这个接口。例如,对http服务器发起请求的request对象就是一个Stream,还有stdout(标准输出)
// 2.Stream 有四种流类型
// 1.Readable - 可读操作。
// 2.Writable - 可写操作
// 3.Duplex - 可读可写操作
// 4.Transform- 操作被写入数据,然后读出结果
// 所有的Stream对象都是EventEmitter的实例。常用的事件有
// data - 当有数据可读时触发
// end - 没有更多的数据可读时触发。
// error- 在接收和写入过程中发生错误时触发
// finish-所有数据已被写入到底层系统时触发
var fs = require('fs');
var data = '';
// 创建可读流
var readerStream = fs.createReadStream('input.txt');
// 设置编码为 utf8.
readerStream.setEncoding('UTF8');
//处理流时间 --> data , end, and error
readerStream.on('data', function(chunk){
data += chunk;
});
readerStream.on('end', function(){
console.log(data);
});
readerStream.on('error', function(err){
console.log(error.stack);
});
console.log("程序执行完毕。");
- 2.Stream的写入
// 写入流
var fs = require("fs");
var data = '菜鸟教程官网地址:www.runoob.com';
// 创建一个可以写入的流, 写入到文件 output.txt 中
var writerStream = fs.createWriteStream('output.txt');
// 使用utf8 编码写入数据
writerStream.write(data, 'UTF8');
// 标记文件末尾
writerStream.end();
// 处理流事件 --> data, end, and error
writerStream.on('finish', function(){
console.log("写入完成。");
});
writerStream.on('error', function(err){
console.log(err.stack);
});
console.log('程序执行完毕');
- 3.Stream内容拷贝
// 管道流
var fs = require('fs');
// 创建一个可读流
var readerStream = fs.createReadStream('input.txt');
// 创建一个可写流
var writerStream = fs.createWriteStream('output.txt');
// 管道读写操作
// 读取 input.txt 文本内容,并将内容写入到output.txt中
readerStream.pipe(writerStream);
console.log('程序执行完毕');
- 4.Stream的链式
var fs = require('fs');
var zlib = require('zlib');
// 解压 input.txt.gz 文件为 input.txt
fs.createReadStream('input.txt.gz').pipe(zlib.createGunzip()).pipe(fs.createWriteStream('input.txt'));
console.log('文件解压完成。');
6.方法传递
function execute(someFuction, value){
someFuction(value);
}
execute(function(word){console.log(word)}, "yangqingshan");
_本站文章为 宝宝巴士 SD.Team 原创, 转载务必在明显处注明:(作者官方网站: 宝宝巴士 ) _
_转载自【宝宝巴士SuperDo团队】原文链接: http://www.jianshu.com/p/08110a342281