Node.js学习笔记

128 阅读2分钟

1.required指令载入模块

var http=require("http");//将实例化的http赋值给http变量

2.创建服务器

http.createServer(一个function).listen(端口号);//创建服务器,绑定一个端口 function(request,response)//接收和响应数据; console.log(String类型的值);//终端打印 response.writeHead(状态码,{'Content-Type':内容类型});//发送HTTP头部 response.end();//发送响应数据 node命令实行代码:node server.js Server running at http://127.0.0.1:端口号

3.Node.js回调函数

回调时异步编程的直接体现,Node所有API都支持回调函数。举例:一边读取文件一边执行其他命令,文件读取完成后,将文件内容作为回调函数的参数返回,这样执行代码没有阻塞或等待文件I/O操作,提高了Node.js性能,可以处理大量并发请求。 function foo1(value,value,callback),回调函数一般作为函数的最后一个参数出现。 阻塞代码:变量.readFileSync('文件名'),读入文件数据 非阻塞代码:变量.readFile('input.txt',function(err,data){});//发生错误err输出错误信息,没发生错误跳过err输出,文件内容通过回调函数输出。 阻塞时按顺序执行的,必须读完文件再执行程序,非阻塞代码可以同时。

4.事件循环

1)事件循环

Node.js时单进程单线程应用程序,但由于提供的异步执行回调接口,可以处理高并发,所有事件机制是由设计模式中的观察者模式实现。单线程类似进入while(true)事件循环,直到没有事件观察者退出,每个异步事件生成一个事件观察者,有事件发生就调用该回调函数。

2)事件驱动程序

使用事件驱动模型,web server接收到请求就将其关闭,处理,去服务下一个web请求,请求完成放回处理队列,到达队头,结果返回给客户。web server一直接受请求不等待任何读写(非阻塞式IO/事件驱动IO),事件驱动模型会生成一个主循环来监听事件,检测到事件时触发回调函数。 Node.js由多个内置事件,可以通过引入events模块,实例化EventEmitter类来绑定和监听事件: var eventEmitter = new events.EventEmitter();//创建对象 eventEmitter.on('eventName',eventHandler);//绑定事件及处理程序,Handler是程序 eventEmitter.emit('eventName');//通过程序触发事件