가상돔이 느리다는게 뭔 소리나면
저 소리 나오기 시작한게 아마 스벨트 나왔을때일거다.
가상돔이 느리다는게 그냥 쌩으로 한땀한땀 직접 돔조작 다 하는게 빠른다는게 아니라 스벨트같은 방식을 말하는거다.
리액트가 런타임에서 가상돔으로 하는 diffing을 통한 최적화를 스벨트는 그냥 컴파일 과정에서 미리 하는거지,
그게 최적화 없이 모두 다 렌더링하는걸 의미하는게 아니라고.
당연히 저런 별도의 레이어가 가져오는 오버헤드가 있기 때문에
간단한 앱에선 큰 차이가 없거나 가상돔이 오히려 더 느리지.
그런데 돔트리가 존나 복잡한데 그거 매번 전체를 랜더링하는게
최적화해서 필요한 것만 렌더링 하는것보다 더 빠를거라고 말하는건 개소리
리액트고 스벨트고 저런 불필요한 랜더링을 줄이는 최적화는 다 하는거고
그냥 같은 목표를 위한 방식의 차이다.
리액트가 선발주자이기도 하고 느린데 일부러 도입할 리는 없긴 하겠다 근데 스벨트 나올 당시에 단순 앱만 해도 리액트가 비교적 느리긴 했음
지금 비교해보면 스벨트랑 리액트 차이 더 클걸? 스벨트가 더 빠르지. 내가 하는 말은 가상돔이 느리다는건 스벨트 이야기하는거지, 최적화 없는 돔조작 말하는게 아니란거.
해당 댓글은 삭제되었습니다.
돔조작은 생각보다 무겁고, JS는 생각보다 무지 빠르니까 ㅋㅋ 게다가 리액트가 가상돔이랑 돔트리 diff 잡을때 쓰는 알고리즘이 시간복잡도가 리니어라던데
가상돔 자료구조만 봐도 답이 나옴. 장점을 확실히 하기 위해 단점 최소화 한거임.
가상돔이 빠르다는건, jquery로 React처럼 선언적으로 짜면 상대적으로 느리고, React가 그 과정을 쉽게 lazy하고 최적화해서 연산해줘서 빠르다고 이해했음. 그냥 순수 jquery나 dom api로 조작하면 더 빠른건 당연할듯. 요즘은 브라우저 최적화도 잘되어있어서 선언적으로 짜도 최적화 자동으로 되지 않나 싶기도 함. React는 랜더러 + React-Dom이 꽤 많은 오버헤드를 가지고 있다고 생각하고, Solid JS나 Svelte이런애들은 컴파일타임에 최소한으로 그 과정을 만드는대신 약간 프레임워크적인 제약이 과 규칙이 존재. 장점은 리액트는 그런 문법적인 제약은 없음. 그냥 랜더러 중심으로 컴포넌트 함수를 돌려주는 에뮬레이터같은 존재. 그래서 리액트 네이티브같은것도 가능하고.
`가상돔이 느리다는게 그냥 쌩으로 한땀한땀 직접 돔조작 다 하는게 빠른다는게 아니라 스벨트같은 방식을 말하는거다.` 직접 돔조작 하는것보다 가상돔 쓰는게 느릴 수 밖에 없지 않나?
가상돔은 걍 DOM 조작을 대신해주는 중간 레이어를 합리적 가격(약간의 속도 저하)을 지불한대신, 유지보수성을 얻은거고
가상돔 쓰는 이유는 그게 아니라 필요없는 돔조작을 아예 안하려는건데? 가상돔을 쓰는데 돔조작을 똑같이 다 한다면 이걸 쓸 이유가 없지
필요없는 돔조작이란게 뭔데
가상돔이랑 실제 돔트리랑 비교해서 다른부분만 업데이트한다고. 나머지는 놔두고. 가상돔없이 기존 템플릿방식을 봐. 매번 전체를 다 리페인트하잖아.
기존 방식에서도 동적으로 달라진 부분만 업데이트 할 수 있잖아. 너무 귀찮고, 조금만 지나도 유지보수가 안되서 그렇지
해당 댓글은 삭제되었습니다.
여기에 틀린 말이 뭐가있음?? 있으면 지적을 하고 없으면 꺼져 병신아
니가 방구석 상상이라며?? 뭐가 상상이냐고 물어보잖아. 코드는 매일 보고있으니까 뭐가 상상인지 아가리를 털어보라고 ㅋㅋㅋ 이새끼는 개발자가 코드만 짜면 끝인 줄 아나. 실제로는 코드는 주니어가 더 많이 짬
여기에 내 머리속 상상은 하나도 없으니까 틀린게 있어보이면 니가 코드를 들고와서 지적을 하든 말든 하라고 어디서 이상한거 듣고 배워와서 TPO도 모르고 앵무새처럼 따라하니까 이 사단이 나지
구조얘기하는데 코드들고와라 이지랄.
너 가상돔이 뭔 줄도 모르잖아. 어떻게 구현되는 지 모르잖아