자바스크립트: IntersectionObserver (1) 이미지 lazy-loading 구현

출처 바로가기 일반적인 HTML 문서에서 <img src=”…”>를 사용하면 브라우저는 일괄적으로 이미지 로딩을 시도하게 됩니다. <!DOCTYPE html> <html lang=”en”> <head> <meta charset=”UTF-8″> <title>Document</title> </head> <body> <img src=”…/img/Chrysanthemum.jpg” alt=””> <img src=”…/img/Desert.jpg” alt=””> <img src=”…/img/Hydrangeas.jpg” alt=””> <img src=”…/img/Jellyfish.jpg” alt=””> <img src=”…/img/Koala.jpg” alt=””> <img src=”…/img/Lighthouse.jpg” alt=””> <img src=”…/img/Penguins.jpg” alt=””> <img src=”…/img/Tulips.jpg” alt=””> </body> </html> 더보기…

Vue.js: 무한 스크롤 기초(Vue-infinite-loading 라이브러리 + Spring JPA 이용)

Vue.js에서 무한 스크롤(무한 페이징, 스크롤 페이징)을 적용하는 방법입니다. Vue-infinite-loading 이라는 라이브러리를 사용하면 무한 스크롤을 쉽게 구현할 수 있습니다. 원리는 특정 영역, 일반적으로 화면 맨 아래에 화면이 이동하면 Vue.js 에서 목록을 관리하는 배열에 추가 데이터를 AJAX 로 더하여 다시 렌더링하는 방식입니다. 이 예제는 별도의 예외 상황에 대한 고려 없이 단순하게 목록을 30개씩 더보기…

Vue.js: v-on:click을 사용해 해당 요소(element)의 DOM 가져오기

출처 바로가기(영문) Vue.js: v-on:click을 사용해 해당 요소(element)의 DOM 가져오기   이벤트 객체 $event를 사용하여 이벤트 핸들러를 가져올 수 있습니다. <div id=”foo” v-on:click=”select($event)”>…</div>   $event는 자바스크립트에서 다음과 같이 처리할 수 있습니다. 참고로 event 자체는 클릭 이벤트이고, 어떤 요소를 클릭했는지 가져오는 것이 event.currentTarget(또는 event.target)입니다. export default { methods: { select: function(event) { 더보기…

자바스크립트 ES5: fetch를 사용해 blob 데이터 받아오기 (AJAX)

fetch를 이용하면 매우 간단하게 Blob 형태의 데이터를 받을 수 있습니다. await 키워드는 blob 변수를 최초 사용할 때까지만 사용하면 됩니다(await blob). 파일을 전송하는 백엔드 서버(자바 스프링) 만드는 방법은 아래 글을 참고하세요. 그리고 구버전 자바스크립트에서도 사용 가능한 XMLHttpRequest를 사용해 Blob 데이터를 받아오는 방법도 첨부합니다. JSP, Spring: URL을 입력하면 파일이 바로 다운로드되게 하기 자바스크립트: 더보기…

자바스크립트: TTS(Text-to-Speech) 라이브러리 없이

자바스크립트에서 TTS 기능을 사용하는 방법입니다. TTS(Text-to-Speech)는 텍스트를 음성 합성을 통해 컴퓨터가 읽어주는 것으로 트위치 영상등에 있는 음성 도네이션이 TTS 를 사용합니다. 음성합성으로 읽을 내용, 언어, 음성의 속도 높낮이 등을 new SpeechSynthesisUtterance() 로 설정하고 재생은 speechSynthesis.speak()를 사용합니다. speechSynthesis는 window 객체 내에 있기 때문에 그냥 사용하면 됩니다. 재생중인 음성합성을 중지할때는 speechSynthesis.cancel()을 사용합니다.  

자바스크립트: 배열 Array.reduce

MDN 문서 바로가기 자바스크립트에서 배열의 reduce 기능은 배열을 순회하면서 누산기(accumulator)에 값을 계속 쌓아놓고 최종적으로 누산기의 값을 반환하는 reducer의 기능을 수행합니다. reducer의 사전적 의미와 매칭이 잘 안되는데 어떤 물질에서 원액(누산기의 값)만 추출한다는 의미로 생각하면 될 것 같습니다. 누산기의 값은 줄어들지 않으며 리턴식은 누산기에 합산됩니다. 그리고 마지막까지 순회한 후 최종적으로 누산기의 값만을 더보기…

자바스크립트 예제: 마이크 테스트

출처 바로가기 자바스크립트에서 마이크를 사용하려면 먼저 사용자로부터 마이크 사용 권한을 획득해야 합니다. 여기서 사용자가 허용 버튼을 눌러야 이후 녹음 작업이 진행이 됩니다. 이 부분은 navigator.mediaDevices.getUserMedia(constraints).then(…)을 사용합니다. if (navigator.mediaDevices) { const constraints = { audio: true } navigator.mediaDevices.getUserMedia(constraints) .then(stream => { …………….. }) .catch(err => { console.log(‘The following error occurred: ‘ 더보기…

자바스크립트: 다국어 지원 (국제화 Internationalization) 1

국제화(Internationalization)는 홈페이지의 내용을 다국어로 지원하는 것을 뜻합니다. 백엔드 측에서 하는 방법이 있고 프론트엔드 측에서 하는 방법이 있는데 백엔드에 대한 국제화 작업은 스프링 부트, Thymeleaf 기준으로 한 다음 글을 참조해주세요. Spring Boot: 국제화(Internationalization) 제이쿼리에서도 국제화 지원을 위한 기능이 있고 이러한 라이브러리(i18n)도 있는데 처음에는 라이브러리 없이 진행해보도록 하겠습니다. 먼저 자바스크립트에서 브라우저의 언어를 알아내는 더보기…

자바스크립트: JSONP (JSON Padding) 사용법

JSONP(JavaScript Object Notation Padding)이란? 웹 브라우저에서 CORS 문제를 회피하기 위해 <script> 태그를 이용한 꼼수를 사용하여 JSON을 가져오기 위한 방법입니다. 참고: CORS(Cross-Origin Resource Sharing, 교차 출처 리소스 공유) 추가 HTTP 헤더를 사용하여, 한 출처에서 실행 중인 웹 애플리케이션이 다른 출처의 선택한 자원에 접근할 수 있는 권한을 부여하도록 브라우저에 알려주는 체제입니다. CORS의 예시로 https://domain-a.com의 더보기…

IT 기술면접(일반) 예상문제: 웹개발 프론트엔드 (작성중)

IT 기술면접(일반) 예상문제: 웹개발 프론트엔드 개발 이론 요약 깃허브 프론트엔드 면접 문제은행 리스트 웹에서의 SPA (Single Page Application) 단일 페이지로 구성된 웹 어플리케이션을 뜻하는 단어입니다. 서버사이드 렌더링을 배제하고, 필요한 데이터만 JSON 등의 형태로 받아 동적으로 렌더링합니다.   기존 웹 환경에 비해 SPA가 부각되는 이유? 기존 어플리케이션은 화면이동 시에 화면 이동에 더보기…