前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Node的特点

Node的特点

作者头像
用户3258338
发布2019-12-04 12:03:20
1.2K0
发布2019-12-04 12:03:20
举报

不要为失去的东西而忧伤,要对拥有它的时光心存感激~


各位宝宝,最近好吗?你那里降温了吗?北京已经降温了,各位要穿的厚厚的哦,好好照顾自己。

Node的特点

1.异步I/O

例如读取文件:

代码语言:javascript
复制
var fs = require('fs');fs.readFile('/path', function (err, file) {   console.log('读取文件完成')}); console.log('发起读取文件');

在Node中,绝大多数的操作都是以异步的方式进行调用。这样的意义在于,在

Node中,我们可以从语言层面很自然的进行并行I/O操作。在每个调用之间无须等待之前的I/O调用结束。

代码语言:javascript
复制
fs.readFile('/path1',function(err, file){  console.log('读取文件1完成')})fs.readFile('/path2',function(err,file){  console.log('读取文件2完成')})

对于同步I/O而言,它们的耗时是两个任务的耗时之和。这里的异步带来的优势是显而易见的。

2.事件与回调函数

事件的编程方式具有轻量级、松耦合、只关注事物点等优势。但是在多个异步任务的场景下,事件与事件之间各自独立,如何协作是一个问题。

与其他的web后端语言相比,Node回调函数是一大特色。纵观下来,回调函数也是最好的接受异步调用返回数据的方式。

3.单线程

Node保持了JS在浏览器中单线程的特点。而且Node中,JS与其余线程是无法共享任何状态的。单线程的最大好处是不用像多线程那样处处在意状态的同步问题,这里没有死锁的村子,也没有线程上下文交换所带来的性能上的开销。单线程缺点:

-无法利用多核CPU

-错误会引起整个应用退出,应用的健壮性值的考验

-大量计算占用CPU导致无法继续调用异步I/O

像浏览器中JS与UI共用一个线程一样,JS长时间执行会导致UI的渲染和响应被中断。在Node中,长时间的CPU占用也会导致后续的异步I/O发不出调用。已完成的异步I/O的回调函数也会得不到及时执行。

Node采用了与Web Workers相同的思路来解决单线程中大计算量的问题:child_process.

子进程的出现,意味着Node可以从容的应对单线程在健壮性和无法利用多核CPU方面的问题。通过计算分发给各个子进程,可以将大量计算分解掉,然后再通过进程之间的事件消息来传递消息,这可以很好的保持应用模型的简单和低依赖性。通过Master-worker的管理方式,可以很好地管理各个工作进程,已达到更高的健壮性。

4.跨平台

兼容windows和*nix平台主要得益于Node在架构层面的改动,它在操作系统与Node上层模块系统之间创建了一层平台层架构,即libuv。目前,libuv已经成为许多系统实现跨平台的基础组件。

愿我们有能力不向生活缴械投降---Lin

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2019-12-02,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 女程序员的日常 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档