問題タブ [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: 未定義のメソッド 'apply' を呼び出せません」と報告する
Co.app を実行しようとすると、
ecmascript-harmony - Co.js と bluebird.js -- 違いは何ですか?
Koa.js と Bluebird.js を ES6 Harmony で使用することの違いを理解するのを手伝ってくれませんか。具体的には、どのように
と比較して、
Koa は、ホイールを再作成するのではなく、Bluebird を使用する必要があるようです。何が違うの?
node.js - コールバックをサンクに変換
私はkoa.jsでマングースを使用しています(おそらく悪い選択ですが、それに固執する必要がありました)。私の最初のコールバック関数は次のとおりです。
これは通常のエクスプレスの世界では機能するはずでしたが、後でサンクの形で書き直す必要があることに気付いたので、現在の試みは
しかし、これは最初のマングース呼び出しの User.findone からユーザーの詳細を返します。他のものは無視されているようです。ありがとう
koa - Koa を使用して、投稿変数を取得するにはどうすればよいですか
拡張機能を使用せずに単純な変数を Koa アプリに投稿したいとします。
node.js - Koa / Co / Bluebird または Q / Generators / Promises / Thunks の相互作用? (Node.js)
私は Koa を使用して Web アプリを構築することを検討していますが、「非同期を簡単にする」さまざまなサポート技術/アプローチの中から選択し、適用する方法、時期、理由についてはよくわかりません (以下に記載されています)。
全体として、この主題に関する Web 上のさまざまなガイダンスは、特に進化するベスト プラクティス、または少なくともより優れたもの、およびどのようなシナリオであるかに関して、いまだに曖昧なままです。ウェブ上には、すべてを文脈に当てはめているものはほとんど、あるいはまったくないように思われます。
この大きなお尻の広がりのある投稿への反応がそれを修正できることを願っています. また、以下の質問は、誰かがこの問題に対処するための完全なブログ投稿などを書くきっかけになるかもしれません. 私の感覚では、その恩恵を受けるのは私だけではありません。
そのため、明るいコミュニティが、以下にリストされているテクノロジーに関する次の質問に答えて明確にするのに役立ちます (太字で示されています)。
-- a) どのように、またどのような状況で (該当する場合)、それらは相互に補完、補足、代替、および/または重複する解決策となりますか?
-- b) 速度性能、エラー処理の容易さ、およびデバッグの容易さに関して、それらのトレードオフは何ですか?
-- c) いつ、どこで、なぜ「あれ」よりも「これ」のテクノロジー、テクノロジーの組み合わせ、および/またはアプローチを使用する方がよいのでしょうか?
-- d) もしあれば、どの技術またはアプローチが「薄暗い星」である可能性がありますか.
(回答の一部である意見がうまく説明できることを願っています。)
==============================
テクノロジー:
*コア*
私の理解:
Koa は、ECMAScript-6 機能 (特にジェネレーターの機能の 1 つ) を利用するように調整された Node アプリをビルドするための最小限の基盤です。
* コ *
私の理解:
-- Co は、ECMAScript-6 ジェネレーター (Node .011 ハーモニーのネイティブ) を実行するためのユーティリティのライブラリであり、ジェネレーターを実行および管理するためのボイラープレート コードを作成する必要性をある程度 (?) 緩和することを目的としています。
-- Co は本質的に Koa(?) の一部です。
具体的な質問:
-- Koa での Co の使用方法と、非 Koa コンテキストでの使用方法の違い。言い換えれば、Koa は完全に Co の正面を向いているのでしょうか?
-- より優れたジェネレーター ライブラリがある場合、Co を Koa のジェネレーター ライブラリのようなものに置き換えることはできますか? いずれかがあります?
* "Q" や Bluebird などの Promise ライブラリ *
私の理解:
-- それらはある意味では、Promises/A+ 仕様を実装するための「ポリフィル」です (Node がその仕様をネイティブに実行するまで)。
-- Bluebird の promisfyAll ユーティリティなど、プロミスの使用を促進するための非仕様の便利なユーティリティがさらにいくつかあります。
具体的な質問:
-- 私の理解では、ECMAScript-6 仕様は Promises/A+ 仕様を大幅に反映している/反映する予定ですが、それでも Node 0.11v の調和は Promises をネイティブに実装していません。(これでいいの?)しかしそうなったらQやBluebirdなどの技術はなくなるのでしょうか?
-- 「Q」と Bluebird がジェネレーターをサポートしているという趣旨の記事を読んだことがあります。これは何を意味するのでしょうか?たとえば、それらが Co と同じ有用性をある程度提供したということは、部分的には意味するのでしょうか。
*サンクと約束*
私はそれらが何であるかを公正に把握していると思いますが、誰かがそれぞれが何であるかについて簡潔で明確な「エレベーターピッチ」の定義を提供できることを願っています。 Koa コンテキストではなく、Koa コンテキストで。
具体的な質問:
-- Bluebird の promisfy のようなものを使用することと、Thunkify (github com/visionmedia/node-thunkify) を使用することの長所と短所は?
==============================
この投稿とその質問にさらにコンテキストを与えるために、次の Web ページに示されている Koa の手法について議論し、対比することができれば (特に長所と短所に基づいて) 興味深いかもしれません。
-- a) www.marcusoft . net/2014/03/koaintro.html (サンクまたはプロミスはどこにあるのか、または何かが表示されないのですか?)
-- b) 強いループ。com/strongblog/node-js-express-introduction-koa-js-zone (繰り返しになりますが、サンクやプロミスはどこにありますか?)
-- c) github . com/koajs/koa/blob/master/docs/guide.md (「次の」引数は何と同等で、何が設定され、どこに設定されていますか?)
-- d) blog.peterdecroos . com/blog/2014/01/22/javascript-generators-first-impressions (Koa のコンテキストではありませんが、Promise ライブラリ (Bluebird) を使用した Co の使用を提示しているため、ここで提示されている手法/パターンが役立つと想定しています)それ自体を Koa で使用する(?) 場合、どのようにうまくいきますか?
皆さんありがとう!
node.js - KoaのCoの代わりにBluebird?
Bluebird は、ジェネレーター/コルーチン関連の機能で Co と重複しているようです。Bluebird は並外れた速度性能を持つと信じられているため、議論のために (前述の重複前提が正しいと仮定して) Koa (Node.js コンテキスト) で Co を Bluebird に置き換えたい場合、Koa のパフォーマンスを低下させることなく簡単に実行できますか?機能性、もしそうならどのように?
(私の推測では、Koa は Co の上に構築されており、Co を明示的に公開していないように見えるため、実際には実行できないと思いますが、それをファサード化します。そのような置換は、jQuery を Bootstrap で別のものに置き換えるのと同じように思われます)
node.js - Koaコンテキストでのコルーチンとジェネレーターの違い?
コルーチンとジェネレーターの区別は、私にはあいまいです。
https://medium.com/code-adventures/174f1fe66127の「Callbacks vs Coroutines - A look at callbacks vs generators vs coroutines」という記事を読んでいただければ幸いです。
...そして、ジェネレーターとコルーチンの間の違いと競合 (タイトルには「vs」という用語が使用されています) が、この記事のどこでどのように説明/提示されているかを説明してください。より一般的な私の質問は、実際にはその違いは何ですか?その違いは、Koa (Node.js) でアプリを構築するときに非同期要求を処理するためのコーディング パターンの違いに適用されますか?
express - ミドルウェアによる認可
要求しているユーザーと要求されたリソースとの関係に基づいて承認を必要とするアプリケーションがあります。アクセスの詳細は、要求されるリソースにカプセル化されます。
ルートを取りましょうPATCH /articles/1
: 記事には著者/所有者と、記事を更新するためのアクセス権を持つ一連の編集者がいます。要求しているユーザーは認証されており、作成者または編集者の 1 人である可能性があります。それ以外の場合、アクセスは拒否されます。
--
私には2つのアイデアがあります:
ミドルウェアでの承認:
これは、コントローラーがリソースを集約する前に、ミドルウェアがリソースを必要とすることを意味します。ただし、場合によっては (MongoDB 集約フレームワークを使用する場合など)、コントローラーがリソースを再利用できず、データベースへの別のラウンドトリップが必要になることがあります。コントローラーでの承認:
リソースが利用可能/集約されるとすぐに、コントローラーで承認を実行できます。しかし、これにより、承認のこの部分を、ミドルウェアとして既に導入している認証および役割ベースのアクセス制御から切り離すことができます。
個人的には、ミドルウェア アプローチの方が理にかなっていると思いますが、データベースは別の PaaS によってホストされるため、同じデータ センター内であっても、ある程度の遅延が発生する可能性があります。
また、関連するリソース (コメントなど) が要求された場合はどうなるでしょうか? これには、コメントからアクセスの詳細が保存されている記事への特定のロジックが含まれます。そして、私の認証ミドルウェアの一般性がはるかに低くなります。
--
他に利用可能なオプションはありますか?
--
このアプリケーションはKoaを使用していますが、その概念はおそらく、Expressなど、ミドルウェアをサポートする他のすべてのフレームワークに適用できます。
認証や、たとえば によって提供される従来の役割ベースのアクセスについて質問しているわけではないことに注意してくださいconnect-roles
。