Node.js的基础知识(一)
一、Buffer类
1.创建缓冲区的三种方式
var buffer = new Buffer(10);
console.log(buffer); var buffer2 = new Buffer([10,20,30]);
console.log(buffer2); var buffer3 = new Buffer('hello henanqingyun','utf-8');
console.log(buffer3);
2.缓冲区切片
console.log(buffer3.toString());
buffer2.fill();//缓冲区清零
buffer2 = buffer3.slice(3,5);
console.log(buffer2.toString());
console.log(buffer2.toJSON());
3.复制缓冲区
var buffer4 = new Buffer(30);
buffer4.fill(); //这个是对buffer4的清零
buffer3.copy(buffer4);
console.log(buffer4.toString());
4.stringDecoder其作用相当于toString()方法
var stringDecoder = require('string_decoder').StringDecoder;
var decoder = new stringDecoder();
console.log(decoder.write(buffer3));
5.缓冲区的拼接concat
var buffer = new Buffer('hqingyu ');
var buffer2 = new Buffer('node.js');
console.log(Buffer.concat([buffer,buffer2]).toString());
二、流的概念 Stream
1.可读流,可以读取相应的文档,并显示出来
var fs = require('fs');
var data = '';
//创建一个读取流,读取的目标是.txt
var readStream = fs.createReadStream('test.txt');
//添加data事件,会反复的读取,并将读取到的chunk参数赋值给data,直到全部读完
readStream.on('data',function(chunk){
data += chunk;
}); readStream.on('end',function(){
console.log(data);
});
2.可写流可以将数据data写入到指定的txt文档中,例子如下:
var fs = require('fs'); var data = '这是一段用writeable流写入的数据'; var writeStream = fs.createWriteStream('test.txt'); writeStream.write(data); writeStream.end(); writeStream.on('finish',function(){
console.log('写入完成');
}); writeStream.on('error',function(){
console.log(error.stack);
}); console.log('程序执行完毕');
3.管道流,优点是将前面两种方法结合,读的同时,再写。像是在一个管道中
var fs = require('fs'); var readStream = fs.createReadStream('test.txt'); var writeStrame = fs.createWriteStream('destination.txt'); readStream.pipe(writeStrame); console.log('program is end');
三、事件监听
1.基于http的事件监听(最基本的响应网页请求)
var http = require('http');
var server = http.createServer();
server.on('request',function(req,res){
res.end('hello henann');
}).listen(8000);
2. 手动触发监听事件
var events = require('events');
var eventEmitter = new events.EventEmitter();
eventEmitter.on('connection',function(){
console.log('链接可以');
eventEmitter.emit('data_recived');
});
eventEmitter.on('data_recived',function(){
console.log('数据接收');
});
eventEmitter.emit('connection');
console.log('程序完成');
3.addListeners这个可以设计自定义的事件监听;emitter.removeListener();移除一个事件;emitter.removeAllListeners();移除多个事件emitter.listenerCount();获得事件的次数;
例子(
*定义一个自定义的类,账户 account
* 初始金额 =0
* 两个方法,存取钱
* 三个外部函数:通知存款余额
* 当存款小于0
* 当存款大于1000时触发
)如下:
var events = require('events');
function MyAccount(){
this.money = 0;
this.drawmoney = function (account) {
this.money -= account;
this.emit('change');
}
this.savemoney = function (account) {
this.money += account;
this.emit('change');
}
} MyAccount.prototype = new events.EventEmitter();
function message(){
console.log('账户还剩',this.money);
}
function less(){
if(this.money<0){
console.log('请存钱!');
}
}
function more(account,goal){
if (account.money>goal){
console.log('钱真多');
}
} var account = new MyAccount();
/*
* 证明继承成功
* */
//console.log(account.constructor.prototype);
account.on('change',message);
account.on('change',less);
account.on('change',function(){
more(this,1000);
});
account.savemoney(200);
account.savemoney(500);
account.savemoney(301);
account.drawmoney(1200);
Node.js的基础知识(一)的更多相关文章
- 001/Node.js(Mooc)--基础知识
一.Node.js基础知识 node.js用C++语言编写. 简单的说 Node.js 就是运行在服务端的 JavaScript. Node.js 是一个基于Chrome JavaScript 运行时 ...
- node.js的基础知识
第一部分知识: .命令行窗口(小黑屏).CMD窗口.终端.shell - 开始菜单 --> 运行 --> CMD --> 回车 - 常用的指令: dir 列出当前目录下的所有文件 c ...
- css+js+html基础知识总结
css+js+html基础知识总结 一.CSS相关 1.css的盒子模型:IE盒子模型.标准W3C盒子模型: 2.CSS优先级机制: 选择器的优先权:!important>style(内联样式) ...
- node.js学习(二)--Node.js控制台(REPL)&&Node.js的基础和语法
1.1.2 Node.js控制台(REPL) Node.js也有自己的虚拟的运行环境:REPL. 我们可以使用它来执行任何的Node.js或者javascript代码.还可以引入模块和使用文件系统. ...
- Node.js系列基础学习----安装,实现Hello World, REPL
Node.js基础学习 简介 简单的说 Node.js 就是运行在服务端的 JavaScript.Node.js 是一个基于Chrome JavaScript 运行时建立的一个平台.Node.js是一 ...
- Node.js npm基础安装配置&创建第一个VUE项目
使用之前,我们先来明白这几个东西是用来干什么的. node.js: 一种javascript的运行环境,能够使得javascript脱离浏览器运行.Node.js的出现,使得前后端使用同一种语言,统一 ...
- node.js零基础详细教程(7.5):mongo可视化工具webstorm插件、nodejs自动重启模块Node Supervisor(修改nodejs后不用再手动命令行启动服务了)
第七章 建议学习时间4小时 课程共10章 学习方式:详细阅读,并手动实现相关代码 学习目标:此教程将教会大家 安装Node.搭建服务器.express.mysql.mongodb.编写后台业务逻辑. ...
- Node.js系列基础学习-----回调函数,异步
Node.js基础学习 Node.js回调函数 Node.js异步编程的直接体现就是回调,异步编程依托回调来实现,但不是异步.回调函数在完成任务后就会被调用,Node有很多的回调函数,其所有的API都 ...
- node.js入门基础
内容: 1.node.js介绍 2.node.js内置常用模块 3.node.js数据交互 一.node.js介绍 (1)node.js特点 与其他语言相比,有以下优点: 对象.语法和JavaScri ...
随机推荐
- [Elixir006]CSV(Comma-separated values)处理
1. CSV文件格式是什么 CSV有时也称为字符分隔值,因为分隔字符也可以不是逗号),其文件以纯文本形式存储表格数据(数字和文本).纯文本意味着该文件是一个字符序列,不含必须像二进制数字那样被解读的数 ...
- C#Encoding
1.Encoding (1).如何生成一个Encoding即一种编码 Encoding位于System.Text命名空间下,是一个抽象类,它的派生类如下图: 要实例化一个Encoding一共有以下两种 ...
- ASP.net/C#中如何调用动态链接库DLL
动态链接库(也称为DLL,即为“Dynamic Link Library”的缩写)是Microsoft Windows最重要的组成要素之一,打开Windows系统文件夹,你会发现文件夹中有很多DLL文 ...
- JavaWeb -cookie&session&application
cookie&session&application总结 Cookie[key-value](不是内置对象必须new): 1. Cookie 是由服务端生成的,在发送给客户端保存 2. ...
- Spring 中aop切面注解实现
spring中aop的注解实现方式简单实例 上篇中我们讲到spring的xml实现,这里我们讲讲使用注解如何实现aop呢.前面已经讲过aop的简单理解了,这里就不在赘述了. 注解方式实现aop我们 ...
- NOI2019省选模拟赛 第三场
传送门 明明没参加过却因为点进去结果狂掉\(rating\)-- \(A\) 集合 如果我们记 \[f_k=\sum_{i=1}^nT^i{n-i\choose k}\] 那么答案显然就是\(f_{k ...
- 深入理解Scala的隐式转换
摘要: 通过隐式转换,程序员可以在编写Scala程序时故意漏掉一些信息,让编译器去尝试在编译期间自动推导出这些信息来,这种特性可以极大的减少代码量,忽略那些冗长,过于细节的代码. 使用方式: 1. ...
- 私有成员的设置和访问方式——setter和getter
在定义类时,为了保证类中成员数据安全性及的封装性,防止成员数据值被任意修改,通常将类中成员属性用private进行修饰. 被private修改的成员属性,只能在类中访问,跳出本类后,就无法直接访问. ...
- [转] Foobar2000 DSP音效外挂元件-Part4
[转] Foobar2000 DSP音效外挂元件-Part4 在第1部分的文章里主要介绍了foobar2000预设的DSP音效调整,这些则示要介绍几个比较会用到的DSP外挂元件,在foobar2000 ...
- 挂载U盘到linux中
一. 挂载U盘到linux中,也可以是虚拟机中的linux 1. 首先插上U盘 2. fdisk -l 找到自己的U盘设备,并且记住文件系统类型,主要看空间大小来判断,比如是/dev/sdc ...