0

最近、node.js についてよく耳にします。支持者はそれをキリストの再臨として宣伝しているようです。これは私の興味をそそり、私はそれを読むことにしました。

ベンチマークの数値を含む複数のソースに出くわしましたが、多数の同時リクエストを処理するのに優れていることは明らかです。しかし、「コールバック」によるコードの書き方は、私には非常に「不自然」に感じられます。少し調べた結果、Eventlet にたどり着きました。これにより、同期に非常によく似たコードを記述しながら、非同期操作を行うことができます (したがって、生産性が向上します)。

しかし、Node.js は Eventlet (http://codescience.wordpress.com/2011/09/05/non-blocking-io-node-js-and-pythons-eventlet) よりもはるかに強力なようです。V8 JSエンジンのせいだと思います。同期コードを記述しながら非同期操作を実行できる Java/Javascript 製品はありますか?これにより、開発者の生産性と JVM/V8 のパフォーマンスの両方の長所を得ることができますか?

4

3 に答える 3

1

この種のスタイルを Node.js に導入することを目的としたプロジェクトがいくつかあります。CoffeeScriptのフォークであるIcedCoffeeScriptはその一例です (ただし、CoffeeScript を作成する必要があります)。もう 1 つはnode-fibersです。

個人的には、IcedCoffeeScript を試してみました (私は既に CoffeeScript を使用しているため)。かなりうまく機能しているように見えます (前と後の例を参照してください)。しかし、CoffeeScript のデバッグは少し面倒です。うまくいけばこれをより簡単にするソースマッピングのサポートがあります。

于 2012-06-07T21:57:37.290 に答える
1

Node.js サポートは async - await 構文をサポートできるため、同期に見えるコードで非同期操作を実行できます

これをチェックしてください:

https://github.com/koush/node/wiki/%22async%22-support-in-node.js

于 2012-06-07T19:02:21.990 に答える
0

私のプロジェクトの 1 つ、sharpnr.js をチェックしてください。これも await-async 構文を使用していますが、これは単純な JavaScript ライブラリであり、すべてのブラウザーで動作します。

ライブラリは現在ベータ版ですが、安定しており、ほぼすべてのステートメント (ループ、スイッチ、if など) をサポートし、既存のライブラリ (jQuery など) とうまく連携します。

構文は C# バージョンとほぼ同じです。

var getAsync = async(function(url) {
  var result = await; $.get(url);
  $("#test").html(result);
});
getAsync("http://www.sharpnrjs.com");

jsfiddleでの作業例。

ライブラリはgithubからダウンロードできます。

于 2012-07-03T17:19:04.490 に答える