首页 > 代码库 > 《node.js实战》第一章读后感

《node.js实战》第一章读后感

第一章:欢迎进入node.js世界

开始简单介绍了nodejs和前端的js一样,都使用了事件触发来完成异步请求的。

然后又简单介绍了nodejs的事件轮询机制

然后用NGINX和Apache的对比来说明异步I/O的事件轮询比有阻塞的多线程的处理能力要强

最后使用node的http模块来搭起了一个简单的服务器和一个流数据的服务器

 

Got It

1.node是异步单线程非阻塞I/O的JavaScript服务器开发平台。

异步:就像前端ajax一样,等触发了onreadystatechange事件再对数据进行处理,只不过nodejs有很多类似的方法

非阻塞I/O:指的是在接收到请求时不用等请求完成在执行,而是去接收其它请求,异步只是实现非阻塞的一种方式(I/O指的是输入输出的意思)

2.nodejs的优点

(1)开发人员用一种JavaScript语言就能开发整个网站(全栈工程师)

(2)JSON是非常流行的数据交换格式,它还是JavaScript原生的

(3)NoSQL数据库中用的就是JavaScript

(4)JavaScript是编译目标语言,很多可以编译成JavaScript

(5)node用的是虚拟机(V8)会跟着ECMAScript标准,所以什么es6,es7,es8....,nodejs直接就可以使用

(6)专为数据密集型实时程序设计

3.使用http模块搭起简单的http服务器

var http = require(‘http‘);

1.第一种

http.createServer((req, res) => {

  res.writeHead(200, {‘Content-Type‘: ‘text/plain‘});

  res.end(‘我是个简单的服务器!‘);

}).listen(8080);

2.第二种

var server = http.createServer();

server.on(‘request‘, (req, res) => {

  res.writeHead(200, {‘Content-Type‘: ‘text/plain‘});

  res.end(‘我是个简单的服务器!‘);

});

server.listen(8080);

这和第一种没什么区别,因为:http.createServer()的参数会自动添加到request事件中

技术分享

3.第三种(流数据)

var fs = require(‘fs‘);

http.createServer((req, res) => {

  res.writeHead(200, {‘Content-Type‘: ‘image/png‘});

  fs.createReadStream(‘x.png‘).pipe(res);

}).listen(8080);

这种方法更高效

《node.js实战》第一章读后感