Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/468.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 除了可伸缩性之外,使用node.js还有哪些体系结构原因?_Javascript_Node.js_Nonblocking_Serverside Javascript_Evented Io - Fatal编程技术网

Javascript 除了可伸缩性之外,使用node.js还有哪些体系结构原因?

Javascript 除了可伸缩性之外,使用node.js还有哪些体系结构原因?,javascript,node.js,nonblocking,serverside-javascript,evented-io,Javascript,Node.js,Nonblocking,Serverside Javascript,Evented Io,我读到的关于为什么要使用node.js的最常见主题是,由于node.js具有事件化、非阻塞的I/O模型,因此它具有高可伸缩性。我试图理解其他非可伸缩性用例(除了用作一般服务器端javascript引擎之外) 如果可伸缩性不是我关心的问题,node.js是否还有其他用例 如果对#1是,它们是什么 node.js是否适用于任何特定类型的应用程序体系结构?例如,类似于某些键/值(nosql-呃,我讨厌这个术语)数据库除了可伸缩性原因之外是有用的 我能想到一个原因,但不是很深刻。基本上,如果您正在开发R

我读到的关于为什么要使用node.js的最常见主题是,由于node.js具有事件化、非阻塞的I/O模型,因此它具有高可伸缩性。我试图理解其他非可伸缩性用例(除了用作一般服务器端javascript引擎之外)

  • 如果可伸缩性不是我关心的问题,node.js是否还有其他用例
  • 如果对#1是,它们是什么
  • node.js是否适用于任何特定类型的应用程序体系结构?例如,类似于某些键/值(nosql-呃,我讨厌这个术语)数据库除了可伸缩性原因之外是有用的

  • 我能想到一个原因,但不是很深刻。基本上,如果您正在开发RIA,那么整个堆栈都可以是javascript。这可能有一些价值


    但我会质疑我自己的答案,即这样的想法是,即使它使客户端开发人员更容易访问服务器端代码,他们仍然需要了解他们的服务器堆栈是如何工作的。因此,仍然有一些需要学习的地方。

    我认为这篇博客文章很好地总结了这一点:

    简而言之(pro node.js):

    • 速度
    • Javascript(特别是如果您已经知道的话)
    • 效率

    node.js真的很棒。试试看!:)

    我尝试使用node的原因是,在服务器和客户端之间为ajax请求发送JSON数据非常容易。 如果您使用MongoDB之类的东西,它也将数据存储为JSON对象,那么您就不必担心数据的翻译或解析


    如果您的站点使用了大量ajax,并且您将数据作为JSON对象(而不是XML或纯文本)发送,那么node.js将为您节省大量的工作量。

    除了无阻塞I/O模型、可伸缩性和所有“主要原因”之外,我喜欢node.js的其他方面:

    • 其框架的轻量级特性。基础知识容易学
    • 开发人员社区正在github上构建大量有用的模块和库,这些模块和库正在扩展node.js轻量级核心及其功能
    • 在不了解复杂库的情况下,构建服务器端和实时系统(例如,基于http或套接字的系统)非常简单和快速

    准确地说,我认为您问题中的通用服务器端JavaScript引擎应该是V8,而根据其创建者的说法,节点是为“编写网络程序脚本”而构建的

    根据他的许多评论,我不相信他对这件事的看法像我们许多人那样广泛,但他认识到这件事可以走向何方。[我不能代表其他任何人说话——这只是我根据我所看到的作品和演讲所作的解释。]

    因此,它从一个较低的层次处理问题,使HTTP成为一级公民,而且恰好非常酷,我认为这足以成为我们大多数人的“用例”。)

    它确实有一个学习曲线,并且由于其快速发展而不是最稳定的平台。我相信时间会告诉你哪里最有用


    目前,由于它的轻量级、异步性质以及通用的Web开发,人们正在将其用于“实时”应用程序,尽管IMO的最佳点仍然是其最初声明的用途。

    我喜欢使用NodeJS来编写测试工具,因为您可以非常快地编写存根/服务器/客户端。您可以轻松地驱动应用程序。我可以很容易地为第三方后端服务器编写脚本,以便对我的应用程序进行性能测试。我还使用它来驱动我的应用程序。我可以使用setTimout执行复杂的客户机-服务器场景,根据我想要的任何逻辑触发多个事件,并进行大规模测试。

    关于这篇博文的两个注意事项(有点过时):node 0.2.x在cygwin上运行良好,使用jsdom可以轻松地进行服务器端dom操作。对于某些类型的应用程序来说,哪些用例是好的,而不仅仅是速度或效率有所提高的情况。例如,node.js对stackoverflow.com这样的应用程序有什么价值吗?@generalhenry:是的,我知道,有些东西改变了,但基本上还是可以的@Howiecamp:不,用例尤其是当您有高流量并且希望一次处理多个请求时,因此有node.js的优点-多线程。我喜欢将其用于长期连接,在这种连接中,我必须长时间交付数据。。我希望这能有所帮助:)在您的用例中,您是使用node.js作为唯一支持您的应用程序的web服务器,还是在您希望更好地处理json的时候使用它?@HowieCamp-例如,我可以想象node.js在stackoverflow.com这样的网站上用于实时更新、聊天和长时间轮询。