javascript - 如何决定什么时候使用Node.js?

  显示原文与译文双语对照的内容
0 0

我新这种东西,但最近我一直听到很多关于好 Node.js 。 考虑到我很喜欢使用jQuery和 JavaScript,我不禁想知道如何使用 node.js 。 我想到的web应用程序是类似于 Bitly的东西- 需要一些内容,归档它。

在最近几天的作业中,我得到了以下信息。 Node.js

  • 是一个可以作为普通网络服务器运行的command-line工具,让它运行JavaScript程序
  • 使用出色的V8 JavaScript引擎
  • 当你需要同时做几件事时,是非常好
  • 是event-based所以所有出色的Ajax -like都可以在服务器端完成
  • 让我们在浏览器和后端之间共享代码
  • 让我们与MySQL聊天

我遇到的一些来源是:

考虑到 node.js 可以运行几乎 out-of-the-box 亚马逊ec2实例,我试图了解什么类型的问题需要 node.js 反对任何的强大的国王像 PHPpythonruby 。 我明白,它真正依赖于一门语言上的专业知识,但我的问题更多的属于: 什么时候使用特定的框架以及哪种类型的问题特别适合于?

时间: 原作者:

0 0

你做了很好的总结 node.js的事情。 我的感觉是,node.js 特别适合于你希望从浏览器返回到服务器的持久连接。 使用称为 "long-polling"的技术,你可以编写一个将更新实时发送给用户的应用程序。 在许多站点上进行长时间的轮询,比如 Ruby on Rails 或者 Django,会在服务器上创建巨大的负载,因为每个活动客户端都会消耗一个服务器进程。 这种情况相当于一个 tarpit 攻击。 当你使用类似 node.js的东西时,服务器不需要为每个打开的连接维护单独的线程。

这意味着你可以创建一个 browser-based聊天应用程序 node.js, 几乎没有系统资源为很多客户服务。 任何时候你想做这种 long-polling,node.js 都是一个不错的选择。

值得注意的是,ruby 和 python 都有这样做的工具,( eventmachineTwisted ),但是 node.js 做得异常好,从底层开始。 JavaScript在callback-based并发模型上非常好,它在这里很好。 同时,能够在客户端和服务器上使用JSON原生序列化和反序列化非常漂亮。

我期待在这里阅读其他的答案,这是个非常棒的问题。

值得指出的是,node.js 对于在客户端/服务器之间重用大量代码的情况也很重要。 Meteor 框架使得这很容易,很多人认为这可能是网站开发的未来。 我可以从经验中说,这是一个很多乐趣在 Meteor 编写代码,和一个大的一部分,这是花更少的时间思考怎样重组数据,那么在浏览器中运行的代码可以很容易地操纵它,通过它回来。

这里是一个关于金字塔和long-polling的文章,它很容易通过gevent的一些帮助来设置: 井字棋和长轮询金字塔

原作者:
0 0

我有一个真实的例子,我使用了 node.js 。 我工作的公司让一个客户想要一个简单的静态HTML网站。 这个网站是用来销售一个使用 PayPal的项目,客户也希望有一个计数器来显示售出商品的数量。 客户期望有大量的访问者访问这里网站。 我决定使用 node.js 和 Express.js 框架来创建计数器。

node.js 应用程序非常简单。 从 Redis 数据库中获取售出的项目数量,在商品售出时增加计数器,并通过 API服务向用户提供计数器值。

一些原因我选择使用 node.js

  1. 它非常轻巧和快速。 已经有在 200000访问这个网站在三周内,最小的服务器资源已经能够处理这一切。
  2. 计数器很容易成为实时的。
  3. Node.js 易于配置。
  4. 有很多可用的模块可用。 例如我为PayPal找到了一个 node.js 模块。

在这种情况下,node.js 是一个很棒的选择。

原作者:
0 0

使用NodeJS的原因:

  • 它运行 Javascript,所以你可以在服务器和客户机上使用相同的语言,甚至在它们之间共享一些代码( 例如。 用于窗体验证或者在两端呈现视图。

  • 传统的Java或者ROR框架相比,event-driven系统的速度为 ,同时处理大量请求。

  • 不断增长的,大部分都是在github上方便地托管。 有时你可以报告一个问题,并在几小时内发现它 ! 很好地把一切都放在一个屋檐下,有标准化的问题报告和容易的分叉。

  • 似乎相当适合敏捷开发和快速迭代产品。

原因不是使用 NodeJS:

  • 它运行的是 Javascript,没有compile-time类型检查。 对于大型、复杂 safety-critical系统或项目包括不同组织之间的合作,鼓励的语言合同接口并提供静态类型检查可能会节省你的一些调试时间( 爆炸 ) 从长远来看。 ( 尽管JVM被 null 卡住了,所以请使用Haskell为你的核React堆。)

  • 补充说,许多npm的包有点原始,并仍在快速发展。 一些图书馆为老年框架已经历了十年的测试和bugfixing,和非常稳定了。 Npmjs.org 没有机制来率包,已导致扩散或多或少的包做同样的事情,其中大部分已经不再维护。

  • 嵌套回调地狱。( 当然,有 20不同的解决方案,对此。。)

  • 日益增长的包可以让一个NodeJS项目出现迥异。 由于可用的大量选项,实现有很大的多样性( 例如。 Express/Sails.js/Meteor/Derby). 这有时会让新开发者更难在节点项目中跳转。 加入现有项目的Rails 开发人员的对比: 他应该能够很快熟悉这个软件,因为所有 Rails 鼓励应用程序使用相似的结构。

  • 处理文件可能有点痛苦。 things是粗俗,其他文种ina linefrom雷丁大学likeare事项的牵头机构,与 Node.js weird人家do最近stackoverflow问题 80with指 upvotes +。 文件中一次读取一条记录的方法不简单。 等等.

我喜欢 NodeJS,它既快速又狂野,有趣,但我对provable-correctness不感兴趣。 我们希望我们最终能够合并两个世界中最好的。 我渴望看到将来会有什么替代节点。 : )

原作者:
0 0

它可以用于

  • 高度事件驱动&的应用程序被大量的i/o 绑定
  • 处理与其他系统的大量连接的应用程序
  • 实时应用程序( node.js 是从底层设计的,易于使用) 。
  • 处理大量信息流和来自其他来源的信息的应用程序
  • 高流量,可以扩展的应用程序
  • 必须与平台 API &数据库进行通信的移动应用,而不必做大量的数据分析
  • 构建联网应用程序
  • 需要与后端交谈的应用程序经常

Prime-time公司为他们的移动解决方案依赖 node.js 。 检查为什么

LinkedIn 是一个杰出的用户。 他们的整个移动堆栈是基于 node.js 构建的。 他们从运行在每个物理机器上的15个实例运行,每个物理机器上有 15个实例,可以处理双倍的流量 !

eBay 发布了 ql.io,的web查询语言,它使用 node.js 作为运行时栈。 女性tunea ce handle developer-quality定期workstationubuntu积极 120,000造成对 node.js process,就让perconsuming并联每 2 reparacionkb记忆!

re-engineered使用 node.js 并将它的JavaScript处理推向服务器。

更多信息:http://blog.langoor.mobi/node-js-mobile-web-apps/web

原作者:
...