Koa / Co / Bluebird ou Q / Générateurs / Promesses / Thunks interaction? (Node.js)

Je suis enquêter sur la construction d'une web app en partie avec Koa, mais je ne suis pas tout à fait une poignée sur le comment, quand et le pourquoi du choix entre les - et l'application de la plage de soutien "faire async plus facile" technologies et d'approches (ci-dessous).

Ensemble disparate d'orientation sur le web à propos de ce sujet encore des feuilles de choses floues, particulièrement en ce qui concerne l'évolution des meilleures pratiques, ou au moins des meilleures, et dans quelles circonstances. Il semble y avoir peu ou rien sur le web qui met tout dans le contexte.

Je suis en espérant que les réponses à ce gros cul tentaculaire post peut corriger que. Aussi peut-être les questions ci-dessous peut inspirer quelqu'un pour écrire approfondie blog ou pour répondre à cette question. Mon sentiment est que je ne suis même pas près de le seul qui bénéficieront de cette.

Je serais heureux si le brillant de la communauté peut aider à répondre et apporter de la clarté aux questions suivantes en ce qui concerne les technologies énumérés ci-dessous (en caractères gras):

-- a) Comment, et dans quelles circonstances (selon le cas) sont-ils des compléments, suppléments, des substituts, et/ou de chevauchement des solutions de l'un à l'autre?

-- b) Quels sont leurs compromis à l'égard de la vitesse de la performance, la gestion des erreurs la facilité et le débogage de la facilité?

-- c) Quand, où, et pourquoi il peut être préférable d'utiliser "ce" et "la que" la technologie, les technologies de l'-combo, et/ou approche?

-- d) quelles technologies ou approches, le cas échéant, peut être "variation des étoiles".

(En espérant que les opinions qui font partie de réponses peut être bien expliqué.)

==============================

Technologies:

* Koa *

Ma compréhension:

Koa est un minimum de la fondation pour le Nœud de créer des applications orientées pour prendre avantage de ECMAScript 6 fonctions, une fonction en particulier de générateurs.

* Co *

Ma compréhension:

- Co est une bibliothèque d'utilitaires pour l'exécution d'ECMAScript 6 (générateurs qui sont indigènes au Nœud .011 harmonie), avec l'objectif de allieve certains/beaucoup(?) de la nécessité d'écrire du code réutilisable pour l'exécution et la gestion des générateurs.

- Co est intrinsèquement partie de Koa(?).

Questions spécifiques:

-- Si et comment utiliser la Co différemment en Koa que dans un non-Koa contexte. En d'autres termes, ne Koa entièrement façade Co?

-- Est susceptible d'être remplacé en Koa avec quelques autres, comme générateur de bibliothèque, s'il y a eu une meilleure? Y at-il?

* Promesse de Bibliothèques telles que le "Q" et Bluebird *

Ma compréhension:

-- Ils sont en un sens "polyfills" pour implmententing les Promesses/A+ spec, si et jusqu'à ce que le Nœud s'exécute en mode natif que spec.

-- Ils ont quelques autres non-spec commodité des utilitaires pour faciliter l'utilisation des promesses, comme Bluebird est promisfyAll utilitaire.

Questions spécifiques:

-- Ma compréhension est la ECMAScript 6 spec ne/ne reflètent en grande partie les Promesses/A+ spec, mais tout de même, Nœud 0.11 v harmonie n'est pas nativement de mettre en œuvre des Promesses. (Est-ce correct?) Cependant, quand elle ne, va de technologies telles que Q et Bluebird être sur leur chemin?

-- J'ai lu quelque chose à l'effet que le "Q" et Bluebird soutien des générateurs. Qu'est-ce que cela signifie? Cela ne signifie en partie que, par exemple, ils sont à un certain degré, à condition que la même utilité que le Co, et si oui, à quel degré?

* Thunks et les Promesses *

Je pense avoir une juste une poignée sur ce qu'ils sont, mais en espérant que quelqu'un peut fournir une présentation succincte et claire "elevator pitch" définition sur ce que chacun est, et bien sûr, comme demandé ci-dessus, à expliquer quand utiliser l'un contre l'autre, dans un Koa contexte et pas en elle.

Questions spécifiques:

-- Pro et les inconvénients à l'utilisation de quelque chose comme Bluebird est promisfy, par rapport à-dire à l'aide de Thunkify (sur github. com/visionmedia/node-thunkify)?

==============================

De donner quelques explications complémentaires sur ce post et ses questions, il pourrait être intéressant si Koa techniques présentées dans la suite des pages web pourrait être discuté et contrastées (especiallly sur un pros vs inconvénients de base):

-- a) www.marcusoft . net/2014/03/koaintro.html (Où est le thunks ou des promesses, ou ne suis-je pas voir quelque chose?)

-- b) strongloop . com/strongblog/node-js-express-introduction-koa-js-zone (Encore une fois, où est la thunks ou promesses?)

-- c) github . com/koajs/koa/blob/master/docs/guide.md (Ce que le "prochain" argument assimiler, et ce jeu il et où?)

-- d) blog.peterdecroos . com/blog/2014/01/22/javascript-générateurs-premières impressions (Pas dans un Koa contexte, mais présente l'utilisation de Co avec une promesse de la bibliothèque (Bluebird), donc je suis en supposant que la technique/modèle présenté ici se prête à l'utilisation en Koa(?). Si oui, comment?

Merci à tous!

  • Bluebird promisify avec Bluebird coroutine pour le générateur est la méthode la plus rapide et de loin. Il arrive aussi d'offrir le meilleur debuggability options avec de longues traces de pile à l'heure actuelle. Je dirais que c'est un bon pari.
  • Aussi, c'est comme un million de questions. Certaines bonnes, certaines trop opinion fondée.
  • Salut Ben - Oui, je sais, c'est s'aventure dans l'opinion, mais lors de la demande de considérations pour mettre un système, o
  • Merci Ben. (mis soumettre ci-dessus) Lire de bonnes choses à propos de Bluebird. Il semble bien que bb-coroutine ne fonctionne pas w/ thunks, seulement des promesses. Alors, quel est l'inconvénient de perdre la possibilité de travailler w/ thunks, en particulier dans le contexte de Koa? (Notez "stackoverflow.com/questions/22134167/co-js-and-bluebird-js-whats-the-difference" une allusion à BB de travail un jour w/ thunks.) 2ème, serait-bb-coroutine remplacer complètement le Co en Koa? Si oui, comment? Semble que les deux sont jointes au niveau des hanches? Quant à l'opinion, "ouais", mais quand le sujet est des considérations pour la construction d'un système, d'opinion devient une partie de l'équation.
  • Bluebird travaille avec les thunks, jetez un oeil à addYieldHandler. Beaucoup de bonnes questions générer un certain degré d'opinion basée sur les experts de l'expérience, mais les réponses à cette question ont tendance à être presque entièrement basé sur des opinions, plutôt que des faits, des références, ou des compétences spécifiques.
  • Co est une bibliothèque créée par l'express de l'auteur à l'écriture non bloquante code facilement. Habituellement, nous avons à travailler avec des rappels et async fonctions, qui peuvent devenir laid. Le chaînage avec élégance peut être un défi. Dans l'express, chaînes de serveur différents middleware. Koa est comme l'express, c'est un middleware. Mais il utilise le co pour la gestion de l'intérieur. Le hic, c'est que les générateurs sont bons, mais ils sont synchrones. Vous devez donc vous promet de travailler avec eux. Co fait pour vous.
  • Ce n'est pas une QA, mais une discussion. Par conséquent, il est adapté pour un forum, pas pour SI.
  • J'apprécie l'effort que vous mettez dans cette question, contrairement à certaines personnes, mais c'est hors sujet ici. Essayez les salles de chat.
  • les salles de chat de ne pas laisser les informations disponibles afin d'aider les futurs téléspectateurs

InformationsquelleAutor JLS | 2014-04-16