Node.js的特点详解


Posted in Javascript onFebruary 03, 2017

Node.js是一个基于Chrome v8引擎建立的Java运行平台,用于搭建响应速度快、易于扩展的网络应用。本文和大家分享的是Node.js的一些特点,希望对大家学习Node.js有帮助。

异步I/O

这里,我们来详细解释一下:

异步是什么意思

比如说你的爸,今天要叫你做些事情,比如说你要做饭、洗衣服还有扫地,以及烧开水等等一系列的事情。那么,就你一个人来说,你是不是得一件事一件事的挨个做完了之后,才能接着做下一件事。比如说,你是不是烧完开水,然后才来扫地,扫完地然后再来煮饭,煮完饭,你可能才会做其他事情。那么这个过程,我们把它叫做同步的过程。你做一件事,你必须要等待,等待做完了之后,再做另外一件事。那么这个时候,如果我们懂得合理安排时间的话,我们可以这样办:我们在烧开水的时候,我们可以扫地,因为烧开水不用我们守着嘛!只需要把水放好,或点燃就行了。然后,我们可以去做其他事情了。比如说,扫地,或者是洗衣服,等等一系列的事情我们都可以做。那么这样,在做完了同样的事情,但是我们所需要花费的时间,它是不一样的。你用后面这种方式,可能用的时间会更短,效率更高。而你用前面那种同步的方式,它的效率会更低。那么,后面这种事情,我们就把它叫做异步的操作。

事件与回调

如果你采用异步的方式来做事情,它的效率会很高,但是你同时只能做一个事情。比如说,你烧开水的时候,虽然说不用你守在那里。但是你扫地了过后,你这个水烧开的时候,我怎么知道呢?(就是这件事做好了之后,我怎么知道呢?)

于是我们可以想一下,在这个水壶上面,给它放一个小喇叭,当这个水烧开了之后会冒蒸汽,当这个蒸汽吹响这个喇叭的时候,我们就知道这个事情做好了,水烧开了,我们就可以接着做水烧开之后的事情了。

这个事件与回调就是:这个水烧开了以后,它会以事件的形式来通知你(我这个事情做好了,你可以把这个水装好了)。

回调是什么意思

当它的事件发生了过后,它会通知你,那么你在装水这个过程,就是在回调(就是处理这个过程)。处理完烧开水过后的结果

单线程

这一点是node.js比较大的一个特点。它可以开发出高效的后台应用(网络应用)

什么是单线程

还是用刚才那个例子。你爸叫你做很多件事情,如果你不懂的合理安排时间,你就只能用同步;那么同步的时候,你可能会这样想:我叫我几个小伙伴来帮我做这个事情(叫个两三个小伙伴)。一个帮我烧开水,一个帮我扫地,一个帮我煮饭。这样操作的话,在同一个时间段,就有多个人来帮你做事情。(这种操作,我们把它叫做多线程操作,就是同一时间段,有多个人来做事情)

多线程操作它有个缺点,就是你请这些小伙伴来帮你做事情,肯定要犒劳一下他们,那么你势必会花费一下你的零用钱,你肯定要买点好吃的东西来犒劳一下。那么这样,如果你不想花你的钱,但是你又想把事情做好,那么你怎么办呢?只能按照刚才我们异步的方式,就是你一个人做。又要提高效率怎么办呢?就是我做这件事情的时候,同时又要做其它事情,那么这个就是单线程(就是一个人做事情)。

跨平台

目前我们的node.js在mac系统上、Windows上面和Linux这些上面,都可以运行,它已经开发除了对应的运行环境了。

以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,同时也希望多多支持三水点靠木!

Javascript 相关文章推荐
javascript import css实例代码
Jul 18 Javascript
ASP小贴士/ASP Tips javascript tips可以当桌面
Dec 10 Javascript
node.js中的emitter.emit方法使用说明
Dec 10 Javascript
js显示当前日期时间和星期几
Oct 22 Javascript
jquery实现具有收缩功能的垂直导航菜单
Feb 16 Javascript
JS验证 只能输入小数点,数字,负数的实现方法
Oct 07 Javascript
详解在AngularJS的controller外部直接获取$scope
Jun 02 Javascript
vue-resource调用promise取数据方式详解
Jul 21 Javascript
深入理解Vue transition源码分析
Jul 30 Javascript
详解Javascript 中的 class、构造函数、工厂函数
Dec 20 Javascript
利用d3.js力导布局绘制资源拓扑图实例教程
Jan 08 Javascript
Vue 按照创建时间和当前时间显示操作(刚刚,几小时前,几天前)
Sep 10 Javascript
Bootstarp 基础教程之表单部分实例代码
Feb 03 #Javascript
javascript判断回文数详解及实现代码
Feb 03 #Javascript
Javascript中数组去重与拍平的方法示例
Feb 03 #Javascript
JavaScript中for循环的几种写法与效率总结
Feb 03 #Javascript
jquery实现刷新随机变化样式特效(tag标签样式)
Feb 03 #Javascript
漂亮实用的页面loading(加载)封装代码
Feb 03 #Javascript
理解javascript中的Function.prototype.bind的方法
Feb 03 #Javascript
You might like
php下检测字符串是否是utf8编码的代码
2008/06/28 PHP
PHP 设计模式之观察者模式介绍
2012/02/22 PHP
Linux下CoreSeek及PHP扩展模块的安装
2012/09/23 PHP
深入file_get_contents与curl函数的详解
2013/06/25 PHP
php预定义变量使用帮助(带实例)
2013/10/30 PHP
使用php批量删除数据库下所有前缀为prefix_的表
2014/06/09 PHP
php curl模拟post请求和提交多维数组的示例代码
2015/11/19 PHP
25个好玩的JavaScript小游戏分享
2011/04/22 Javascript
JS+CSS实现模仿浏览器网页字符查找功能的方法
2015/02/26 Javascript
jQuery实现商品活动倒计时
2015/10/16 Javascript
jQuery validate插件实现ajax验证重复的2种方法
2016/01/22 Javascript
jQuery设置单选按钮radio选中/不可用的实例代码
2016/06/24 Javascript
jquery实现楼层滚动效果
2018/01/01 jQuery
vue中实现methods一个方法调用另外一个方法
2018/02/08 Javascript
详解关于Vuex的action传入多个参数的问题
2019/02/22 Javascript
浅析JavaScript异步代码优化
2019/03/18 Javascript
JS错误处理与调试操作实例分析
2020/04/13 Javascript
vue 保留两位小数 不能直接用toFixed(2) 的解决
2020/08/07 Javascript
[02:32]DOTA2英雄基础教程 美杜莎
2014/01/07 DOTA
[03:28]2014DOTA2国际邀请赛 走近EG战队天才中单Arteezy
2014/07/12 DOTA
[45:52]完美世界DOTA2联赛PWL S3 Forest vs INK ICE 第二场 12.09
2020/12/12 DOTA
Python实现递归遍历文件夹并删除文件
2016/04/18 Python
Python中matplotlib中文乱码解决办法
2017/05/12 Python
利用python模拟实现POST请求提交图片的方法
2017/07/25 Python
python实现人脸识别代码
2017/11/08 Python
Python读取txt某几列绘图的方法
2018/10/14 Python
Python数据类型之Tuple元组实例详解
2019/05/08 Python
Pytorch中index_select() 函数的实现理解
2019/11/19 Python
Python绘图之二维图与三维图详解
2020/08/04 Python
使用Python绘制台风轨迹图的示例代码
2020/09/21 Python
中国领先的专业家电网购平台:国美在线
2016/12/25 全球购物
班级入场式解说词
2014/02/01 职场文书
施工质量承诺书范文
2014/05/30 职场文书
python实现剪贴板的操作
2021/07/01 Python
JavaScript选择器函数querySelector和querySelectorAll
2021/11/27 Javascript
iOS 16进一步确认,一共支持16款iPhone
2022/04/28 数码科技