一.Node.js简介

一.Node简介

:章节部分内容引用于网络,侵删

Node (或称为 Node.js) 是一个新兴的 JavaScript 的执行平台。之所以说是一个执行平台,是因为 Node 本身并不仅仅是一个 JavaScript 的解释器或者虚拟机,它基于 Google Chrome 的 JavaScript 引擎 v8 进行开发,但与一般的 JavaScript 引擎不同,Node 为 JavaScript 语言提供了很多周边类库,以及为 JavaScript 语言执行环境提供像类定义、命名空间、包管理的机制以及新的编程模型。

一般来说,Node 包括两部分,一部分是 V8 JavaScript 引擎,另一部分则是 Node 事件驱动的编程模型。

JavaScript 部分

Node 使用和浏览器基本相同的 JavaScript 引擎,只是新引入了 CommonJS 建议的包管理机制(require() 函数)以及附带的基础类库。如果有 JavaScript 编程经历,那么使用 Node 会感到非常熟悉。

需要注意的是,JavaScript 是 ECMAScript 的一个实现,所以,Node 理论上是 ECMAScript 的一个实现。关于 JavaScript 相关的几个叫法及语言实现,可以参考 ECMAScript 和 JavaScript 的实现 ,或者,百度一下…… 不过,知道 JavaScript 和 ECMAScript 基本等价即可。

事件驱动的编程模型

事件驱动模型,简单地说,编程的时候并不考虑顺序执行,而是,总是等待满足某事件的条件的时候才执行。这样会省去无意义的i/o等待时间,充分利用cpu,达到i/o和cpu的并发利用。因此, Node 的编程模型也被成为异步的编程模型。底层库带来的异步大部分是基于io的,网络io(net), 磁盘io(fs),这里就拿读取文件来举例子

同步读取:

const fs = require('fs');

console.log('reading file');
var data=fs.readFileSync("111","utf-8");
console.log('end');

执行结果:

reading file
end

异步读取:

const fs = require('fs');

fs.readFile('111', function (err, file) {
    console.log('reading file');
});
console.log('end');

执行结果:

end
reading file



很明显俩个结果顺序是完全不同的,这就是典型的异步i/o事件

第一种情况总是假设前一行执行了,才执行后面一行语句,简单说就是编程顺序和执行顺序是同步的。而 JavaScript 本身的语法也不例外(它也是 C 语言语法家族的~)。但是,有时前一句话执行的时间很长,需要等待某资源的打开,而我们在这个过程中想显示点别的东西,没有办法只能够等待,这时候的cpu是闲置的。这时候第二种情况,异步处理的优势就体现出来了,无需等待,等到文件读取完成后自己来通知我,再去执行相应的完成函数。

显然node这种编程模型适合大量i/o访问,cpu的计算量不是很大的场景,天生的异步优势。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值