Google Blink (neue WebKit-Verzweigung): Bedeutung von "Verschieben von DOM in Javascript"?

12

Aus dem Blink-Blog :

Schließlich möchten wir noch größere Ideen untersuchen, wie das gesamte Document Object Model (DOM) in JavaScript zu verschieben.

Was bedeutet das? Bedeutet das, dass das DOM von WebKit derzeit nicht in JavaScript, sondern in einer anderen Sprache codiert ist? Bedeutet das, dass sie mehr öffentliche Zugriffsmethoden für das DOM bereitstellen möchten? Oder was?

BSalita
quelle

Antworten:

14

So wie ich es lese, gibt es zwei Möglichkeiten. Aber bevor wir uns damit befassen, müssen Sie verstehen, wie das alte Modell funktioniert.

In den meisten Fällen, wenn nicht in allen Implementierungen von HTML-Rendering-Modulen, ist das DOM in C oder C ++ implementiert, und das JavaScript-Modul ist ein Add-On, für das Bindungen in das DOM exportiert wurden. Dies ist sinnvoll, wenn Sie sich die Entwicklung von HTML und JavaScript ansehen. Es wird jedoch viel Zeit verschwendet, um die Aufrufe von JavaScript nach C / C ++ und zurück zu marshallen.

Die erste Möglichkeit besteht darin, dass das DOM enger an die JavaScript-Engine gebunden wird. Grundsätzlich werden die DOM-Objekte zu zentralen JavaScript-Objekten wie Array. Dies führt nur zu einer Reduzierung des Marshalling, da das DOM die systemeigenen Datentypen der JavaScript-Engine verwendet. Das DOM ist dann noch in C oder C ++ implementiert.

Die zweite Option und wahrscheinlich was sie bedeuten, ist, dass das eigentliche DOM in JavaScript implementiert ist. Der Nachteil ist, dass der Zugriff auf das DOM vollständig interpretiert wird, aber auf der Oberseite das Marshalling entfernt wird. Dies ist wahrscheinlich ein Nettogewinn, da das DOM sowieso hauptsächlich aus Daten besteht.

Andererseits kann ich Ihnen keine definitive Antwort geben - ich arbeite nicht für Google und habe daher nicht so viel Einsicht.

Rioki
quelle
1
Ich glaube nicht, dass das Binden spezieller Typen im Vergleich zu den "nativen" Typen der JavaScript-Engines einen Mehraufwand verursacht, da diese Engine in C ++ geschrieben ist und alle Typen mit demselben Mechanismus implementiert werden. Mit den nativen JavaScript-Typen kann ein Code gespeichert werden, da für die nativen Typen und die DOM-Typen viel Code dupliziert werden muss.
Jan Hudec
Soweit ich weiß (z. B. aus der E-Discussion-Mailing-Liste), handelt es sich definitiv um die letztere. Es ist ein Wunsch DOM in JS geschrieben haben, nicht nur wegen des Rangier - Kosten (die ist es), aber auch so viel von den „exotischen“ zum Entfernen von „non-native“, „spezielle“ Objekte aus dem Sprachraum als möglich. DOM ist ein großes PITA für Sprachdesigner, weil es etwas Besonderes ist.
Herby
Zu diesem Thema gibt es kürzlich ein Designdokument. Docs.google.com/document/d/…
subbul