我正在研究部分使用 Koa 构建一个 Web 应用程序,但我不太了解如何、何时以及为什么在支持性“使异步更容易”的技术/方法之间进行选择和应用(下面列出)。
总的来说,网络上关于这个主题的不同指导仍然使事情变得模糊,特别是在不断发展的最佳实践方面,或者至少是更好的实践,以及在什么情况下。网络上似乎很少或根本没有将所有内容放在上下文中。
我希望对这个庞大的帖子的回应可以纠正这一点。另外,也许下面的问题可以激发某人写一篇详尽的博客文章或类似的文章来解决这个问题。我的感觉是,我什至不是唯一一个会从中受益的人。
因此,如果聪明的社区可以帮助回答并澄清与下面列出的技术有关的以下问题(粗体字),我会很高兴:
--a) 它们如何以及在什么情况下(如适用)相互补充、补充、替代和/或重叠解决方案?
-- b) 在速度-性能、错误处理的便利性和调试的便利性方面,它们的权衡是什么?
-- c) 何时、何地以及为什么使用“这个”与“那个”技术、技术组合和/或方法相比更好?
-- d) 哪些技术或方法(如果有的话)可能是“暗星”。
(希望作为答案一部分的意见可以得到很好的解释。)
===============================
技术:
*考阿*
我的理解:
Koa 是构建 Node 应用程序的最小基础,旨在利用 ECMAScript-6 功能,其中一个功能特别是生成器。
* 合作 *
我的理解:
-- Co 是一个用于运行 ECMAScript-6 生成器的实用程序库(它是 Node .011 和谐的本机),其目标是减轻一些/大部分(?)需要编写样板代码来运行和管理生成器。
-- Co 本质上是 Koa(?)的一部分。
具体问题:
-- 如果以及如何在 Koa 中与在非 Koa 上下文中不同地使用 Co。换句话说,Koa 是不是完全门面公司?
-- 如果有/曾经有更好的生成器库,是否可以在 Koa 中将 Co 替换为其他类似的生成器库?有吗?
* Promise 库,例如“Q”和 Bluebird *
我的理解:
-- 在某种意义上,它们是用于实现 Promises/A+ 规范的“polyfills”,如果且直到 Node 原生运行该规范。
-- 他们还有一些非规范的便利实用程序来促进使用承诺,例如 Bluebird 的 promisfyAll 实用程序。
具体问题:
-- 我的理解是 ECMAScript-6 规范确实/将在很大程度上反映 Promises/A+ 规范,但即便如此,Node 0.11v 和谐并没有原生地实现 Promises。(这是正确的吗?)但是,当它出现时,Q 和 Bluebird 等技术会退出吗?
-- 我读过一些大意是“Q”和Bluebird 支持生成器。这是什么意思?这是否在一定程度上意味着,例如,它们在某种程度上提供了与 Co 相同的效用,如果是,那么到什么程度?
* 重击和承诺 *
我想我对它们是什么有一个公平的处理,但希望有人能提供一个简洁明了的“电梯间距”定义,当然,如上所述,解释何时使用一个与另一个 -在 Koa 上下文中,而不是在其中。
具体问题:
-- 使用 Bluebird 的 promisfy 之类的东西,而不是使用 Thunkify (github com/visionmedia/node-thunkify) 的利弊?
===============================
为了给这篇文章及其问题提供更多背景信息,如果可以讨论和对比以下网页中介绍的 Koa 技术(尤其是在优缺点的基础上),这可能会很有趣:
- a) www.marcusoft 。net/2014/03/koaintro.html (thunk 或 promises 在哪里,或者我没有看到什么?)
- b) 强循环。com/strongblog/node-js-express-introduction-koa-js-zone (同样,thunk 或 promises 在哪里?)
- c) github 。com/koajs/koa/blob/master/docs/guide.md(“下一个”参数等同于什么,以及它的设置和位置?)
-- d) blog.peterdecroos 。com/blog/2014/01/22/javascript-generators-first-impressions (不在 Koa 上下文中,但展示了 Co 与 Promise 库(Bluebird)的使用,所以我假设这里介绍的技术/模式借给自己在 Koa(?) 中使用。如果是这样,那么效果如何?
谢谢大家!