Skip to content

Latest commit

 

History

History
executable file
·
138 lines (97 loc) · 3.15 KB

1. 创世纪.md

File metadata and controls

executable file
·
138 lines (97 loc) · 3.15 KB
marp paginate style
true
true
h1 { color: #0bb8e8; }
<style scoped> h1,h2 { color: #0bb8e8; text-align: center } h2 { text-align: right } </style>

Node.js 基础

一、创世纪

⭐ by calidion


历史背景

  1. 高效 IO 模型已经成熟,不同的平台分别有 IOCP, epoll, kqueue 等实现

  2. 对 HTTP 的长连接需求,比如 Comet 的广泛应用,对服务器端的长链接保持能力

  3. V8 引擎的出现,极大的提升了 JS 的解析能力


Node.js 的出现与发展

<style scoped> img { position: absolute; top: 180px; right: 120px; } </style>

  1. 创始人:Ryan Dahl
  2. 公开时间:2009 年 11 月 8 日
  3. 解决的问题: a. 基于异步高效率的网络 IO 模型 b. 引入高速的 JS 引擎 v8 c. 可以更加方便的开发 TCP/HTTP 服务

Node.js 的走红

  1. 发布后引起了很多 JS 开发者的兴趣
  2. 2011 年,node 包管理软件(npm)引入,成为了 node.js 发展的翅膀
  3. 随后 express 的出现,让 node.js 可以在 web 开发领域一展身手
  4. 由于使用的是 js 语言,前端的工具链也迅速的在 node.js 平台繁荣,并成为全栈实践的最佳平台
  5. 同时其它领域也对应用 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 的基本架构

Node.js 生态主要由两大部分组成:

  1. 系统模块 系统又分为V8 + libuv(网络异步 IO + 事件循环) + 网络基础设施
  2. 扩展模块

Node.js 带来的好处问题

  1. 让开发 TCP/HTTP 等服务的长链接更加方便,可以更加方便的支持 websocket(websocket 虽然没有最终通过规范,但是已经有了一定的样稿)、comet 等技术
  2. 让前后端可以共用一种语言,降低了学习成本
  3. 促进了异步 IO 模型的广泛应用

Node.js 可以应用的领域

  1. 网络开发 Node.js 的目票是解决 IO 密集型的应用的性能问题,所以非常适合网络开发和编程
  2. 游戏领域 解决了 TCP 程序编写难,交互难的问题
  3. 互联网领域 应用 Node.js 高性能的网络 IO 到 Web 上
  4. 前端先进 改造了整个前端工具链,让前端更加的工业化

  1. 移动跟随 随着前端的发展,前端与移动端出现了融合,并且产生了react nativenativescript, cordova, ionic 这样的前端技术与移动端技术混合的项目

  2. 桌面技术 在桌面上产生了nw.js, electron这样的技术


Node.js 引入新问题

  1. 异步代码
  2. 回调地狱
  3. 单线程与 CPU 利用
  4. js 语言构建大项目的能力