0
最近読んだのは、「ECMAScript 6モジュールは、エンジンがモジュールを同期して(サーバなど)、非同期に(ブラウザなどで)ロードするかどうかに関係なく動作する必要があります。ブラウザとサーバーのJSモジュールの読み込み(asyncとsync)が異なるのはなぜですか?
なぜJSは、サーバーとブラウザの両方で、非同期的かつ同期的に読み込まれますか?これは意図的ですか?
最近読んだのは、「ECMAScript 6モジュールは、エンジンがモジュールを同期して(サーバなど)、非同期に(ブラウザなどで)ロードするかどうかに関係なく動作する必要があります。ブラウザとサーバーのJSモジュールの読み込み(asyncとsync)が異なるのはなぜですか?
なぜJSは、サーバーとブラウザの両方で、非同期的かつ同期的に読み込まれますか?これは意図的ですか?
サーバーはファイルシステムからすぐに読み込まれるため、モジュールを同期してインポートすることを推奨します。一般に、同期コードは書き込みと読み込みが容易です。それは行うことができるようにノードに素晴らしいことだ:ネットワーク負荷が長い時間と同期実行ブロックを取ることができますので、代わりに
require("mymodule", function(err, myModule) {
require("foo", function(err, foo) {
myModule.doThing(foo);
});
});
の
var myModule = require("mymodule"),
foo = require("foo");
myModule.doThing(foo);
は逆に、非同期コードは、ブラウザでしばしば好ましいです。 UI。バックグラウンドでモジュールを静かにロードし、その完了に非同期で応答しながら、ブラウザのスレッドをユーザに応答させておくこと(およびロードアニメーションなどを表示すること)が望ましいです。
サーバー上では、モジュールファイルはファイルシステムから(高速で)読み込まれますが、ブラウザではネットワーク経由でロードされます(遅いため、ページをハングアップさせるのではなく非同期でロードする方が便利です)。ネットワークフェッチ)。それはあなたが探している答えか、もっと技術的なものですか?たとえば、実際に読み込みを実行するために使用されているAPIやコードですか? – apsillers
サーバーはファイルシステムに直接アクセスし、ハードドライブから直接モジュールをロードします。とにかくハードウェアの速度によってのみ制限されるため、非同期は必要ありません。一方、ブラウザはネットワーク速度によって大きく制限されています。彼らは、ファイルをロードするのを待っているので、UIを常にブロックする余裕がないので、非同期で行う必要があります。 –
@ JeremyThilleには、サーバーが非同期にもロードされない理由がありますか?それは傷つけないようです。私は両者のトレードオフを理解しようとしています。 –