什么是Node.js?\[关闭\]

JavaScript

SamStafan十三

2020-03-12

我没有完全了解Node.js的全部含义也许是因为我主要是基于Web的业务应用程序开发人员。它是什么,有什么用?

到目前为止,我的理解是:

  1. 编程模型是事件驱动的,尤其是它处理I / O的方式
  2. 它使用JavaScript,解析器为V8
  3. 它可以轻松用于创建并发服务器应用程序。

我的理解正确吗?如果是,那么事件I / O的好处是什么,并发性东西还有更多好处吗?另外,Node.js的发展方向是否像基于JavaScript(基于V8)的编程模型一样?

第1199篇《什么是Node.js?\[关闭\]》来自Winter(https://github.com/aiyld/aiyld.github.io)的站点

7个回答
樱猪猪 2020.03.12

好吧,我明白

  • Node的目标是提供一种构建可伸缩网络程序的简便方法。
  • Node的设计与Ruby的Event Machine或Python的Twisted等系统相似,并受其影响。
  • V8 javascript的事件I / O。

对我来说,这意味着您在所有三个假设中都是正确的。图书馆看起来很有前途!

TomSam 2020.03.12

有一个非常好的快餐店类比,可以最好地解释Node.js的事件驱动模型,请参阅完整的文章Node.js,医生办公室和快餐店–了解事件驱动的编程

总结如下:

如果快餐店遵循传统的基于线程的模型,则需要订购食物并排队等候,直到收到为止。在您完成订单后,您后面的人将无法订购。在事件驱动的模型中,您订购食物,然后脱颖而出等待。然后其他所有人都可以自由订购。

Node.js是事件驱动的,但是大多数Web服务器都是基于线程的.York解释了Node.js的工作方式:

  • 您使用Web浏览器在Node.js Web服务器上请求“ /about.html”。

  • Node.js服务器接受您的请求并调用一个函数以从磁盘检索该文件。

  • 在Node.js服务器等待文件检索的同时,它为下一个Web请求提供服务。

  • 检索文件时,Node.js服务器队列中插入了一个回调函数。

  • Node.js服务器执行该功能,在这种情况下,该功能将呈现“ /about.html”页面并将其发送回Web浏览器。”

樱泡芙 2020.03.12

另外,别忘了提到Google的V8非常快。它实际上将JavaScript代码转换为具有与已编译二进制文件匹配的性能的机器代码。因此,与所有其他伟大的事物一起,它的速度非常快。

YOC40059608 2020.03.12

关于如何管理模板以及如何对其进行逐步增强的两个很好的例子。您只需要一些轻量级的JavaScript代码即可使其完美运行。

我强烈建议您观看并阅读以下文章:

选择任何一种语言,并尝试记住如何管理HTML文件模板以及DOM结构中更新单个CSS类名称的操作(例如,用户单击菜单项,并希望将其标记为“选定”并更新页面内容)。

使用Node.js,就像在客户端JavaScript代码中一样简单。获取您的DOM节点,然后将CSS类应用于该节点。获取您的DOM节点,并获取innerHTML您的内容(您将需要一些其他JavaScript代码来执行此操作。阅读本文以了解更多信息)。

另一个很好的例子是,您可以使网页与使用同一段代码打开或关闭的JavaScript兼容。想象一下,您有一个用JavaScript选择的日期,该日期允许您的用户使用日历来选择任何日期。您可以编写(或使用)同一段JavaScript代码,以使其与打开或关闭JavaScript一起使用。

伽罗MandyTony 2020.03.12

Node.js是为服务器端JavaScript代码构建的开源命令行工具。您可以下载tarball,编译并安装源代码。它使您可以运行JavaScript程序。

JavaScript由V8执行,V8是Google开发的JavaScript引擎,用于Chrome浏览器。它使用JavaScript API来访问网络和文件系统。

它因其性能和执行并行操作的能力而广受欢迎。

了解的node.js是最好的解释的node.js我迄今发现的。

以下是有关该主题的一些好文章。

小卤蛋 2020.03.12

闭包是在创建代码的上下文中执行代码的一种方法。

为了确保一致性,您可以定义变量,然后启动一个非阻塞I / O函数,并将其发送给匿名函数以进行回调。

任务完成后,回调函数将在带有变量的上下文中执行,这就是闭包。

闭包非常适合使用无阻塞I / O编写应用程序的原因是,管理异步执行的函数的上下文非常容易。

Tony伽罗Sam 2020.03.12

我认为优点是:

  1. Web development in a dynamic language (JavaScript) on a VM that is incredibly fast (V8). It is much faster than Ruby, Python, or Perl.

  2. Ability to handle thousands of concurrent connections with minimal overhead on a single process.

  3. JavaScript is perfect for event loops with first class function objects and closures. People already know how to use it this way having used it in the browser to respond to user initiated events.

  4. A lot of people already know JavaScript, even people who do not claim to be programmers. It is arguably the most popular programming language.

  5. Using JavaScript on a web server as well as the browser reduces the impedance mismatch between the two programming environments which can communicate data structures via JSON that work the same on both sides of the equation. Duplicate form validation code can be shared between server and client, etc.

问题类别

JavaScript Ckeditor Python Webpack TypeScript Vue.js React.js ExpressJS KoaJS CSS Node.js HTML Django 单元测试 PHP Asp.net jQuery Bootstrap IOS Android