私を最も悩ませているJSの制限の1つは、コードの実行を分離する能力が低いことです。
コードが実行されるコンテキストを制御できるようにしたいのですが、node.jsのScript.createContext
&と同様の効果を実現するものScript.runInContext
です(ノードはV8エンジンへのバインディングを使用しているため、それらの実装をエミュレートできません)。
コードの実行を分離したい理由は次のとおりです。
- グローバル名前空間(
window
オブジェクトともDOM
)からコードを分離しますが、同期で実行する必要があるコンテキストで公開されたオブジェクトの関数呼び出しを参照できる必要があります。これによりWebWorker
、分離にforを使用することはほとんど不可能になります。 - コードの実行を分離することにより、不要になったときにその定義の割り当てを解除することもできます(メモリ管理)。
スクリプトをにロードすることで部分的に分離された実行を実現できることはわかっていますがiframe
、このアプローチは非常に重く、私がやろうとしていることに必要のないDOMの2番目のインスタンスに大量のメモリを使用します。
コンストラクター定義と、メインUIスレッドで実行する必要がある分離されたコンテナー/コンテキスト間で共有されるオブジェクトの定義を共有する必要があります。主に、これらの分離されたコンテナを使用して、プラグイン/モジュール(ミニアプリケーション)をホストします。プラグイン/モジュールは、それぞれが独自のContext2D
オブジェクトで描画コマンドを呼び出すことにより、ビューポートを表示および動的に更新します。
これらのコンテナがメインUIスレッドで実行されていない場合、などの呼び出しをプロキシするのは非常に困難でctx.measureText()
ありctx.drawImage()
、で画像オブジェクトを作成できないため、すべて役に立たなくなりますWorker
。
誰かがこれを可能にする将来の仕様を知っていますか?
これを実現するために使用できる現在の(非表示の)ブラウザー側APIはありますか?
GoggleのDartVMのような仮想マシンを利用し、現在のコードベースを再実装する方がよいでしょうか? 私の現在のコードベースは、20000行をわずかに超えています。
*でフレームワークを再実装する方が良いでしょうか