marp | paginate | style |
---|---|---|
true |
true |
h1 {
color: #0bb8e8;
}
|
-
高效 IO 模型已经成熟,不同的平台分别有 IOCP, epoll, kqueue 等实现
-
对 HTTP 的长连接需求,比如 Comet 的广泛应用,对服务器端的长链接保持能力
-
V8 引擎的出现,极大的提升了 JS 的解析能力
<style scoped> img { position: absolute; top: 180px; right: 120px; } </style>
- 创始人: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 语言构建大项目的能力