这是这篇文章《为什么我从Python转换到Node.js》的后续。《为什么我从Python转换到Node.js》一年多前写的,主要是对Python很失望,决定试试Node。一年的内部CLI工具、客户项目和更新公司产品的经验正是我所学到的。不仅是Node,JavaScript也很不错。容易学,但不可能精通Node很容易学。特别是如果您已经了解一些JavaScript。谷歌一些初学者教程,尝试使用Express,你就可以开始了。然后你意识到你需要选择一个数据库。没问题,我们可以搜索npm。哦,已经有很多优雅的SQL包了。然后你会发现所有的ORM工具都很糟糕,而基本的驱动程序是你最好的选择。现在,您无法实现冗余模型和验证逻辑。不久之后,您开始编写更复杂的查询并开始迷失在回调中。您终于摆脱了回调地狱,开始使用promises库。现在,您几乎可以“承诺”一切并享受一杯饮品。所有这一切都表明Node生态系统感觉它一直在向前发展。但不是很好。“胜过”旧工具的新工具似乎每天都在出现。总会有一个新的闪亮的东西取代另一个。您会惊讶于发生这种情况是多么容易,而且您和社区似乎都鼓励这样做。你用Grunt!?每个人都使用Gulp!?不要等待,立即使用本地NPM脚本!每天都有成千上万的人从NPM下载包含琐碎代码(即不超过10行代码)的包。诚实地!?您是否需要依赖项来进行数组类型检查?这些包被一些大工具使用,比如React和Babel。您永远无法以极快的速度掌握某些东西,更不用说可能不稳定的依赖关系了。祝你好运处理错误。您是否曾经使用过另一种语言,如Python、Ruby或PHP,并期望抛出和捕获错误,甚至从函数返回错误作为处理错误的简单方法?Node不是这样。相反,您需要在回调(或承诺)中传递错误——是的,不抛出异常。除非您了解回调以外的内容并尝试跟踪堆栈跟踪,否则这不会起作用。更不用说,如果你忘记返回错误的回调,那么它会继续运行并在你返回原始错误设置后触发另一个错误设置。你需要让你的客户双倍的钱来弥补花在调试上的时间。即使您设法为自己的错误提出了可靠的标准,您也无法确认(不阅读源代码)您安装的许多NPM包都遵循相同的模式。这些问题导致使用记录问题的“catchall”异常处理程序。请记住,Node是单线程的。如果有什么东西锁定了进程,一切都会崩溃。但是使用Forever、Upstar和Monit很酷,不是吗?回调、承诺或生成器!?为了处理回调地狱、错误处理和通常难以阅读的逻辑,越来越多的开发人员转向了Promises。它基本上是一种编写代码的方式,看起来像没有回调的疯狂逻辑的同步代码。不幸的是,没有任何“标准”(就像Javascript中的其他人一样)来实现或使用Promises。现在最明显的库是Bluebird。它非常好,速度快,并且足以完成工作。但是,我发现必须将需求封装到Promise.promisifyAll()中特别麻烦。在大多数情况下,我会使用良好的异步库来避免回调。感觉更自然。***,我使用Node的经验是Generators越来越流行。我对Generators了解不多,所以我不能提供太多反馈。真的很期待听到您使用Generators的经验。标准差***让我沮丧的一件事是缺乏标准。每个人似乎对如何处理上述观点都有自己的看法。回调?承诺?错误处理?构建脚本?无尽的。那只是抓住显示的内容。他们似乎在如何编写标准JavaScript代码方面也存在分歧。在Google上快速搜索“JavaScript编码标准”,您就会明白我的意思。我意识到许多语言没有严格的结构,但它们通常有由语言的实际维护者创建的标准指南。我认为只有一个真正对JavaScript有帮助,它是由Mozilla编写的。***关于Node的一些想法我花了一年的时间试图让Javascript,更具体地说是Node为我们的团队工作。但不幸的是,在此期间,我们更多的时间花在了仔细阅读文档、提出标准、讨论库和调试琐碎的代码上。那么我会推荐它用于量产吗?绝对不。有没有其他人尝试这样做?当然有。我也试过了。但是,我推荐使用JavaScript进行前端开发,例如Angular和React(或者您可能有其他选择)。另外,我认为Node适用于简单的后端服务器,服务器主要用于webSockets或APIray。使用Express可以轻松快捷地完成此操作,我们将其用于我们的QuoterobotPDF处理服务器。这是一个文件,包含186行代码,包括空格和注释。节点真的很容易使用。回到Python,你可能会想,我现在在做什么?好吧,我仍然在用Python编写我的网络产品和API的主要部分。主要在Flask或Django中,使用Postgres或MongoDB。它经受住了时间的考验,有一些很棒的标准和库,易于调试且性能良好。当然它也有它的缺点。但是这个世界上没有完美的东西。出于某种原因,Node引起了我的注意并让我着迷。我不后悔接受它,但我确实觉得我不应该花那么多时间在上面。我希望JavaScript和Node将来会有所改进。我很想重温它。请告诉我你的经历?你遇到过和我一样的问题吗?您最终是否决定切换回您感觉更舒服的语言?翻译链接:http://www.codeceo.com/article/my-nodejs-1-year.html英文原文:AFTERAYEAROFUSINGNODEJSINPRODUCTION
