问题标签 [koa]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
ecmascript-harmony - Co.js 应用报告“TypeError:无法调用未定义的方法‘应用’”
当我尝试运行我的 Co.app 时,我得到
ecmascript-harmony - Co.js 和 bluebird.js——有什么区别?
有人可以帮我理解在 ES6 Harmony 中使用 Koa.js 和 Bluebird.js 之间的区别。具体怎么做
相比于,
看来 Koa 应该使用 Bluebird 而不是重新创建轮子。有什么不同?
javascript - 请求正文在 KOA 中未定义
我有像下面这样的KOA :
然后通过 jquery ajax 发送一个 post reqeust :
但在 koa 和this.req
我找不到我的数据。在谷歌浏览器开发者工具中,我可以看到标题并且一切都发送正常,但我在 koa 中看不到它。
更新
正确的是:
node.js - 将回调转换为 thunk
我将猫鼬与 koa.js 一起使用(可能是一个糟糕的选择,但必须坚持下去)。我最初的回调函数是:
这应该在正常的快递世界中有效,但后来我意识到我需要以 thunk 的形式重写,所以我目前的尝试是
但这会从第一个 mongoose 调用的 User.findone 中返回用户详细信息。其他任何事情似乎都被忽略了。谢谢
koa - 使用 Koa,我如何获取帖子变量
假设我想在不使用扩展程序的情况下将一个简单的变量发布到 Koa 应用程序,我该怎么做?
node.js - Koa / Co / Bluebird 或 Q / Generators / Promises / Thunks 相互作用?(Node.js)
我正在研究部分使用 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(?) 中使用。如果是这样,那么效果如何?
谢谢大家!
node.js - 蓝鸟而不是 Koa 中的 Co?
似乎 Bluebird 在生成器/协程相关功能中与 Co 重叠。Bluebird 被认为具有出色的速度性能,所以为了讨论,(假设上述重叠前提是正确的)如果想在 Koa(Node.js 上下文)中用 Bluebird 代替 Co,是否可以在不降低 Koa 的情况下轻松完成功能,如果是这样怎么办?
(我的猜测是它实际上无法完成,因为它似乎 Koa 是基于 Co 构建的并且没有明确地公开它,而是将其暴露出来。这样的替换似乎无异于用 Bootstrap 中的其他东西替换 jQuery)
node.js - Koa 上下文中协程和生成器的区别?
协程和生成器之间的区别对我来说是模糊的。
如果有人能阅读文章Callbacks vs Coroutines - A look at callbacks vs generators vs coroutines,我将不胜感激,网址为https://medium.com/code-adventures/174f1fe66127
...然后解释生成器和协程之间的差异和竞争(标题确实使用术语“vs”)在本文中说明/呈现的位置和方式?更一般地说,我的问题是这种区别实际上是什么,并且这种区别是否适用于在 Koa(在 Node.js 中)构建应用程序时处理异步请求的编码模式可能有何不同?
express - 中间件授权
我有一个应用程序需要根据请求用户和请求的资源之间的关系进行授权。访问详细信息封装在要请求的资源中。
让我们走这条路线PATCH /articles/1
:文章有一个作者/所有者和一组编辑,他们都有权更新文章。请求用户经过身份验证,可以是作者或编辑之一。否则,应拒绝访问。
--
我有两个想法:
中间件中的授权:
这意味着在控制器可以做它的事情来聚合资源之前,中间件已经需要资源。但是,有时(例如在使用 MongoDB 聚合框架时)控制器将无法重用资源并需要再次往返数据库。控制器中的授权:
只要资源可用/聚合,就可以在控制器中执行授权。但这会将这部分授权与身份验证和基于角色的访问控制分开,我已经作为中间件使用。
我个人认为中间件方式更有意义,但是数据库将由另一个 PaaS 托管,即使在同一个数据中心内,也可能会有一些延迟。
如果请求相关资源(例如评论)怎么办?这将涉及一些特定的逻辑,这些逻辑来自对存储访问详细信息的文章的评论。并且会使我的身份验证中间件不那么通用。
--
还有其他选择吗?
--
该应用程序使用Koa,但这些概念可能适用于所有其他中间件支持框架,例如Express或其他框架。
请注意,我不是在询问身份验证或经典的基于角色的访问,例如由connect-roles
.