2017-11-08 6 views
1

내 방법 :
우리는 우리가 그것을 할 수있는 DOM 요소에 뭔가 수행하려면
: 그 상황 브라우저에서
반응 가상 DOM 감각을 올바르게 이해합니까? 생각의

document.getElementById("#someId").DoSomething(); 
document.getElementById("#someId").DoSomethingElse(); 

이 #someId 개체에 대한 전체 DOM을 검색 할 필요가있다. 그런 다음 요소 및 검색을 다시 잊어서 DoSomethingElse()를 수행합니다.
"잊어 버리고 다시 검색"문제를 해결하기 위해 요소를 JavaScript 객체으로 저장할 수 있습니다.

var someElement = document.getElementById("#someId"); 
    someElement .DoSomething(); 
    someElement .DoSomethingElse(); 

우리가 더 나은 성능을 달성하기 위해 요소 또는 전체 노드의 전체 그룹을 절약 할 수 있습니다 더 간다. 한 단계 더 나아가 전체 DOM을 가상 도메인으로 명명 된이라는 JavaScript 개체로 저장했습니다.

가상 DOM의 목적을 이해하는 올바른 방법입니까? 멍청한 놈 질문 죄송합니다

, 내가하지 프론트 엔드 개발자, 나는 VirtualDOM의

답변

2

주요 지점 효과적으로, 당신은 실제의 사본에 노력하고 있다는 것입니다 :) 그냥 궁금 해요 DOM. 하지만이 복사본을 사용한 작업은 실제 DOM을 사용하는 것보다 더 빠릅니다. React가 실제로 필요로하는 것이 있기 때문에 특정 브라우저 문제는 제쳐두고 있습니다.

실제 DOM으로 작업 할 때의 주된 문제점은 느리다는 것입니다. 그런 종류의 사본으로 작업하는 것이 더 빠르며 작업을하고 변경을 완료 한 다음 실제 DOM을 업데이트하십시오.

예, 약간 이상하게 들리지만 실제 변경 사항을 실제 DOM으로 변경하는 것보다 상태 변경과 모든 것을 "단 한 단계"로 변경하는 것의 차이를 계산하는 것이 더 빠릅니다.

또한 예를 들어 하나의 DOM 노드를 사용했지만 DOM 하위 트리의 변경 작업을 수행하는 것은 쉽지 않습니다. http://reactkungfu.com/2015/10/the-difference-between-virtual-dom-and-dom/

+0

추가 질문 : 당신이이 문서에 좀 걸릴 수 있습니다 더 세부 사항에 대한 설명

은 첫 번째보다 더 빨리 (개체로 요소를 저장 포함) 내 두 번째 잘린인가? 실제로 요소를 "기억"합니까? –

+0

나는 그것이 확실하다고 확신하지만 테스트하기 위해 벤치 마크를 수행해야합니다. 어쩌면 변수에 저장 (쓰기 작업) 한 번 발견하는 것보다 노드를 두 번 찾는 것이 더 빠를 수도 있습니다. 쓰기 작업은 읽는 작업보다 시간이 많이 걸리는 경향이 있습니다. – dlopez

+0

감사합니다. 나는 당신의 대답을 하루가 끝날 때 받아 들일만한 것으로 표시 할 것이고, 다른 것을 추가하고 싶어 할 다른 사람들을 두렵게하지 않을 것입니다. 어쨌든 concider "acceptance"는 주장했다 :) –