Wątek przeniesiony 2022-12-22 10:32 z Webmastering przez Riddle.

Interakcja silnika JS z DOM

0

Znalazłem takie ciekawe zdanie na wiki pod artykułem o Browser Engine:

Executing JavaScript (JS) code is a separate matter, however, as every major web browser uses a dedicated engine for this. The JS language was originally created for use in browsers, but it is now used elsewhere, too, so the implementation of JS engines is decoupled from browser engines. In a web browser, the two engines work in concert via the shared DOM data structure.

zastanawiam się czy dobrze kminie odnośnie tego jak się to odbywa:

  • BrowserEngine jest napisany w języku X
  • JavaScript interpreter też jest napisany w języku X
  • BrowserEngine tworzy sobie strukturę danych - jakiś obiekt (oczywiście dalej się to odbywa w języku X)
  • JavaScript interpreter jak dostaje JS-ową instrukcję np.: "document.getElementById", jest zaimplementowany tak, żeby wywołać jakąś określoną metodę na tej strukturze danych która została wcześniej utworzona

W takim scenariuszu było by to możliwe, bo i interpreter JS i BrowserEngine są napisane w tym samym języku, ale wg. tego, też zawsze musiały by być w tym samym języku (chyba).

2

Nie muszą być napisane w tym samym języku. Mogą np. pracować na wspólnym obszarze pamięci, w którym siedzi właśnie współdzielona struktura DOM.

0

Poza tym jeśliby bardziej bezpośrednie sposoby komunikacji zawiodły, to dwa programy napisane w różnych językach mogłyby się komunikować za pomocą protokołów sieciowych. Tyle, że trzeba byłoby serializować i deserializować te dane.

No i są jeszcze inne metody komunikacji np. https://en.wikipedia.org/wiki/Inter-process_communication

Nie jestem natomiast pewien, jakie dokładnie są używane w przeglądarkach i silnikach JS.

0

Jeśli są napisane w tym samym języku, to nadal nie muszą o sobie wiedzieć nawzajem, mogą wykorzystywać polimorfizm i wtedy DOM nie musi wiedzieć o JS, a JS o DOM.

A nawet jeśli są napisane w różnych językach to nadal mogą się ze sobą komunikować, np jeden proces może uruchomić drugi, i mogą serializować dane i wysyłać je do siebie i deserializować (oczywiście do jakiegoś wspólnego formatu), tzn. "wymieniać się bajtami". Tak jak mówi @LukeJL mogą też się porozumiewać interfejsem sieciwoym.

1 użytkowników online, w tym zalogowanych: 0, gości: 1