Google Blink (nuovo fork di WebKit): significato di "Spostamento del DOM in Javascript"?


12

Dal blog di Blink :

Infine, vorremmo esplorare idee ancora più grandi come spostare l'intero Document Object Model (DOM) in JavaScript.

Cosa significa questo? Ha DOM è parte di WebKit media è attualmente non codificato in JavaScript, ma in qualche altra lingua? Vuol dire che vogliono esporre più DOM pubblici al DOM? O cosa?

Risposte:


14

Il modo in cui l'ho letto ci sono due opzioni. Ma prima di esaminare questo aspetto, devi capire come funziona il vecchio modello.

Nella maggior parte, se non in tutte le implementazioni dei motori di rendering HTML, il DOM è implementato in C o C ++ e il motore JavaScript è un componente aggiuntivo che ha i collegamenti esportati nel DOM. Questo ha senso, se osservi come si sono evoluti HTML e JavaScript. Ma si perde molto tempo a eseguire il marshalling delle chiamate da JavaScript a C / C ++ e viceversa.

La prima opzione è che il DOM diventa più strettamente legato al motore JavaScript. Fondamentalmente gli oggetti DOM diventano oggetti JavaScript di base, come Array. Questo non fa molto se non ridurre un po 'di marshalling, poiché il DOM utilizza i tipi di dati nativi del motore JavaScript. Il DOM viene quindi ancora implementato in C o C ++.

La seconda opzione e probabilmente il loro significato è che l'attuale DOM è implementato in JavaScript. Il rovescio della medaglia è che l'accesso al DOM è completamente interpretato, ma il lato positivo rimuove qualsiasi marshalling. Questo è probabilmente un guadagno netto, dal momento che il DOM è per lo più dati.

D'altra parte non posso darti una risposta definitiva - non lavoro per Google e quindi non ho molta intuizione.


1
Non penso che ci sia alcun sovraccarico nel legare tipi speciali rispetto ai tipi "nativi" dei motori JavaScript poiché quel motore è scritto in C ++ e tutti i tipi sono implementati usando lo stesso meccanismo. Ciò che può essere salvato utilizzando i tipi JavaScript nativi è un codice poiché è necessario duplicare molto codice per i tipi nativi e i tipi DOM.
Jan Hudec,

Da quello che so (dalla mailing list di es-discuss, ad esempio), è sicuramente il secondo. C'è un desiderio di avere DOM scritto in JS, non solo a causa del costo di marshalling (che è lì), ma anche per rimuovere dallo spazio linguistico tanto degli oggetti "esotici", "non nativi", "speciali" possibile. DOM è un grande PITA per i progettisti di lingue, perché è speciale.
citato il

C'è un documento di progettazione su questo argomento recentemente docs.google.com/document/d/…
subbul
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.