第一章:欢迎进入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);
这种方法更高效