찾다
웹 프론트엔드JS 튜토리얼JavaScript의 지연 로딩에 대해 자세히 알아보기

JavaScript의 지연 로딩에 대해 자세히 알아보기

이 글에서는 웹에서 지연 로딩이 어떻게 작동하는지 살펴보겠습니다. 지연 로딩이 구현되는 방법, 지연 로딩의 중요성과 장점, 그리고 마지막으로 지연 로딩 웹 콘텐츠에 대한 간단한 사용 사례 등 기본 지연 로딩 API를 다룰 것입니다.

지연 로딩 API와 그 작동 방식을 이해하면 이러한 기술을 구현하는 라이브러리와 프레임워크를 이미 사용하고 있는 개발자가 내부에서 무슨 일이 일어나고 있는지 이해하는 데 도움이 됩니다. 또한 자체 지연 로딩 라이브러리를 구현할 계획이라면 더 많은 안내 연구를 수행하고 배운 기술을 적용할 수 있을 것입니다.

실제 사용 사례의 경우 플랫폼의 광고에서 수익을 창출하는 마케팅 및 광고 회사는 지연 로딩을 쉽게 최적화하고 적용하여 플랫폼을 방문하는 사용자에게 어떤 광고가 표시되는지 쉽게 판단하여 더 나은 비즈니스 결정을 내릴 수 있습니다.

추천 튜토리얼: "JavaScript 비디오 튜토리얼"

지연 로딩이란 무엇인가요?

Wikipedia에 따르면, 지연 로딩은 필요할 때 요소나 객체의 초기화를 연기하는 데 사용되는 디자인 패턴입니다. 이는 사용자가 웹 페이지에서 스크롤할 때만 상위 DOM 요소와 관련된 대상 DOM 요소가 로드되고 표시된다는 것을 의미합니다(두 요소 사이에 교차점이 있을 때 설정된 임계값을 기반으로 함).

이 패턴을 채택하지 않을 경우의 단점은 다음과 같습니다.

  • 하나 이상의 소스에서 여러 이미지 또는 기타 웹 리소스를 가져오기 위한 여러 동시 네트워크 요청 또는 일괄 요청으로 인해 페이지 성능이 심각하게 지연됩니다.

  • 페이지 로드 증가 다운로드/가져오기에 패키지 크기로 인한 시간

  • 낮은 사용자 유지율, 주로 인터넷 연결 상태가 좋지 않은 지역에 적합합니다. 우리 개발자가 초기에 지연 로딩을 구현하지 않는 실수를 저지르면 사용자가 플랫폼을 완전히 사용하지 않는 경우가 많습니다

  • 이미지, iframe, 비디오와 같은 리소스나 자산의 부적절한 처리로 인해 웹에 미치는 영향 성능 및 접근성 엄청난 영향

현재 대부분의 최신 브라우저는 웹에서 지연 로딩을 지원합니다. 그러나 아직 이 지원을 제공하지 않는 브라우저의 경우 이 기술을 구현하는 shim 또는 라이브러리는 그 위에 간단한 API 레이어를 제공합니다.

지연 로딩은 초기 페이지 로드 시간을 줄이는 문제를 해결합니다. 즉, 사용자가 웹 페이지를 초기화할 때와 페이지를 스크롤할 때 확인해야 하는 이미지나 기타 콘텐츠 등의 리소스만 표시합니다.

우리 모두 알고 있듯이 웹 성능 및 접근성 문제는 다면적입니다. 페이지 크기, 메모리 공간 및 일반 로드 시간을 줄이면 웹 플랫폼에 많은 영향을 미칠 수 있습니다. 지연 로딩의 장점은 많은 이미지와 비디오가 있고 브라우저 DOM이 초기화될 때 한꺼번에 로드될 때 분명해집니다.

물론, 앞서 논의한 것처럼 이것이 어떤 결과로 이어질지 이제 이해해야 합니다.

데이터에 따르면 대부분의 웹사이트는 타겟 고객에게 정보를 전달하기 위해 이미지와 동영상, iframe 등의 기타 웹 콘텐츠에 크게 의존하고 있습니다. 이는 사소하고 단순해 보일 수 있지만, 이 콘텐츠를 사용자에게 표시하는 방식에 따라 궁극적으로 플랫폼의 성능이 결정됩니다.

또한 페이지 로드 시간을 최적화하는 데 도움이 되는 작업(예: 사용자가 페이지의 특정 부분으로 스크롤하는지 여부에 따라 달라지는 이벤트)은 지연 로드의 일부 사용 사례입니다. 이 기사를 계속하면서 실제 환경의 다른 사용 사례에 대해 자세히 알아 보겠습니다.

Native Lazy Loading API

Lazy Loading은 상위 요소의 요소가 브라우저 뷰포트 내에서 사용 가능하거나 표시될 때 라는 대상을 감지하거나 알 수 있는 방법을 제공하는 브라우저 API인 Intersection Observer API를 기반으로 합니다. (적절하게).

이런 일이 발생하면 나중에 살펴보겠지만 코드 로직의 다른 부분을 처리하는 데 도움이 되는 핸들러 함수가 호출됩니다.

이 새롭고 향상된 브라우저 API를 사용하면 두 개의 DOM 요소가 교차하는 시기도 알 수 있습니다. 즉, 대상 DOM 요소가 브라우저의 뷰포트에 들어가거나 다른 요소(아마도 상위 요소)와 접촉하는 시기를 의미합니다.

지연 로딩이 어떻게 작동하는지 더 잘 이해하려면 먼저 교차 관찰자를 만드는 방법을 이해해야 합니다. 교차점 관찰자를 생성하기 위해 우리가 해야 할 일은 교차점 관찰자 이벤트가 발생하는 것을 수신하고 그러한 이벤트가 발생할 때 실행할 콜백 함수 또는 핸들러를 트리거하는 것뿐입니다.

교차점 관찰자 이벤트는 DOMContentLoaded 이벤트를 포함하는 문서 이벤트 카테고리와 유사한 브라우저 이벤트입니다.

참고: 교차로 이벤트의 경우 교차로를 적용할 요소를 지정해야 합니다. 이 요소를 루트 요소라고도 합니다. 그러나 루트 요소가 지정되지 않으면 전체 브라우저 창을 대상으로 한다는 의미입니다.

또한 필요한 경우 교차점에서 모양이나 크기를 쉽게 변경할 수 있도록 루트 요소(제공된 경우)에 공백을 지정해야 합니다. 더 잘 이해하기 위해 예를 살펴보겠습니다.

let options = {
root: null,
rootMargin: 10px,
threshold: 1.0
}

let observer  = new IntersectionObserver (options, callback);

위의 코드 조각에서 관찰자를 생성하는 간단한 사용 사례를 볼 수 있습니다. options 개체는 대상에 대한 사용자 정의 속성을 정의하는 데 도움이 됩니다. options对象帮助我们定义目标的自定义属性。

这里,options对象中的threshold属性表示何时触发回调。它的默认值为0,这意味着一旦用户接近目标元素并且它变得可见,就会触发回调。

另一方面,根元素是父元素,当目标元素在用户滚动网页时对用户可见时,根元素充当目标元素的视区。注意,如果根设置为空,父元素将自动成为视区。

最后,rootMargin帮助设置根元素周围的空白。例如,在计算目标元素和父元素/viewport之间的交集之前,可能需要调整它的大小、边距或维数。

而且,接受两个输入参数的回调包括一个我们打算应用于目标元素和调用回调的观察者的intersectionObserverEntry对象列表。

回调的签名如下:

let callback = (entries, observer) => {
entries.forEach(entry => {
If (entry.isIntersection) {
// do some magic here
}
// and some other methods
})
}

该intersectionObserverEntry对象表示父元素和目标元素之间存在交集。它有一堆的API中的属性,其中包括isIntersectionintersectionRatiointersectionRecttargettime,等。

我们需要针对特定的DOM元素,并在它与父元素相交时触发回调函数。目标DOM元素的一个例子如下面的代码片段所示:

let target = document.querySelector("#targetElement");

在上面的代码片段中,我们创建了一个目标元素并为它分配了一个变量。之后,我们使用intersectionObserver构造函数/函数签名上的observe方法观察目标元素,如下所示:

// start observing for changes on the target element
observer.observe(target);

当观察者为目标设置的阈值达到时,将触发回调。

最后,observe()方法告诉观察者要观察什么目标元素。请注意,交集观察者在它的API中同样有一堆方法:unObserve()takeRecords()observe()

여기서 options 개체의 threshold 속성은 콜백이 트리거되는 시기를 나타냅니다. 기본값은 0입니다. 즉, 사용자가 대상 요소에 접근하고 해당 요소가 표시되면 콜백이 트리거됩니다.

반면, 루트 요소는 웹 페이지를 스크롤할 때 대상 요소가 사용자에게 표시될 때 대상 요소의 뷰포트 역할을 하는 상위 요소입니다. 루트가 비어 있으면 상위 요소가 자동으로 뷰포트가 됩니다. 마지막으로 rootMargin은 루트 요소 주위에 여백을 설정하는 데 도움이 됩니다. 예를 들어 대상 요소와 상위 요소/뷰포트 간의 교차점을 계산하기 전에 대상 요소의 크기, 여백 또는 크기를 조정해야 할 수 있습니다.

또한 두 개의 입력 매개변수를 허용하는 콜백에는 대상 요소에 적용하려는 intersectionObserverEntry 객체 목록과 콜백을 호출하는 관찰자가 포함됩니다.

콜백의 서명은 다음과 같습니다.
    let  options = {
    root: document.querySelector('.root'),
    rootMargin: '0px, 0px, 100px, 0px'
    };
  • IntersectionObserverEntry 개체는 상위 요소와 대상 요소 사이에 교차점이 있음을 나타냅니다. API에는 isIntersection, intersectionRatio, intersectionRect, target, 를 포함한 여러 속성이 있습니다. 시간

    특정 DOM 요소를 대상으로 하고 해당 요소가 상위 요소와 교차할 때 콜백 함수를 트리거해야 합니다. 다음 코드 조각에는 대상 DOM 요소의 예가 나와 있습니다.
  • let  images = [...document.querySelectorAll('.targetImages')];
  • 위 코드 조각에서는 대상 요소를 만들고 여기에 변수를 할당했습니다. 그 후 다음과 같이 IntersectionObserver 생성자/함수 시그니처의 관찰 메서드를 사용하여 대상 요소를 관찰합니다.

    const callback = (entries) => {
    
    entries.forEach(entry => {
     If (entry.isIntersecting) {
        observer.unObserve('entry.target');
    }
    // handle other code logic here 
    })
    }

    대상에 대해 관찰자가 설정한 임계값에 도달하면 콜백이 트리거됩니다.
  • 마지막으로 observe() 메서드는 관찰할 대상 요소가 무엇인지 관찰자에게 알려줍니다. 교차 관찰자에는 API에 unObserve(), takeRecords(), observe() 등의 여러 메서드도 있다는 점에 유의하세요. . 몇 가지 예.

지연 로딩 기술의 장점

이제 웹 콘텐츠와 자산의 지연 로딩이 필요한 이유를 더 잘 이해해야 합니다. 이 기술을 사용하면 얻을 수 있는 몇 가지 추가 이점을 살펴보겠습니다.

접근성이 뛰어난 웹 애플리케이션을 구축하세요. 오늘날 웹 접근성에 대한 논의가 가장 중요합니다. 이 기술을 사용하면 더 넓은 플랫폼을 구축하고

사용자 유지율을 높이는 데 확실히 도움이 될 것입니다. 웹 플랫폼이 비즈니스 목표를 달성하고 가치를 제공하는 것과 관련된 경우 이 기술을 구현하면 플랫폼을 더욱 사용자 친화적으로 만드는 데 도움이 됩니다. 웹 표준은 나중에 감사할 것입니다.

개발자로서 웹 플랫폼에서 무한 스크롤을 구현해야 할 수도 있습니다. 이 개념을 이해하면 즉각적인 비즈니스 가치를 제공하는 데 큰 도움이 됩니다.

지연 로딩 구현

웹 페이지에서 이미지 지연 로딩의 간단한 예를 살펴보겠습니다. 관찰하려는 사용자 정의 옵션 개체의 교차점을 대상으로 시작하겠습니다.

let observer = new intersectionObserver(options, callback);

이제 대상 요소에 대해 몇 가지 이미지를 대상으로 하겠습니다.

images.forEach(image => {
observer.observe(image);
})
이제 콜백 구현을 살펴보겠습니다. rrreee

us 교차 관찰자 생성자는 해당 옵션 객체에 지정된 사용자 정의에 따라 대상 요소를 관찰하기 위해 계속 호출될 수 있습니다: 🎜rrreee🎜 마지막으로 관찰할 대상 요소를 관찰할 수 있습니다: 🎜rrreee🎜 참고: 단순화를 위해, 이는 HTML 및 CSS 코드에 포함되지 않습니다. MDN 문서에서 이 예제를 보면 이 기술을 구현하는 방법에 대해 자세히 알아볼 수 있습니다. 🎜🎜🎜🎜요약🎜🎜🎜🎜이제 웹 페이지에 여러 이미지나 비디오가 있고 브라우저 DOM이 초기화될 때 이를 로드하면 이 기술의 장점이 매우 분명해질 것입니다. 개발자로서 우리는 관리하거나 유지 관리하는 플랫폼의 최적 성능을 보장할 책임이 있으며, 특히 플랫폼이 비즈니스 목표와 관련되어 있는 경우 더욱 그렇습니다. 🎜🎜웹 성능 ​​기술로서 지연 로딩은 이러한 문제를 해결하는 데 도움이 됩니다. 🎜🎜더 많은 프로그래밍 관련 지식을 보려면 🎜프로그래밍 소개🎜를 방문하세요! ! 🎜

위 내용은 JavaScript의 지연 로딩에 대해 자세히 알아보기의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명
이 기사는 logrocket에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제
C/C에서 JavaScript까지 : 모든 것이 어떻게 작동하는지C/C에서 JavaScript까지 : 모든 것이 어떻게 작동하는지Apr 14, 2025 am 12:05 AM

C/C에서 JavaScript로 전환하려면 동적 타이핑, 쓰레기 수집 및 비동기 프로그래밍으로 적응해야합니다. 1) C/C는 수동 메모리 관리가 필요한 정적으로 입력 한 언어이며 JavaScript는 동적으로 입력하고 쓰레기 수집이 자동으로 처리됩니다. 2) C/C를 기계 코드로 컴파일 해야하는 반면 JavaScript는 해석 된 언어입니다. 3) JavaScript는 폐쇄, 프로토 타입 체인 및 약속과 같은 개념을 소개하여 유연성과 비동기 프로그래밍 기능을 향상시킵니다.

JavaScript 엔진 : 구현 비교JavaScript 엔진 : 구현 비교Apr 13, 2025 am 12:05 AM

각각의 엔진의 구현 원리 및 최적화 전략이 다르기 때문에 JavaScript 엔진은 JavaScript 코드를 구문 분석하고 실행할 때 다른 영향을 미칩니다. 1. 어휘 분석 : 소스 코드를 어휘 단위로 변환합니다. 2. 문법 분석 : 추상 구문 트리를 생성합니다. 3. 최적화 및 컴파일 : JIT 컴파일러를 통해 기계 코드를 생성합니다. 4. 실행 : 기계 코드를 실행하십시오. V8 엔진은 즉각적인 컴파일 및 숨겨진 클래스를 통해 최적화하여 Spidermonkey는 유형 추론 시스템을 사용하여 동일한 코드에서 성능이 다른 성능을 제공합니다.

브라우저 너머 : 실제 세계의 JavaScript브라우저 너머 : 실제 세계의 JavaScriptApr 12, 2025 am 12:06 AM

실제 세계에서 JavaScript의 응용 프로그램에는 서버 측 프로그래밍, 모바일 애플리케이션 개발 및 사물 인터넷 제어가 포함됩니다. 1. 서버 측 프로그래밍은 Node.js를 통해 실현되며 동시 요청 처리에 적합합니다. 2. 모바일 애플리케이션 개발은 재교육을 통해 수행되며 크로스 플랫폼 배포를 지원합니다. 3. Johnny-Five 라이브러리를 통한 IoT 장치 제어에 사용되며 하드웨어 상호 작용에 적합합니다.

Next.js (백엔드 통합)로 멀티 테넌트 SAAS 애플리케이션 구축Next.js (백엔드 통합)로 멀티 테넌트 SAAS 애플리케이션 구축Apr 11, 2025 am 08:23 AM

일상적인 기술 도구를 사용하여 기능적 다중 테넌트 SaaS 응용 프로그램 (Edtech 앱)을 구축했으며 동일한 작업을 수행 할 수 있습니다. 먼저, 다중 테넌트 SaaS 응용 프로그램은 무엇입니까? 멀티 테넌트 SAAS 응용 프로그램은 노래에서 여러 고객에게 서비스를 제공 할 수 있습니다.

Next.js (Frontend Integration)를 사용하여 멀티 테넌트 SaaS 응용 프로그램을 구축하는 방법Next.js (Frontend Integration)를 사용하여 멀티 테넌트 SaaS 응용 프로그램을 구축하는 방법Apr 11, 2025 am 08:22 AM

이 기사에서는 Contrim에 의해 확보 된 백엔드와의 프론트 엔드 통합을 보여 주며 Next.js를 사용하여 기능적인 Edtech SaaS 응용 프로그램을 구축합니다. Frontend는 UI 가시성을 제어하기 위해 사용자 권한을 가져오고 API가 역할 기반을 준수하도록합니다.

JavaScript : 웹 언어의 다양성 탐색JavaScript : 웹 언어의 다양성 탐색Apr 11, 2025 am 12:01 AM

JavaScript는 현대 웹 개발의 핵심 언어이며 다양성과 유연성에 널리 사용됩니다. 1) 프론트 엔드 개발 : DOM 운영 및 최신 프레임 워크 (예 : React, Vue.js, Angular)를 통해 동적 웹 페이지 및 단일 페이지 응용 프로그램을 구축합니다. 2) 서버 측 개발 : Node.js는 비 차단 I/O 모델을 사용하여 높은 동시성 및 실시간 응용 프로그램을 처리합니다. 3) 모바일 및 데스크탑 애플리케이션 개발 : 크로스 플랫폼 개발은 개발 효율을 향상시키기 위해 반응 및 전자를 통해 실현됩니다.

JavaScript의 진화 : 현재 동향과 미래 전망JavaScript의 진화 : 현재 동향과 미래 전망Apr 10, 2025 am 09:33 AM

JavaScript의 최신 트렌드에는 Typescript의 Rise, 현대 프레임 워크 및 라이브러리의 인기 및 WebAssembly의 적용이 포함됩니다. 향후 전망은보다 강력한 유형 시스템, 서버 측 JavaScript 개발, 인공 지능 및 기계 학습의 확장, IoT 및 Edge 컴퓨팅의 잠재력을 포함합니다.

Demystifying JavaScript : 그것이하는 일과 중요한 이유Demystifying JavaScript : 그것이하는 일과 중요한 이유Apr 09, 2025 am 12:07 AM

JavaScript는 현대 웹 개발의 초석이며 주요 기능에는 이벤트 중심 프로그래밍, 동적 컨텐츠 생성 및 비동기 프로그래밍이 포함됩니다. 1) 이벤트 중심 프로그래밍을 사용하면 사용자 작업에 따라 웹 페이지가 동적으로 변경 될 수 있습니다. 2) 동적 컨텐츠 생성을 사용하면 조건에 따라 페이지 컨텐츠를 조정할 수 있습니다. 3) 비동기 프로그래밍은 사용자 인터페이스가 차단되지 않도록합니다. JavaScript는 웹 상호 작용, 단일 페이지 응용 프로그램 및 서버 측 개발에 널리 사용되며 사용자 경험 및 크로스 플랫폼 개발의 유연성을 크게 향상시킵니다.

See all articles

핫 AI 도구

Undresser.AI Undress

Undresser.AI Undress

사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover

AI Clothes Remover

사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool

Undress AI Tool

무료로 이미지를 벗다

Clothoff.io

Clothoff.io

AI 옷 제거제

AI Hentai Generator

AI Hentai Generator

AI Hentai를 무료로 생성하십시오.

인기 기사

R.E.P.O. 에너지 결정과 그들이하는 일 (노란색 크리스탈)
3 몇 주 전By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. 최고의 그래픽 설정
3 몇 주 전By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. 아무도들을 수없는 경우 오디오를 수정하는 방법
3 몇 주 전By尊渡假赌尊渡假赌尊渡假赌
WWE 2K25 : Myrise에서 모든 것을 잠금 해제하는 방법
4 몇 주 전By尊渡假赌尊渡假赌尊渡假赌

뜨거운 도구

Eclipse용 SAP NetWeaver 서버 어댑터

Eclipse용 SAP NetWeaver 서버 어댑터

Eclipse를 SAP NetWeaver 애플리케이션 서버와 통합합니다.

Atom Editor Mac 버전 다운로드

Atom Editor Mac 버전 다운로드

가장 인기 있는 오픈 소스 편집기

ZendStudio 13.5.1 맥

ZendStudio 13.5.1 맥

강력한 PHP 통합 개발 환경

VSCode Windows 64비트 다운로드

VSCode Windows 64비트 다운로드

Microsoft에서 출시한 강력한 무료 IDE 편집기

스튜디오 13.0.1 보내기

스튜디오 13.0.1 보내기

강력한 PHP 통합 개발 환경