-
高效IO模型已经成熟,不同的平台分别有IOCP, epoll, kqueue等实现
-
对HTTP的长连接需求,比如Comet的广泛应用,对服务器端的长链接保持能力
-
V8引擎的出现,极大的提升了JS的解析能力
- 创始人:Ryan Dahl
- 公开时间:2009年11月8日
- 解决的问题: a. 基于异步高效率的网络IO模型 b. 引入高速的JS引擎v8 c. 可以更加方便的开发TCP/HTTP服务
- 发布后引起了很多JS开发者的兴趣
- 2011年,node包管理软件(npm)引入,成为了node.js发展的翅膀
- 随后express的出现,让node.js可以在web开发领域一展身手
- 由于使用的是js语言,前端的工具链也迅速的在node.js平台繁荣,并成为全栈实践的最佳平台
- 同时其它领域也对应用Node.js产生的浓厚的兴趣(包括IOT等)
var net = require('net');
var server = net.createServer(function (socket) {
socket.write('hello\n');
socket.write('world\n');
socket.on('data', function (data) {
socket.write(data);
});
});
server.listen(8000);
telnet 192.168.1.111 8000
Node.js生态主要由两大部分组成:
- 让开发TCP/HTTP等服务的长链接更加方便,可以更加方便的支持websocket(websocket虽然没有最终通过规范,但是已经有了一定的样稿)、comet等技术
- 让前后端可以共用一种语言,降低了学习成本
- 促进了异步IO模型的广泛应用
- 网络开发 Node.js的目票是解决IO密集型的应用的性能问题,所以非常适合网络开发和编程
- 游戏领域 解决了TCP程序编写难,交互难的问题
- 互联网领域 应用Node.js高性能的网络IO到Web上
- 前端先进 改造了整个前端工具链,让前端更加的工业化
-
移动跟随 随着前端的发展,前端与移动端出现了融合,并且产生了react native与nativescript, cordova, ionic 这样的前端技术与移动端技术混合的项目
- 异步代码
- 回调地狱
- 单线程与CPU利用
- js语言构建大项目的能力