0

res.render( "/ somepage"、vars)を使用してレンダリングするページがあります。varsは、クエリの結果を含むオブジェクトです。しかし、コールバック地獄を作成せずにサイドバーに無関係なコンテンツを表示し、両方のクエリの結果を変数に含めたい場合はどうなりますか?async/promisesを使用することはオプションではありません。

メインコンテンツのみを作成し、jQuery $.getを使用してJSONオブジェクトを返すURLを呼び出してサイドバーコンテンツを取得するというアプローチを使用しています。このJSONオブジェクトは他のクエリの結果です。res.json(someQueryResult)を使用して作成します

私はhttp://lelizondo.tumblr.com/post/29971693078/holy-sh-batman-showing-async-blocks-of-data-fromでより広範な説明をブログに書きましたが、より良いアプローチがあるかどうか知りたいのですが、多分パーシャルや私が欠けている他のテクニックを使っています。

ありがとう。

4

2 に答える 2

0

それは開発哲学の問題のようなものかもしれません。最初のコメント投稿者が述べたように、1つのページをレンダリングするためにサーバーに2つのリクエストを送信することはある意味で無駄です。ただし、これが本体から完全に独立したコンテンツである場合は、おそらく、メインコンテンツとのクエリ/レンダリングの絡み合いを避けたいと思うでしょう。これにより、ページを個別に維持し(バグのリスクを減らす)、ページを構成するさまざまな「ウィジェット」でさまざまな人(チーム環境にいる場合)が作業する可能性があります。

jQueryアプローチに提案する唯一の改善点は、HTMLを手動で作成する代わりに、アンダースコアマイクロテンプレートなどを使用してそのJSONのレンダリングを行うことです。

その方向への次のステップは(私が少し哲学の問題だと言ったように) 、クライアント側でbackbone.jsのようなものを使用し、サーバー側のルートを完全なRESTAPIに拡張することです。理論的には、サイトが成長するにつれて、別のnode.jsサーバーから送信される可能性もあります。

そして、オールインしたい場合は、常にこのようなアプローチがあります

于 2012-08-23T19:40:12.370 に答える
0

Conductorのようなものを検討することをお勧めします。http://howtonode.org/step-of-conductor

于 2012-08-22T22:21:44.297 に答える