私はMeteorを実験していて、それに恋をしています。私の質問は:
NodeMailerなどのnodeJSパッケージをMeteorにインストールして、箱から出してすぐに機能させることはできますか?そうでない場合、それを実行するための通常の手順は何ですか?
簡単な答えはノーです。MeteorはFibersに依存しているため、多くのパッケージとのネイティブの互換性が失われます。現在、Meteor内で動作するためにFibersを使用しないパッケージの取得は、ケースバイケースで行われます。これが最近の例です
これらの手順に従って、パッケージがmeteorアプリで確実にデプロイされるようにすることができます。
Meteorのコア開発者の1人であるDavidGreenspanがFibersを使用してMeteorを構築している理由は、次のとおりです。
実際には、[ファイバーを使用するかどうかの間で]固有の、または明らかなパフォーマンスのトレードオフはないため、より単純なAPI(またはその両方)を公開することにしました。
ノードモデルは基本的に、アプリが1つのスレッド、つまりイベントループを取得することです。アプリを高速にしたい場合は、リクエストハンドラーをすばやくスレッドから削除することをお勧めします。バニラノードでこれを行う方法は、実行する作業がまだある場合にコールバックをどこかに渡した後、終了して戻ることです。 ファイバーを使用すると、要求ハンドラーはI / Oを実行しているときに代わりに「譲歩」できるため、スレッドから外れますが、プログラマーには見えません。 同期呼び出し内でコールバックが発生しているように見えますが、コールバックはプログラムの継続にすぎません。これはstreamlineがシミュレートしようとしていることですが、V8レベルで発生します。
重要な点は、Meteorの「同期」呼び出しはブロックせず、イベントループに譲ることです。通常、イベントループは、呼び出しが必要なコールバック間でバウンスしますが、代わりに、さらに実行が必要な関数間でバウンスします。