Node.js入门教程 第一篇 (概念原理及环境配置)

注:为了本教程的准确性,部分描述引用了官网及网络内容。前端

Node.js 概念

Node.js本质上是使用Google的V8引擎制做出来的服务框架。V8自己是Google为了解决Chrome浏览器的性能问题而制做的前端引擎(开源)。自己依托于浏览器引擎,这也是为何Node.js使用的是前端的JavaScript语言编程。node

V8的诞生是Google为了解决JavaScript的性能问题,用了内联缓存和隐藏类技术实现的前端引擎。V8使用C++编写,也所以V8能够在C++项目中完美兼容使用。express

V8被Google使用在大多数产品中,如Chrome浏览器,安卓浏览器等。npm

V8引擎在不断升级,Node.js自己也在不断更新,在下载Node.js安装包时就携带对应版本的V8引擎。若须要查看V8版本,在CMD中输入:编程

1 node -p process.versions.v8

如须要查看Node.js的版本,输入:浏览器

1 node -v

 

Node.js基础原理

在Node.js中最主要的特性,即事件驱动与非阻塞I/O都与其底层的特殊实现有关。在Node.js的底层有一个事件轮循器(Event Loop)。每当有事件注册时,会先将事件放置到事件队列(Event Queue),并经过事件轮循器顺序执行事件队列。当轮循到一个事件时,事件轮循器会为其分配一个工做线程(Worker Threads)执行该事件,事件完成后经过执行回调(Callback)返回到事件列表并经过V8引擎传递给应用(Application)。缓存

其详细步骤为:服务器

一、应用层发出请求给V8网络

二、V8经过Node.js的中间层(Bindings)传递给底层(Libuv)框架

三、在Libuv层中,请求会按顺序放置在事件队列(Event Queue)

四、事件轮询器(Event Loop)依次为事件队列中的事件分配工做线程(Worker Threads)

五、工做线程完成事件,并经过执行回调(Callback)返回事件列表

六、事件的执行结果经过中间层及V8返回给应用

在应用层中,发送请求后会继续执行应用层后续代码,而不须要等待事件的完成,因此是异步处理。事件处理完成后经过回调返回到应用。整个过程只由一个主线程完成,所以不存在死锁、等待的状况。

这就是Node.js的事件驱动与I/O非阻塞的实现原理。

 

其中,V8是Node.js依赖的核心库,而Bindings层及Libuv层是Node.js中用C++写的原创底层。

最上层的standard library是用JavaScript写的Node.js基础库。里面有各类经常使用的API,如:http模块、fs模块等。咱们实际中最经常使用的就是standard library层。

  

其余概念

npm是Node.js的包管理工具,能够经过npm下载已有的第三方包到本身的项目中,也能够上传本身代码给别人使用。npm会随Node.js的安装包一并安装。

查看npm版本:

1 npm -v

其余经常使用的npm命令:

1 npm view XX version 查看版本(如:npm view express version)
3 npm install XX --save 安装包
5 node XX.js 启动一个服务入口(如:node index.js)
7 npm run dev 启动客户端 npm run build 启动发布

REPL(交互式解释器)能够输入代码实时执行,用以测试JavaScript代码块。主要用在Linux等非图像界面服务器的代码调试场景中。

 

安装Node.js

1.下载node.js :https://nodejs.org/en/download/

2.安装完成后,环境变量会在安装过程当中自动设置好。若使用的是zip压缩版解压的node.js,则需手动配置环境变量Path:

 

 3.打开cmd,命令行:“node --version”检查Node.js版本,显示正确的版本号即安装成功。

 4.配置npm源(重要

--全局配置切换到淘宝源(推荐此项,由于外网链接不稳定):

 命令行: npm config set registry https://registry.npm.taobao.org 

--全局配置切换到官方源:

 命令行: npm config set registry http://www.npmjs.org 

--查看当前源:

 命令行: npm config get registry 

相关文章
相关标签/搜索