【外刊IT评论网】Node.js不是银弹,但它仍然是颗子弹

标签: 批评评论 node.js | 发表时间:2012-02-22 00:21 | 作者:Aqee
出处:http://www.aqee.net
[caption id="attachment_3582" align="alignleft" width="150" caption="本文的作者Craig"] 本文的作者Craig[/caption] 本文的作者 Craig 是一个住在纽约的自由软件开发者,他在最近的看到了一篇名为《 如果你正在使用Node.js,你就是误入歧途》的文章,文章对Node.js横加指责,Craig对此表示不满,于是写下了下面的文章:

  我真的不知道为什么有人这样的讨厌 Node.js。你也看见了网上有大量关于 Node.js 的文章和高调的言论,就好象 Node.js 是解决所有问题的良方。不是的。就像现有的很多其它框架和语言一样,它在某些事情上表现的很优良,而在其它事情上却很差。

  Node.js,单从我的理解上讲,它的设计目标是更好的通过网络快速、实时的传输少量字节信息。服务器端事件处理,即时消息应用,实时游戏,以及协作工具,这都是可以使用它的很好的例子。拿 Trello做个例子。Trello 是一个实时协作应用程序,使用 Socket.io 和 Node.js 来实现客户端之间的实时事件传播和状态变换。你可以使用频繁的探询或用ajax长周期探询来完成相同的事情,但这两种方法在服务器端占用了不必要的worker线程,需要处理额外的请求。Node.js 从某方面讲,本质上正是 擅长做这类事情。它的异步事件处理为基础的架构使得接收、处理、发送实时事件消息变得简单,容易,而且非常有速度。

node.js logo

  可同时,Node.js 不是、不是特别的擅长做计算。比如,如果你想做一个能返回斐波那契数列(Fibonacci)序列中第n个数的API,用 Node.js 必然不是一个很好的选择,为什么?所有的原因都在于,人们之所以要使用 Node.js 都是为了一个避免去等待什么事情。相比等待一个数据库返回查询结果,Node.js的做法是触发一个查询动作,设置一个回调事件。这样,当查询在执行时,你的程序可以去做其它事情(比如处理其它请求)。这使得 Node.js 看起来非常的快,通常不需要使用多个CPU。然而,在我们的这个计算斐波那契数列的例子中,程序不需要去等待 任何事情。这个API返回结果的速度直接依赖于计算的速度。所以,如果用另外一种计算能力更强的语言,比如Haskell或Scala,更合适。

  所有的这些说明了什么观点?观点就是,如果一个框架只是为了解决任务A而设计,而你却抱怨它不能很好的完成任务B,这是愚蠢而荒谬的。Node.js 在它被设计去做的事情上表现的异常优秀——所以,就不要去嚷嚷它不擅长做其它事情了。


本文来自 外刊IT评论网( www.aqee.net),原始地址: Node.js不是银弹,但它仍然是颗子弹

相关 [it node js] 推荐:

node js 断点调试

- - Web前端 - ITeye博客
大部分基于 Node.js 的应用都是运行在浏览器中的,. 例如强大的调试工具 node-inspector. node-inspector 是一个完全基于 Node.js 的开源在线调试工具,提供了强大的调试功能和友好. 的用户界面,它的使用方法十分简便. 首先,使用 npm install -g node-inspector 命令安装 node-inspector,然后在终.

什么是Node?

- We_Get - 博客园新闻频道
译者按:前不久Oreilly出了一本小册子“What is Node?”,扼要的讲解了Node的身世和所适用的场景,作者文笔轻松流畅、内容充实,是非常难得的学习资料.   译文全文:http://jayli.github.com/whatisnode/index.html.   作者:Brett McLaughlin ,原文:What is Node?.

Node入门

- - CSDN博客编程语言推荐文章
作者:  Manuel Kiessling. 翻译:  goddyzhao &  GrayZhang &  MondayChen. 本书致力于教会你如何用Node.js来开发应用,过程中会传授你所有所需的“高级”JavaScript知识. 本书绝不是一本“Hello World”的教程. 你正在阅读的已经是本书的最终版.

浅析Hadoop Secondary NameNode,CheckPoint Node,Backup Node

- - CSDN博客云计算推荐文章
Hadoop SecondaryNameNode并不是Hadoop 第二个NameNode,它不提供NameNode服务,而仅仅是NameNode的一个工具. 这个工具帮助NameNode管理Metadata数据. NameNode的HDFS文件信息(即Metadata)记录在内存中,client的文件写操作直接修改内存中的Metadata,同时也会记录到硬盘的Edits文件,这是一个Log文件.

[译]什么是Node?

- blacktulip - Taobao UED Team
译者按:前不久Oreilly出了一本小册子“What is Node?”,扼要的讲解了Node的身世和所适用的场景,作者文笔轻松流畅、内容充实,是非常难得的学习资料. 译文全文:http://jayli.github.com/whatisnode/index.html. 作者:Brett McLaughlin ,原文:What is Node?.

用node作桌面开发

- InterMa - CNode社区
node的定位是,server-side javascript. 但程序员最爱做的事,就是把一个东西用在不该用的地方. 那么,可以把node用在桌面开发上吗. 把Javascript用在桌面开发上,早有先例,比如GTK+的gjs,还有Qt的QML(顺带一提,QML代表着桌面开发的另一个方向,a promising way),GNOME3中,也用javascript作为桌面插件的开发语言.

Vercel 部署 Node 服务

- - 掘金 前端
之前在写 面试常客:HTTP 缓存时,曾经就强缓存和协商缓存写过两个demo,但缓存要在服务端做,只能贴上代码,不能在网页上感受(虽然我贴了gif). 笔者的所有 demo 例子都放在 github page 上,其特点是不需要服务器即可部署静态资源,但它不具备部署服务端应用能力. 最近笔者在了解 CI/CD 方面的知识点,想起了 Vercel,就想着能否将服务端应用架在 vercel 上呢.

WebView JS 交互

- - ITeye博客
WebView加jquery做页面会怎么样呢. // 创建WebView对象. // 把programList添加到js的全局对象window中,. // 这样就可以使用window.programList来获取数据. * 定义js回调java函数. // 绑定键盘的向上,向下按钮事件触发相应的js事件.

無痛安裝 NodeJS 和 Node Framework Express

- Hming - 小惡魔 - 電腦技術 - 工作筆記 - AppleBOY
直接到官網下載 Stable 的版本吧,目前是 node-v0.4.10.tar.gz,也可以先看看 API Document. 安裝 Ububtu 相關套件. 下面會使用最原始的編譯方式,所以必須安裝 g++ 套件,否則下 ./configure 的時候,會吐出來沒有安裝過的套件. 兩種方法:1.用 apt-get install nodejs 2.