Google Blink(新しいWebKitフォーク):「DOMをJavascriptに移動する」という意味ですか?


12

Blinkブログから:

最後に、Document Object Model(DOM)全体をJavaScriptに移動するなど、さらに大きなアイデアを検討したいと思います。

これは何を意味するのでしょうか?それ平均WebKitのDOMは、現在されていない JavaScriptでなく、他のいくつかの言語でコーディングされましたか?彼らはより多くのパブリックアクセサーをDOMに公開したいということですか?または何?

回答:


14

読み方には2つの選択肢があります。しかし、これを検討する前に、古いモデルがどのように機能するかを理解する必要があります。

HTMLレンダリングエンジンのすべての実装ではないにしても、ほとんどの場合、DOMはCまたはC ++で実装され、JavaScriptエンジンはDOMにエクスポートされたバインディングを持つアドオンです。HTMLとJavaScriptの進化を見ると、これは理にかなっています。ただし、JavaScriptからC / C ++への呼び出しとその逆をマーシャリングするのに多くの時間が浪費されます。

最初のオプションは、DOMがJavaScriptエンジンにより密接にバインドされることです。基本的に、DOMオブジェクトは、配列のようなコアJavaScriptオブジェクトになります。DOMはJavaScriptエンジンからのネイティブデータ型を使用するため、これはマーシャリングを削減することを除いてあまり効果がありません。DOMは引き続きCまたはC ++で実装されます。

2番目のオプションとおそらくその意味は、実際のDOMがJavaScriptで実装されることです。欠点は、DOMへのアクセスが完全に解釈されることですが、欠点はマーシャリングが削除されることです。とにかくDOMのほとんどはデータであるため、これはおそらく純益です。

それから、私はあなたに明確な答えを与えることはできません-私はGoogleのために働いていないので、それほど多くの洞察を持っていません。


1
このエンジンはC ++で記述され、すべてのタイプが同じメカニズムを使用して実装されているため、JavaScriptエンジンの「ネイティブ」タイプと比較して、特別なタイプのバインドにオーバーヘッドはないと思います。ネイティブJavaScriptタイプを使用して保存できるのは、ネイティブタイプとDOMタイプに対して多くのコードを複製する必要があるため、コードです。
Jan Hudec

私が知っていることから(例えば、es-discussメーリングリストから)、間違いなく後者です。マーシャリングコスト(そこにある)だけでなく、言語空間から「エキゾチック」、「非ネイティブ」、「特殊」オブジェクトをできるだけ削除するためにも、JSでDOMを作成したいという要望あります。可能。DOMは特別なので、言語デザイナーにとって大きなPITAです。
ハービー

最近このトピックに関する設計文書がありますdocs.google.com/document/d/…– subbul 14
1
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.