본문 바로가기

Web 프로그래밍/Javascript59

[Javascript] Ajax 데이터 포맷 Ajax에서 데이터 포맷을 고려할 때는 속도만 신경 쓰면된다. 크게 4가지가 있다. XML, JSON, HTML, 커스텀 포맷 1) XML Ajax가 처음 알려질 때는 XML이 데이터 포맷으로 널리 쓰였다. XML은 상호간의 운용성이 높아 서버와 클라이언트 모두 잘 지원한다. 엄격한 형식을 갖췄으며 유효성 검사도 쉽다. 다른 포맷과 비교하면 XML은 매우 장황하다. 개별 정보마다 구조가 필요하고 데이터 비율도 낮다. 보통 상위 노드를 복수형으로 감싸고 하위 노드를 단수형으로 하여 해당 요소들을 나열한다. 2) JSON 더글라스 크락포드가 형식화하고 널리 알려진 JSON은 객체와 배열문법만으로 가볍고 파싱하기 쉬운 데이터 포맷이다. JSON 포맷이 현재는 가장 빠르다. 위의 XML보다 코드가 간편하고 오히.. 2016. 6. 11.
[Javascript Highperfomance/jQuery] Ajax 사용 get, post 사용 구분 jQuery는 자바스크립트의 라이브러리 이다. jQuery로 실행되는 모든 함수는 자바스크립트로 구현이 가능하다. 단지 소스가 좀 길어질 뿐 이번에 자바스크립트 최적화를 공부하면서 알게 된 내용이다. 기본적으로 get, post의 구분은 기본적인 것은 대부분의 개발자가 알고 있을 내용이다. 모른다면 개발을 접고 다른 길을 찾길 바란다. ajax 사용시 get과 post의 최적화 사용법을 알아본다. get : 서버의 상태 변동의 없이 데이터만 가져올 때 get을 사용한다. 또한 ajax시 get 방식은 캐시화가 되어 2번 이상 처리시에는 속도가 올라간다. post : 큰 길이의 문자열을 전달 할 때 사용하며 서버의 변동이 있을 때 주로 post를 사용하는 것이 좋다. 서버의 변동이라 함은 ajax로 데이터.. 2016. 6. 11.
[Javascript] 웹 워커(멀티 스레드) 자바스크립트는 인터프리터 언어이며 단일 스레드 이다. 자바스크립트에서 동적으로 UI변경 작업이 있을시에는 UI스레드 라는 공간에서 큐 방식으로 처리 순서를 담아 놓는다. 앱 워커는 멀티스레드 기능을 지원하며 워커가 생성될 때마다 자바스크립트를 실행할 수 있는 고유 스레드를 생성하여 속도 성능을 크게 향상시킬 수 있다. 워커에서 실행하는 코드는 브라우저 UI에도, 다른 워커에서 실행하는 코드에도 영향을 주지 않는다.즉 독립접으로 실행되는 멀티스레드 이다. 웹워커는 다음과 같은 상황에서 사용하기 적절하다.1) 매우 큰 문자열의 암호화/복호화2) 복잡한 수학계산(이미지/비디오 처리 포함)3) 매우 큰 배열의 정렬=> 즉 로딩과 실행이 오래 걸리는 자바스크립트 파일간단한 예제를 보자 ( 2개 파일을 생성 )wo.. 2016. 6. 11.
[Javascript HighPerformance] 알고리즘 흐름제어 다른 프로그래밍 언어와 마찬가지로 어떤 알고리즘을 선택하고 코드를 어떻게 분해했느냐에 따라 성능 차이는 확연히 달라진다. 1) for, while, do while 모두 성능은 비슷하다 빠른 루프도, 느린 루프도 없다. 2) 객체에 속성에 대해 모르는 상태에서는 for-in 구문을 쓰지 말것 3) 반복문의 성능을 올리기 위해서는 작업을 줄이고 반복 횟수를 줄이는 것 4) 참조테이블 사용 5) 브라우저의 콜 스택 크기에 따라 자바스크립트가 몇 번까지 재귀를 실행 할 수 있는지 다르다. 6) 스택오버플로우가 나면 재귀함수를 사용하지 말고 반복문 알고리즘을 사용하거나 메모이제이션을 사용하라 2016. 6. 9.
[Javascript HighPerformance] DOM 스크립팅 최적화 기법 DOM은 메모리를 많이 차지하는 요소중 하나이며 전역으로 사용되기 때문에 사용을 조심히 다루는 것이 홈페이지에 속도를 최적화 할 수 있다. [자바스크립트 성능 최적화 中] 1) DOM접근을 최소화 하고 자바스크립트에서 많은 구문을 작성하라 2) 자주 접근하는 DOM은 참조를 지역변수에 하여 사용하라 3) HTML 컬렉션(getElementyById, getElementsByTagName 등등)은 문서를 동적 반영하므로 조심히 다루고 length 같은 것은 변수를 복사헤서 사용하고 무거운 작업을 할 때에는 배열에 담아서 사용하라 4) 가능한 querySelectorAll 같은 빠른 API를 사요하라 5) 리페인트와 리플로우를 항상 생각하라. 스타일 변경은 한 번에 묶어서 처리하고, DOM트리를 조작할 때는.. 2016. 6. 9.
[Javascript HighPerformance] 이벤트 위임 프로그램을 구현하다 보면 등의 표현을 사용 할 때가 있다. 이벤트 핸들러를 등록하는 것도 DOM입장에서는 하나하나 시간이 드는 작업입니다. 그래서 이를 최소화 해주시는 것이 좋고 엘리먼트에 이벤트를 등록할 시에는 부모요소에 핸들러를 하나 붙여서 모든 자식 요소에서 발생하는 이벤트를 처리하도록 하는 것이 최적화된 기법입니다. 2016. 6. 9.