我没有完全了解Node.js的全部含义。也许是因为我主要是基于Web的业务应用程序开发人员。它是什么,有什么用?
到目前为止,我的理解是:
- 编程模型是事件驱动的,尤其是它处理I / O的方式。
- 它使用JavaScript,解析器为V8。
- 它可以轻松用于创建并发服务器应用程序。
我的理解正确吗?如果是,那么事件I / O的好处是什么,并发性东西还有更多好处吗?另外,Node.js的发展方向是否像基于JavaScript(基于V8)的编程模型一样?
我没有完全了解Node.js的全部含义。也许是因为我主要是基于Web的业务应用程序开发人员。它是什么,有什么用?
到目前为止,我的理解是:
我的理解正确吗?如果是,那么事件I / O的好处是什么,并发性东西还有更多好处吗?另外,Node.js的发展方向是否像基于JavaScript(基于V8)的编程模型一样?
有一个非常好的快餐店类比,可以最好地解释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浏览器。”
另外,别忘了提到Google的V8非常快。它实际上将JavaScript代码转换为具有与已编译二进制文件匹配的性能的机器代码。因此,与所有其他伟大的事物一起,它的速度非常快。
关于如何管理模板以及如何对其进行逐步增强的两个很好的例子。您只需要一些轻量级的JavaScript代码即可使其完美运行。
我强烈建议您观看并阅读以下文章:
选择任何一种语言,并尝试记住如何管理HTML文件模板以及在DOM结构中更新单个CSS类名称的操作(例如,用户单击菜单项,并希望将其标记为“选定”并更新页面内容)。
使用Node.js,就像在客户端JavaScript代码中一样简单。获取您的DOM节点,然后将CSS类应用于该节点。获取您的DOM节点,并获取innerHTML您的内容(您将需要一些其他JavaScript代码来执行此操作。阅读本文以了解更多信息)。
另一个很好的例子是,您可以使网页与使用同一段代码打开或关闭的JavaScript兼容。想象一下,您有一个用JavaScript选择的日期,该日期允许您的用户使用日历来选择任何日期。您可以编写(或使用)同一段JavaScript代码,以使其与打开或关闭JavaScript一起使用。
闭包是在创建代码的上下文中执行代码的一种方法。
为了确保一致性,您可以定义变量,然后启动一个非阻塞I / O函数,并将其发送给匿名函数以进行回调。
任务完成后,回调函数将在带有变量的上下文中执行,这就是闭包。
闭包非常适合使用无阻塞I / O编写应用程序的原因是,管理异步执行的函数的上下文非常容易。
我认为优点是:
Web development in a dynamic language (JavaScript) on a VM that is incredibly fast (V8). It is much faster than Ruby, Python, or Perl.
Ability to handle thousands of concurrent connections with minimal overhead on a single process.
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.
A lot of people already know JavaScript, even people who do not claim to be programmers. It is arguably the most popular programming language.
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.
好吧,我明白
对我来说,这意味着您在所有三个假设中都是正确的。图书馆看起来很有前途!