Google Blink (새로운 WebKit 포크) : "DOM을 Javascript로 이동"의 의미?


12

로부터 깜박임 블로그 :

마지막으로 전체 DOM (Document Object Model)을 JavaScript로 옮기는 것과 같은 더 큰 아이디어를 탐구하고 싶습니다.

이것은 무엇을 의미 하는가? 그것은 평균 WebKit에서 DOM은 현재 않습니다 없습니다 자바 스크립트에 있지만 다른 언어로 코딩? 더 많은 공개 접근자를 DOM에 노출시키고 싶다는 의미입니까? 또는 무엇을?

답변:


14

내가 읽는 방식에는 두 가지 옵션이 있습니다. 그러나 이것을 살펴보기 전에 이전 모델의 작동 방식을 이해해야합니다.

대부분의 HTML 렌더링 엔진 구현이 아닌 경우 DOM은 C 또는 C ++로 구현되며 JavaScript 엔진은 바인딩을 DOM으로 내 보낸 애드온입니다. HTML과 JavaScript가 어떻게 진화했는지 살펴보면 이치에 맞습니다. 그러나 JavaScript에서 C / C ++ 로의 호출을 마샬링하는 데 많은 시간이 낭비됩니다.

첫 번째 옵션은 DOM이 JavaScript 엔진에 더 밀접하게 바인딩되는 것입니다. 기본적으로 DOM 객체는 Array와 같은 핵심 JavaScript 객체가됩니다. DOM은 JavaScript 엔진의 기본 데이터 유형을 사용하므로 일부 마샬링을 줄이는 것 외에는 별다른 효과가 없습니다. 그런 다음 DOM은 여전히 ​​C 또는 C ++로 구현됩니다.

두 번째 옵션 및 아마도 의미하는 것은 실제 DOM이 JavaScript로 구현된다는 것입니다. 단점은 DOM에 대한 액세스가 완전히 해석된다는 것입니다. 그러나 거꾸로 마샬링을 제거합니다. DOM은 대부분 데이터이기 때문에 이것은 아마도 순 이익입니다.

그런 다음 다시 한 번 명확한 답변을 드릴 수 없습니다. Google에서 일하지 않으므로 그다지 통찰력이 없습니다.


1
엔진이 C ++로 작성되고 모든 유형이 동일한 메커니즘을 사용하여 구현되므로 JavaScript 엔진의 "기본"유형과 비교하여 특수 유형을 바인딩하는 데 오버 헤드가 없다고 생각합니다. 기본 JavaScript 유형을 사용하여 저장할 수있는 것은 기본 유형 및 DOM 유형에 대해 많은 코드를 복제해야하는 코드입니다.
Jan Hudec

내가 아는 것에서 (예를 들어 es-discuss 메일 링리스트에서) 확실히 후자입니다. JS로 작성 DOM을 가지고 소원은 단지 때문에 (비용 정렬 화의 존재 이다 가)를,뿐만 아니라 "이국적인"언어 공간에서 "비 네이티브", "특별한"객체로의 많이 제거 가능한. DOM은 언어 디자이너에게는 큰 PITA입니다. 특별하기 때문입니다.
herby

이 주제에 관한 디자인 문서가 최근에 있습니다 docs.google.com/document/d/…
subbul
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.