nodeJs的基础知识(一)

浪尽此生 提交于 2019-12-05 13:54:35

nodeJS的REPL(read eval print loop 交互式解释器):表示一个电脑的环境,node自带了交互式解释器,可以执行以下任务:

1.读取:读取用户输入,解析输入了js数据结构并存储在内存中

2.执行:执行输入的数据结构

3.打印:输出结果

4.循环:循环1-3直到按下ctrl-c

(node中的解释器可以很好的调试js)


REPL的使用:

1.使用变量:变量声明var关键字,若没有var关键字会直接打印出来,使用var关键字的变量可以使用console.log()输出

2.多行表达式:node  REPL支持输入多行表达式(例如do  while循环)

3.下划线(_)变量:可使用下划线获取表达式的运算结果


nodeJS回调函数:nodeJS异步编程的直接结果就是回调,异步编程依托于回调来实现,但是不能说使用了回调就是异步了

var fs = require("fs");

fs.readFile('input.txt',function(err,data){

if(err){

  console.error(err);

}

console.log(data.toString());

})


nodeJS事件循环

1.node是单进程应用程序,但是通过事件和回调支持并发

2.node的每一个api都是异步的,并作为一个独立线程运行,使用异步函数调用并处理并发

3.node基本上所有的事件和机制都用设计模式中的观察者模式实现

4.node单线程类似进入一个while(true)的事件循环,直到没有事件观察者退出,每个异步事件都生成一个事件观察者

5.node使用事件驱动模型,当web server接收到请求,就把它关闭,然后去服务下一个web请求


node的内置事件,引入events模块,通过实例化eventEmitter类来绑定和监听事件:

var  event = requrie("event");

var eventEmitter = new event.eventEmitter()

eventEmitter.on("事件名",function);

eventEmitter.emit("事件名");


EventEmitter类:触发事件和事件监听功能的封装

方法:addListener(event,listener)

    on(event,listener)

    once(event,listener)

    removeListener(event,listener)

    removeAllListener(event,listener)

    setMaxListenner(event,listener)

    listeners(event)

    emit(event,[arg,],[arg2,],...]

    ListenerCount(emitter,event)

继承EventEmitter:大多数不会直接使用该类,而是在对象中继承它


nodeJS的Buffer(缓存区):该类用来创建一个专门存放二进制数据的缓存区(因为js没有二进制数据类型)

1.创建Buffer类:方法一:var buf = new Buffer(10)//创建长度为10字节的Buffer实例

方法二:var buf = new Buffer([10,20,30,40,50])//创建Buffer实例

方法三:var buf = new Buffer("www.run.com")//通过字符串来创建实例

2.写入缓存区:buf.write(string[,offset[,length]][,encoding]);//参数值分别为写入缓存区的字符串,缓存区开始写入的索引值,写入字节数默认为buffer.length,      编码方式默认utf8

3.从缓存区读取数据:buf.write([encoding][,start,[,end]]);//参数值分别为 编码方式,指定开始读取的索引,结束位置(默认缓冲区末尾)

4.将Buffer转换为JSon对象:buf.toJSON()

5.缓存区合并:Buffer.concat(list[,totallength])//参数的值分别为:用于合并的Buffer对象数组列表,指定合并后Buffer对象的总长

6.缓存区比较:buf.compare(otherBuffer)

7.拷贝缓存区:buf.copy(targetBuffer[,targetstart[,sourcestart[,sourceend]]])

8.缓存区裁剪:buf.slice([start[,end]]);//返回一个新的缓存区









标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!