今天 Express 的作者 TJ Holowaychuk 发了一篇文章,正式宣告和 Node.js 拜拜了,转向 Go 语言。
Go verses Node
如果你在做分布式工作,你会发现 Go 语言丰富的并发原语非常有帮助。虽然我们用 Node 的 generator 也可以做类似的事,但在我看来,generator 永远只能做一半。没有独立的栈错误处理和报告,充其量是中等。我也不想再等(Node)社区花3 年去整理(改善),尤其是我们已经有了可用并不错的解决方案。
在我看来,Go 语言的错误处理非常出色。必须考虑每个错误,决定该怎么做,Node 在这方面挺好的。不过 Node 在下面这些方面,就……
- you may get duplicate callbacks
- ou may not get a callback at all
- you may get out-of-bound errors
- emitters may get multiple “error” events
- missing “error” events sends everything to hell
- often unsure what requires “error” handlers
- “error” handlers are very verbose
- callbacks suck
当然了,作者也说了,NodeJS 也挺好,但他在目前项目中是没兴趣再用了。他转向 Go 语言,也并不意味着 Go 就完美无缺。
另外,因为放弃 NodeJS,作者在找人维护。
I’ve been fighting with Node.js long enough in production now that I don’t enjoy working with it anymore unfortunately, so at least for now this my formal farewell! And more importantly I need maintainers!