programing

각도가 있는 분리된 DOM 트리JS/jQuery

padding 2023. 10. 5. 21:14
반응형

각도가 있는 분리된 DOM 트리JS/jQuery

그래서 저는 꽤 간단한 Angular Application을 가지고 있고 무엇이 분리된 DOM 트리를 크롬 프로파일러에 나타나게 하는지 알아내려고 노력하고 있습니다.예를 들어, 이 페이지를 로드할 때:

http://rztest.nodejitsu.com/dashboard

나는 2개의 분리된 DOM 트리를 얻었는데, 하나는 2개의 엔트리와 다른 하나는 3개의 엔트리가 있습니다.이 페이지는 사용자 지정 지시어를 사용하지 않으므로 Angular 또는 jQuery 중 하나를 사용해야 하지만 이러한 분리된 DOM 트리를 유발할 수 있는 것이 없습니다.

문제는 더욱 커집니다(프로젝트 링크를 클릭하고 다른 프로파일을 수행하면 분리된 DOM 트리와 항목이 훨씬 더 많이 있습니다). 그래서 이 아주 간단한 예를 수정할 수 있다면 나머지 응용 프로그램 전체에 걸쳐 캐스케이드화될 수 있기를 바랍니다.

또한 저는 ui-router를 사용하고 있지만 Angular의 기본 라우터에서도 동일한 결과를 사용해 보았습니다.jQuery를 사용하지 않는 todomvc Angular 앱(http://todomvc.com/architecture-examples/angularjs/ #/)에도 DOM 트리가 분리되어 있습니다.

갱신하다

애플리케이션에서 jQuery를 꺼냈고 간단한 페이지에서 분리된 돔 트리 하나를 제외한 모든 것이 사라졌습니다(그리고 하나는 Angular에서 가져온 것입니다).어디 있는지 아는 JS).좀 더 복잡한 페이지(템플릿Urland가 있는 사용자 지정 지시어로 트랜스클루전을 수행)를 위해 시도할 때 jQuery를 제거하는 것은 도움이 되지 않는 것 같습니다.

jQuery가 실제 문제인지(또는 그 일부인지) 또는 Angular가 jQuery/jqLite를 어떻게 사용하는지 잘 모르겠습니다.

jQuery 1.10.x에 알려진 기존의 분리형 DOM 트리가 있는지 아는 사람?

저는 많은 대규모 Angular에서 DOM 노드 유출을 디버깅하는 데 상당한 시간을 보냈습니다.JS 어플.

jQuery가 보유하고 있는 일부 내부 캐시에서 참조를 가지고 있기 때문에 분리된 많은 DOM 요소가 가비지 컬렉션이 아니라는 것을 알게 되었습니다.저는 Angular / jQuery 문제가 있다고 확신합니다.

안타깝게도 문제를 빠르게 파헤치면서 해답보다 의문점이 더 많이 생긴다는 것을 알게 되었습니다(예를 들어, 애플리케이션에서 보기를 열거나 닫을 때 DOM 요소가 분리된다는 것을 알게 되었습니다).하지만 다시 열거나 닫더라도 더 이상의 효과는 없을 것입니다.) - 결국 타협을 해야 했습니다.

When an element is destroyed, I would recursively remove that elements children from their parents.

이것이 절대적인 해킹이라는 것을 인정합니다. 하지만 결과적으로, 유출된 DOM 요소는 더 이상 큰 하위 요소 트리를 보유하지 않기 때문에 메모리 유출은 훨씬 덜 문제가 될 것입니다.

이 문제에 대한 해결책을 찾지 못한다면...이것은 분명히 유출을 통제하는데 도움이 될 것입니다.

언급URL : https://stackoverflow.com/questions/19361890/detached-dom-tree-with-angularjs-jquery

반응형