2

CommonJS モジュールをロードしている間require、同期のステートメントを使用します。しかし、モジュールをロードするのに、ディスクからそれらを読み取って解釈する必要はありません。では、非ブロッキング I/O を提唱しているセットアップでは、require 同期はどのように行われるのでしょうか?

アップデート:

私はクライアントで requireJS を見たり使用したりしており、その非同期の性質を高く評価できます。私が知りたいのは、サーバーでこの種のことを行うことが広まっていない理由です (requireJS を Node で使用できることは知っていますが、それは重要ではありません)。

また、コード内でモジュールのインライン化を要求するとコードがブロックされるかどうか、およびこれが悪い習慣であり回避する必要があるかどうかも知りたいです。

4

1 に答える 1

3

requireモジュールを ing することは、通常、プログラムの最初に行うことです。プログラムの最初でこれを行わないと、結果はとにかくキャッシュされます。次のようなプログラムを開始します。

var fs = require('fs');
var http = require('http');
var oranges = require('oranges');

// Do stuff

次のように開始するのと同じように機能します。

require('async', function(err, async) {
    async.map(['fs', 'http', 'oranges'], function(err, modules) {
        var fs = modules[0], http = modules[1], oranges = modules[2];

        // Do stuff
    });
});

違いは、そのうちの 1 つが不必要に複雑であることです。はい、ある種の構文糖衣が実装されている可能性がありますが、おそらくいくつかの小さなエッジケースを除いて、それでも何のメリットもありません.

于 2012-12-16T16:29:20.283 に答える