Node.js 有什么弊端

JavaScript011

Node.js 有什么弊端,第1张

此文为《为什么选择 Node.js》姊妹篇,简单聊一下 Node.js 的缺点。Node.js 不适合 CPU 密集型场景。Node.js 的开发语言是 Javascript,入门容易,想要深入掌握还得循序渐进,很多新晋的开发人员对一些概念一知半解(包括我也是)。前后端都会的伪全栈,一般情况下,在知识的深度方面,不如只精通一端的开发人员。npm 社区虽然繁荣,但是包的质量良莠不齐,而且优秀者属于少数。

为什么 Node.js 很糟糕

注:这是一篇翻译文章,不代表我们的观点!

Node.JS是一个非常糟糕的平台,他的糟糕之处体现在非常简单而重要的一个方面,就是他的核心工作机制:基于I/O的回调。

我想大家现在都知道。这种方式编写代码是很糟糕的。一段时间前我注意到了这个事情,

在使用了Go语言几周后我喜欢上了他。使得,我承认Go语言比python少了一些动态特性,而导致做开发的时候可能会多出一些任务(主要是做一些样

板)。Go比Python还少了一些“magic”的性质,从而代码具有明确性。

Go的这种明确性使得你更容易的阅读源代码。因为没有了这些“magic”特性,你就

弊,Python的开发速度要快,而Go的代码维护要容易。

可是,当你把这些事情往Node.JS上想的时候,你会发现没有了代码可维护性、没有了安心、得到了速度。可是我想说你真的得到了速度么?因为在此同时你同时失去了简易开发和简单维护。

我花费了很长时间去学习Node.JS,并试着做了一些东西,但是并没有成功,我是真的不知道从何开始。

通常我评价一个技术的好坏,是通过它自身的一些性质。是否容易上手、是否能帮助我提高

生产力、文档做的好不好、有没有帮助资源。很显然Node.JS没能通过上面的测试。在我学习了那么久之后我仍然没有做出一个产品。API参考虽然已经文

我看到HN(Hacker News)上的一些人说Node.JS有多好。我当时认为这些人都是很聪明的,Node.JS应该是一个不错的平台。很不幸,我花费了几个月时间最终发现这是一个非常糟糕的平台。我没能写出一点读起来很舒服的代码,(当然写起来也是很不舒服)

我开始怀疑我的编程能力!

当然,一些读者可能会说:我们将Node.JS用到的生产环境,所以这是你的无能。

也好,我接受,可能是我钻到某个牛角尖里了。但是我所说的权衡利弊的问题仍然成立,为了满足所承诺的可扩展性,你必须牺牲代码的可读性和可写性。而在Python下你可以非常方便的扩展。你可用gevent

,一个基于网络库/服务器的并发框架。这就意味着IO阻塞将不再是问题,剩下的唯一问题是python的解释器,而这也可以通过分布式多服务器来解决负载均衡问题。

现在只有一件事情是Node.js可以而Python不可以的,那就是

websockets。实际上我不确定是不是python确实不能,在Google后也许会找到一些方案。当然

Go可以很容易的实现websockets(go get code.google./p/go./websocket)

即便你认为websocket就是你使用Node.js的原因,但是我想说你仍然可以选择使用Node.js实现websocket,而其余部分都是用Python来做。这里有个例子

。是的,这个架构设计(联合Python和Node.js)可能是有点令人费解,但是还是要比使用Node.js开发整个web程序要好的多。

为什么最近天气很糟糕

那跟心情有。心情好,看见乌云和下雨都是美丽。快乐是一天,不快乐也是一天,为什么要选择悲伤度过呢?人生不满百,莫怀千岁忧。把快乐的钥匙掌握在自己手中吧!祝你快乐!

为什么这些UI设计很糟糕

那些糟糕的UI设计大多数没有创意,不注重细节,没有让人眼前一亮的元素构成,多花些心思在细节上自然能博人眼球,但是也要注意不要过多的细节,那样会使得整个作品主体不明。

Nitendo Switch品控很糟糕?

毕竟第一款产品不会太完美。有反应摇杆,外壳质量等问题的。很糟糕倒不至于,但评价确实不是太好。感觉不是太“精密”那种

15岁、皮肤很糟糕、

生活作息很重要喔~

还有因为你年纪还小

用点天然的的好,

用用洗面奶+爽肤水+隔离霜+卸妆油就可以了

皮肤水分足够 密度变小 黑头 豆豆 毛孔 随之都能漫漫解决了

偶尔用用补水面膜、或者DIY一些天然面膜就可以啦

生病时你为什么会感觉很糟糕

你好朋友

家家有本难念的经,这本经由不得你念不念‘总在你的命运中逃也逃不了的

生容易,活容易,生活却不容易。别发愁,这个社会的和你差不多还很多,但是都快乐的生活着,并不是每个人都能成功的,只要你努力对待每件事情,对生活认真一点,只要你认真对待每一天,不管你的人生怎么样,我相信都是精彩的。加油吧!。

宝马528很糟糕吗

2011宝马528Li 好!3.0T L6,8AT!

代步推荐:2012款进口福特福克斯

2011款大众高尔夫

2011款起亚K2!

啊!为什么白羊座的女生,很糟糕啊?

谁说的?不糟啊 之所以说白羊座的人值得爱,并不是因为他们有多优秀,而恰恰是因为他们的不完美……

在白羊座的字典里永远没有“利用”两个字,他们不懂得什么叫阿谀奉承,什么叫阳奉阴违,白羊座的人选择人做朋友永远是看你是否“值得交”,而不是看你是否“有价值”。

在白羊座的字典里永远没有“上赶着”三个字,白羊座的人永远只会去留意那些善意的向他们示好的人们,而不会为了达到某种目的去刻意与人攀关系。

白羊座的人并不是真的“很傻很无邪”,而是“很真很潇洒”,他们并不是不了解现实的残酷,并不是看 *** 人与人之间利益的熏染,而是他们不想争,不想争并不代表没有野心,不想争并不是因为无能,而是在他们看来,一辈子的友情远远值钱于那短暂的利益……

就算有一天白羊座的人想去争了也是选择“增加自己绳子的长度”,而不是费劲脑汁地扯断别人的绳子……白羊座的人永远不会为了所谓的“自己的利益”而与朋友撕破脸,他们这种不易被察觉的豁达是一般星座人比不了的。

永远不要和白羊座的人玩心机,他们不计较不代表他们傻,不要因为自己占了白羊座便宜就沾沾自喜,不要以为你伤害了重友情的他们他们就会为此而苦恼……白羊座的热情和绝情只在转瞬间,他们只在乎在乎他们的人,对于他们来说被骗点感情和钱不算什么,说的再讽刺一点就是多你一个不多,少你一个不少,如果你选择背叛出卖他们,都不用他们刻意的把你当屁放了,你自己就顺理成章的把自己归为不是个玩意那堆里了。

你可以有本事让白羊座的人“认输”“认栽”“认倒霉”,但是白羊座人的字典里永远没有“认错”两个字,明明他们也知道是自己的错。请原谅白羊座人这个最大的毛病——好面子,其实他们心里特别想跟你和好,所以这个时候希望你能给他们一个小小的台阶下……我敢说他们马上就会主动反省,向你道歉的。

白羊座的人脾气急,易冲动。与白羊座的人相处要时刻绷紧神经,要紧跟他们的步伐,这样才会让他们感觉到与你合作的痛快、默契,合拍。

白羊座的人永远都是刀子嘴豆腐心,他们最毒的地方永远都是那张一天白呼个没完没了的嘴,请不要怕与白羊座的人争吵,因为只要他们还能跟你说话,就说明事情还没到不能商量不能解决的地步,说明他们还没有真的生气。真正被惹怒的白羊座往往是连瞅都不稀瞅你的。

白羊座永远都是那么的倔强,如果他们讨厌一个人,就一定要表现出来,一定要让那个人知道,就算水深火热当中,也绝对要咬紧牙关绝不张口向那个人请求支援……所以说抗战时期的白羊座如果被俘虏了绝对是死的最惨的那批。

白羊座的人最为真实,他们把怒哀乐都表现在脸上,不懂得什么是伪装,什么叫强颜欢笑,从来都是有一说一,有二就不会说三。

就算你很 *** ,或很坏,白羊座的人都不会介意,只要你表现的真实,骚但不装清纯,坏但不藏心机,就会被白羊座的人欣赏。

如果你与他们冷战很久想要缓解,慢慢来,别太热情,会吓到小白羊的,会让他们觉得受宠若惊,他们不太会表达自己的感情,不知道怎么去回报别人,可是对他们好的他们会永远记得,有好东西一定与你分享,如果你们分享不到他们的东西,那一定是因为他们没钱而不是不想花钱。

白羊座的人在正常情况说出的话就一定是真的,请相信他们。白羊座的人最讨厌的就是自以为是的人,那种总是用自己的思想去揣摩他们心理得人。他们最讨厌别人对他们的话不相信,然后说什么“你是不是这么想的你心里清楚”之类的话……白羊座的人会觉得特别委屈。要记住社会再黑暗,人们再圆滑,也还是有一些人保持心中的那一份净土,对别人坦诚的,那就是白羊座。

白羊座的人很难做人的,其实他们骨子里相当孤傲的,很喜欢安静,不喜欢多说话,可是又不得不想让周围的人因为他们的存在而感到快乐和幸福!所以,稍微稳当点的白羊座会被人说成清高,活泼点的就被人说成“二”……请理解白羊座,清高的并没有瞧不起谁,“二”的只是为了你们能开心,幸福。

为什么说惊天动地官服很糟糕?

挂太多 商店东西昂贵

我们这种老玩家 越玩越寒心

东西贵 就先不讲

辛辛苦苦的练技能

人家用挂练 你说你心里能平衡吗?

人家挂50双长老的时候,你呢?

100级才双高!!

你100级了人家170了早,人家一身ZF轻盈,你呢?白的一片!

你有1000块的话告诉你,GM号送你

我用 Node.js 开发了 Am I Hacked,算是有一点用 Node.js 支持大流量的经验。先列一些数字

服务器是 Linode 512,也就是 Linode 上最低端的 VPS ,只有 512MB 的内存。

数据库,Node.js 程序和静态文件都放在同一台服务器上。

大部分查询耗时 20-100ms 。少数查询由于缓存 miss 较多,耗时会高达500ms。

最高日PV超过了一百万,Google Analytic 上显示的同时在线人数最高达2000。

平均每秒能完成20-30次查询,瓶颈在磁盘IO,CPU几乎无压力。

虽然压力如此之大,首页几乎都能在一秒内打开,查询也会在3秒内返回。

Node.js 程序占用内存 90MB-110MB,剩余内存都被磁盘缓存占据。

以我的了解,Python 和 Ruby 上的非 Event Driven 的 Framework 根本不可能达到这样的性能。

然后说说 Node.js 的其他优点

Node.js 的架构与 Django, Rails 等传统的 Framework 不同,不需要放在 Nginx / Apache 后,利用 WSGI, CGI 之类的接口一板一眼的 [接受Request] ->[运行程序逻辑] ->[生成并返回Response]。这是一个巨大的变化,之前一些无法想象的功能都有可能实现了。比如 https://github.com/Miserlou/DirtyShare 可以用浏览器实现 P2P 的文件传输。正因为 Node.js 可以更精细的控制 Request 和 Response 的时间和内容,websocket 似乎天生就是为 Node.js 而生的,而配合 http://socket.io 这个神奇的库之后,在 realtime webapp 这个领域,Node.js 已经没有对手了。

Node.js 的包管理器 npm 设计得比 python 和 ruby 好很多。有很多的 module 开发者。

当然也有一些缺点