站长家园(原代码之家)(www.adminjie.com)网站源码,微信源码,游戏源码,商业源码分享平台。

通过7个问题来简单认识一下Node.js

时间:2021-12-21[网络编程]作者:fabuyuan浏览:7 次

你了解Node.js吗?如果不了解可以试试看下去。本文通过7个问题来简单认识一下Node.js,希望对大家有所帮助!

通过7个问题来简单认识一下Node.js

1. Node诞生于哪一年?

Node诞生2009

2009年3月,Node的作者在其博客上宣布准备基于V8创建一个轻量级的Web服务器并提供一套库

同年5月,在GitHub发布最初的版本

2011年7月,在微软的支持下发布了windows版本

2. 是谁创造出来的?

Ryan Dahl是Node的创造者,被称为Node之父

但在2012年1月,Ryan Dahl将掌门人身份转交给Isaac Z.Schlueter,由他接受Node的版本发布及bug修复等工作,Isaac Z.Schlueter也是后来NPM的作者

3. 为什么叫Node?

Node有很多别称,比如Nodejs、NodeJS、Node.js等,那为什么是Node呢?

起初,Ryan Dahl称他的项目为web.js,就是一个web服务器,但是项目的发展超出了他最初单纯开发一个web服务器的设想。变成了一个构建网络应用的基础框架,可以在它的基础上构建更多的东西,如服务器、客户端、命令行工具等等。Node发展为一个强制不共享任何资源的单线程、单进程系统,包含是适宜网络的库,为构建大型分布式应用程序提供基础设施,其目标也称为一个构建快速、可伸缩的网络应用服务。它自身非常简单,通过通信协议来组织许多Node,非常容易通过扩展来达成构建大型网络应用的目的。每一个Node进程都构成了这个网络应用中的一个节点,这正是Node的含义

4. 为什么是JavaScript成为了Node的实现语言?

选择JavaScript作为Node的实现语言的主要原因有3个:

  • 高性能
  • 符合事件驱动
  • 没有历史包袱

Ryan Dahl曾经评估过C、Lua、Haskell、Ruby等作为备选实现,但是C开发门槛高,Lua有很多的历史包袱,Haskell又觉得自己还玩不转,而Ruby的虚拟机的性能又不太好。综合之下选择了JavaScript作为Node的实现语言

你可能会跟我一样想,JavaScript就没有历史包袱吗?是的,JavaScript在后端一直没有市场,历史包袱相当于零

5. Node有哪些主要特点?

主要有以下特点:

  • 异步I/O
  • 事件和回调函数
  • 单线程

Node保留了前端浏览器JavaScript中的那些熟悉的接口,没有改写语言本身的任何特性

6. Node有哪些应用场景?

Node的应用场景主要有以下几种:

  • CPU密集型
  • CPU密集型业务
  • 分布式应用

Node利用事件循环的处理能力,不需要为每一个请求启动一个线程,从而更有效的组织起更多的硬件资源;对于偏重CPU栈操作的业务,Node的表现也是足够高效的,主要原因是V8的深度性能优化

7. CPU密集型应用会给Node带来什么挑战,如何解决?

CPU密集型应用会给Node带来的主要挑战是:由于JavaScript单线程,如果长时间计算(如大的循环),将会导致CPU时间片不能释放,使得后续I/O无法发起

通常方案:

  • 适当调整和分解大型运算任务

如果上述方案无法解决,Node还有两种方法来充分利用CPU

  • Node可以编写C/C++扩展
  • 通过子进程的方式,将一部分Node进程当做常驻服务进程用于计算,然后利用进程间的消息来传递结果,将计算与I/O分离

更多node相关知识,请访问:nodejs 教程!!

以上就是通过7个问题来简单认识一下Node.js的详细内容,更多请关注站长家园其它相关文章!

本文标签:  Node.js

转载请注明来源:通过7个问题来简单认识一下Node.js

本文永久链接地址:https://www.adminjie.com/post/6695.html

免责声明:
本站所发布的一切资源仅限用于学习和研究目的;不得将上述内容用于商业或者非法用途,否则,一切后果请用户自负。本站信息来自网络,版权争议与本站无关。您必须在下载后的24个小时之内,从您的电脑中彻底删除上述内容。如果您喜欢该程序,请支持正版软件,购买注册,得到更好的正版服务。

附:
二○○二年一月一日《计算机软件保护条例》第十七条规定:为了学习和研究软件内含的设计思想和原理,通过安装、显示、传输或者存储软件等方式使用软件的,可以不经软件著作权人许可,不向其支付报酬!鉴于此,也希望大家按此说明研究软件!

版权声明:
一、本站致力于为软件爱好者提供国内外软件开发技术和软件共享,着力为用户提供优资资源。
二、本站提供的部分源码下载文件为网络共享资源,请于下载后的24小时内删除。如需体验更多乐趣,还请支持正版。
三、我站提供用户下载的所有内容均转自互联网。如有内容侵犯您的版权或其他利益的,若有侵犯你的权益请:提交版权证明文件到邮箱 2225329873#qq.com(#换为@) 站长会进行审查之后,情况属实的会在三个工作日内为您删除。

  • 站长家园(原代码之家)会员升级
  • 最新文章
    • 如何解决centos7 vnc界面乱码问题

      如何解决centos7 vnc界面乱码问题

      centos7vnc界面乱码的解决办法:1、执行“yum-yinstallcjkuni-ukai-fonts”;2、执行“yum-yinstall...

    • wap和html5的区别有哪些

      wap和html5的区别有哪些

      区别:1、HTML5是一种脚本语言,而wap是一种无线应用协议;2、HTML5目前支持大多数web平台和移动终端,可以通过自己的脚本语言进行跨平台访问,而wap...

    • 如何解决centos navicat 乱码问题

      如何解决centos navicat 乱码问题

      centosnavicat乱码的解决办法:1、打开Navicat安装目录,找到start_navicat文件;2、修改字符集;3、重新启动Navicat即可。...

    • 怎样查询docker跑了多少镜像

      怎样查询docker跑了多少镜像

      在docker中,可以利用images命令查询docker的镜像,该命令的作用就是列出本地镜像,当参数设置为“-a”时,会列出本地中包含中间映像层的所有的镜像,...

    • html5可以播放什么格式的视频和音频

      html5可以播放什么格式的视频和音频

      html5可以播放的格式:1、视频格式主要包括ogg(一种开源的视频封装容器)、mpeg4、wehm(由Google发布的一个开放、免费的媒体文件格式)等;2、...

  • 买服务器送会员
  • 热门文章
  • 买服务器送会员