Page 151 - Node.js开发指南
P. 151
144 第 6 章 Node.js 进阶话题
访问http://localhost:3000了。
在添加了虚拟主机以后,还可以在Nginx配置文件中添加访问静态文件的规则(具体请
参考Nginx文档),删去app.js 中的app.use(express.static(__dirname + '/public'));。
这样可以直接让Nginx 来处理静态文件,减少反向代理以及Node.js 的开销。
6.4 Node.js 不是银弹
在本书正文的最后一节,我们打算讨论一下Node.js 不适合做什么,涉及它的不足之处
和一些弊端。
在西方古老的传说里,有一种叫做“狼人”的可怕生物。这种生物平时和人类没有什么
不同之处,但每到月圆之夜,他们就会变成狼身。当他们变成狼以后,兽性会不能控制,开
始袭击普通的人类。狼人给人类带来了巨大的恐惧,因为他们是无法被一般的手段杀死的,
只有用赐福过的银弹(Silver Bullet)才能杀死狼人。“银弹”因此成为了“任何能够带来极
大效果的直接解决方案”的代名词。
①
Fred Brooks 在1987 年发表了一篇关于软件工程的经典文章——“No Silver Bullet”(没
有银弹)。所谓的“没有银弹”指的就是没有任何一项技术或方法可使软件工程的生产力能
像摩尔定律一样在十年内提高超过十倍,不仅当时没有,现在也没有,今后也不会有。这篇
文章收录在《人月神话》(The Mythical Man-Month)一书中,被誉为软件工程领域的基本定
律之一。
Node.js 也不例外,它不是什么能够大幅度提高软件开发效率和质量的灵丹妙药。无论
使用什么语言、工具,所能改变的仅仅是开发的舒适程度和方便程度,而最终软件的好坏所
能改变的范围相当有限。任何试图以限制程序员犯错来提高软件质量的方式最终都已经以失
败告终。真正优秀的软件是靠优秀的程序员开发出来的,优秀的语言、平台、工具只有在优
秀的程序员的手中才能显现出它的威力。
Node.js 不适合做什么
Node.js 是一个优秀的平台,吸引大量开发者关注。它有许多传统架构不具备的优点,
以至于我们情不自禁地愿意用它来做开发。Node.js 和任何东西一样,都有它擅长的和不擅
长的事情,如果你非要用它来做它不擅长的事情,那么你将会陷入僵局之中。尽管你可以以
喜欢、它很新潮、性能高为借口,却不得不写出难看的代码。
和大多数新技术的本质一样,Node.js 也只是旧瓶盛新酒。大多数人事实上并不知道为
什么使用Node.js,只是因为你了解它,所以使用它,进而觉得它好,觉得它是最合适的。这
是一个必须跳出的误区,否则你就像是得了强迫症,不管三七二十一,遇到什么问题都用
——————————
① IBM 大型计算机之父,曾经开发过OS/360 等大型计算机的操作系统。