웹페이지 개발을 하다보면, 사용자 편의성 등을 위해, 서버에서 데이터를 가져와서 Ajax형태로 화면의 변화없이
실시간 처리를 하는 경우가 많다.
이런경우 태그를 변수 하나에 담은 후에, $('#test').html(''); 과 같은 형태로 특정 element에 태그를 삽입하게 되는데,
방식에 따라 성능차이가 있다.
innerHTML (jquery에서의 .html())은 해당 태그 안에 있는 모든 element를 다시 파싱을 하여, 재 가공을 하는 작업을 하기 때문에
매우 느리다.
insertAdjacentHTML (jquery에서의 append, appendTo, 등 자세한 설명은 아래 링크를 참조)
http://api.jquery.com/insertAfter/
http://api.jquery.com/append/
http://api.jquery.com/appendTo/
http://api.jquery.com/prepend/
http://api.jquery.com/prependTo/
insertAdjacentHTML 같은 경우는 해당 태그의 앞, 뒤 등 원하는 부분을 선택해서 태그를 추가할 수 있기 때문에,
innerHTML 방식보다는 속도가 확실히 빠르고, innerHTML 에서의 속도 문제를 해결하기 위해 나온 스펙이라고 한다.
MDN을 참고 (https://developer.mozilla.org/ko/docs/Web/API/Element/insertAdjacentHTML)
tbody같은 태그에 내용을 한번에 다 구성해서 넣는 경우에는 성능차이가 없을 것으로 보이지만,
되도록이면 새로운 스펙을 사용하도록 노력하는 게 좋을 것 같다.
'개발 > Front-End' 카테고리의 다른 글
[Angular2] Angular2 TypeScript에서 Jquery 사용하기 (0) | 2016.12.20 |
---|---|
[Angular2] @Input (0) | 2016.12.19 |
[WebJars] FrontEnd 라이브러리 관리 (0) | 2016.09.21 |
[Jquery] Table에서 Thead 고정 시키기 (FloatThead) (0) | 2016.09.08 |
[Jquery] modal LayerPopup간 데이터 주고 받기 (0) | 2016.07.01 |