각도가 있는 분리된 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
'programing' 카테고리의 다른 글
C 자동 플러시(각 쓰기 후 플러시 stdout)에 해당합니까? (0) | 2023.10.05 |
---|---|
MySQL: 상위 n개의 최대값을 선택하시겠습니까? (0) | 2023.10.05 |
SSH를 통해 로컬 컴퓨터로 mysqdump (0) | 2023.10.05 |
레일에서 angularjs 및 루비를 사용하는 동안 알 수 없는 공급자 e-provider 오류가 발생했습니다. (0) | 2023.10.05 |
Oracle 및 MS SQL Server 결합 SQL 문 (0) | 2023.10.05 |