Node学习笔记1——初识NodeJs

Node学习笔记1——初识NodeJs_第1张图片

什么是NodeJs

Node.js是一个基于ChromeV8引擎的Javascript运行环境。Node.js使用了一个事件驱动、非阻塞式IO的模型,使其轻量又高效。Node.js的包管理器npm,是全球最大的开源库生态系统。简单来说Node是js的一个虚拟机(平台),能够解析js代码,使其运行在各个平台,这有点类似java的jvm。同时Node平台内部提供了大量的工具库,使js能与操作系统进行交互,例如读写文件。

NodeJs的诞生历程

2009年3月,Ryan Dahl在博客宣布创建

2009年5月,Ryan Dahl在GitHub中开源了最初版本,同年11月的JSConf就安排了Node讲座

2010年底,Ryan Dahl加入Joyent全职负责Node的发展

2011年7月,在微软的支持下登陆Windows平台

2012年1月底,Ryan Dahl将掌门人身份交给NPM的作者lssac Z.Schlueter

2013年7月,发布稳定版v0.10.13

随后,Node的发布计划主要集中在性能上面,由V0.14后正式发布了V1.0版本

Nodejs的特点

异步I/O

单线程

事件与回调函数

跨平台

NodeJs结构

Node学习笔记1——初识NodeJs_第2张图片

从上面这张图来看,NodeJS的结构分为3层:

Node standard Libarary(Node.js标准库),源码在lib目录下,是一个用javascript编写的库,里面包含了http,fs,events,buffer等Nodejs提供的核心模块,

javascript能够通过Api直接去调用这些模块,例如:let fs = require('fs')。

第二层的Node bindings是js与底层沟通的一座桥梁,使其能与底层相互沟通,bindings是一个又c++实现,源码在src/node.cc。

最后一层是node的最底层结构

V8: Google开源的高性能JavaScript引擎,以C++实现。这也是集成在Chrome中的JS引擎V8将你写的JavaScript

代码编译为机器码然后执行。

Libuv: 是一个用c语言实现的库,它为Nodejs提供的跨平台的操作,在其内部提供了事件循环(Event Loop),线程池,异步I/O等功能。

C-ares:提供了异步处理DNS相关的能力。

http_parser、OpenSSL、zlib 等:提供包括http解析、SSL安全协议、数据压缩等其他的能力。

NodeJs在web中的使用

Node学习笔记1——初识NodeJs_第3张图片

这张图是把Node作为一个服务器来处理所有用户的接受和响应

Node学习笔记1——初识NodeJs_第4张图片

这张图是把Node作为一个中间服务器来用,主要是进行分发等工作,具体步骤是Node来接受客户端传来的信息,然后把事件交托给传统java等服务器来处理,处理完后返回给node服务器,然后响应给客户端

你可能感兴趣的:(Node学习笔记1——初识NodeJs)