웹 프론트엔드 JS 튜토리얼 JavaScript의 브라우저 비동기 로딩 분석

JavaScript의 브라우저 비동기 로딩 분석

Aug 06, 2018 pm 05:04 PM
javascript 비동기 로딩

이 기사의 내용은 JavaScript의 브라우저 비동기 로딩 분석에 관한 것입니다. 이는 특정 참조 가치가 있으므로 도움이 될 수 있습니다.

JS를 처음 배웠을 때, 우리는 js가 단일 스레드이고 동기적으로 로드된다는 것을 알았어야 했습니다. 이로 인해 html과 css의 로딩 라인이 차단됩니다(js는 html과 css를 수정할 수 있기 때문입니다).

js는 동기적으로 로드됩니다. 단점 : 로딩 도구 방식으로 문서를 차단할 필요는 없습니다. js를 오버로드하면 페이지 효율성에 영향을 미치게 됩니다. 네트워크 속도가 좋지 않으면 전체 웹사이트가 후속 렌더링 및 기타 작업 없이 js가 로드될 때까지 기다립니다.

JS의 일부 도구와 메소드는 요청 시 로드해야 합니다. 로드해야 합니까? ? ? 이때 js를 비동기적으로 로드해야 합니다.

JavaScript 비동기 로딩을 위한 세 가지 옵션.

1. defer는 비동기적으로 로드되지만 모든 DOM 문서가 구문 분석될 때까지 실행되지 않습니다. IE만 사용하거나 내부적으로 모든 코드를 작성할 수 있습니다

 <script type = "text/javascript" src = "tools.js"  defer = "defer"></script>
로그인 후 복사
<script defer = "defer">
console.log("a");
</script>
로그인 후 복사

2. 비동기 비동기 로딩, 로딩 후에 실행됩니다. 비동기는 외부 스크립트만 로드할 수 있으며 스크립트 태그에 js를 작성할 수 없습니다

 <script type = "text/javascript" aysnc = "aysnc"></script>
로그인 후 복사

위의 두 가지 방법은 다음과 같습니다. 실행 페이지를 항상 차단하지 않습니다

브라우저 호환성 문제를 해결하기 위해? ? 1번, 2번, 2번 메소드를 동시에 로드하면 코드 중복 및 실행 순서 충돌이 발생하므로 일반적인 메소드

3를 도입합니다. DOM, 그리고 로딩 후 콜백,

 var script = document.createElement(&#39;script&#39;);
 script.type = "text/javescript";
 script.src = "demo.js";
// 此时就会加载src地址里面的东西
// 此时会有一个灯塔模式,灯塔模式会产生一个img属性,用来存放地址的加载
document.head.appendChild(script);  //----此时就会在页面上展示js里面的内容
로그인 후 복사

외부 js 파일에 테스트 함수를 작성하면

var script = document.createElement(&#39;script&#39;);
script.type = "text/javascript";
script.src = "demo.js";
test();
document.head.appendChild(script);
로그인 후 복사

여기에는 외부 데모.js 파일이 표시되지 않고 그 안에 테스트 함수가 있습니다. 결과는 다음과 같습니다.

테스트 기능 실행 시 로딩 시간이 소요되는데, 테스트 실행 시에는 아직 로딩이 되지 않은 상태입니다. 따라서 테스트가 정의되지 않았음을 표시합니다. 이 문제를 어떻게 해결합니까?

먼저 onload 이벤트를 생각해 보겠습니다.

script.onload : 호환성이 매우 좋습니다. Safari chrome firefox Opera는 호환됩니다.

 script.onload = function(){
                                test();
                            }
로그인 후 복사

하지만 IE에는 스크립트에 대한 onload 이벤트가 없습니다. IE에는 script.readyState라는 자체 메서드가 있습니다.

script.readyState: IE의 스크립트에는 상태 코드(readyState)가 있으며, 상태 코드를 검증하여 로드 여부를 결정합니다. IE에서는 script 태그에 ReadyStatechange 이벤트가 있습니다. 이 이벤트는 script.readyState 값이 변경될 때 트리거되는 이벤트를 수신합니다.

(script.readyState == "complete" || script.readyState == "loaded"는 구문 분석이 완료되었음을 의미합니다.)

script.onreadystatechange = function(){
      if(script.readyState == "complete" || script.readyState == "loaded"){
                  callback(); //回调函数:当满足一定条件才可以被执行
              }
                  }
로그인 후 복사

마지막으로 주문형 로딩 기능을 구현하기 위해 함수를 캡슐화합니다.

 function loadScript(url,callback){
                        var script = document.createElement(&#39;script&#39;);
                        script.type = "text/javascript";
                        if(script.readyState){
                            script.onreadyStatechange = function(){
                                if (script.readyState == "loaded" || script.readyState == "complete") {
                                    obj[callback]();
                                }
                            }    
                        }else{
                            script.onload = function(){
                                obj[callback]();
                            }
                        }
                        script.src = url;
                        document.head.appendChild(script);
                    }

                    loadScript(&#39;demo.js&#39;,&#39;test&#39;);
로그인 후 복사

추천 관련 기사:

js 튜토리얼 - 배열 루프 삭제 오류 구현 및 해결 방법

[Javascript] zepto 소스 코드 콜백 분석

위 내용은 JavaScript의 브라우저 비동기 로딩 분석의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.

핫 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 옷 제거제

Video Face Swap

Video Face Swap

완전히 무료인 AI 얼굴 교환 도구를 사용하여 모든 비디오의 얼굴을 쉽게 바꾸세요!

뜨거운 도구

메모장++7.3.1

메모장++7.3.1

사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전

SublimeText3 중국어 버전

중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기

스튜디오 13.0.1 보내기

강력한 PHP 통합 개발 환경

드림위버 CS6

드림위버 CS6

시각적 웹 개발 도구

SublimeText3 Mac 버전

SublimeText3 Mac 버전

신 수준의 코드 편집 소프트웨어(SublimeText3)

jQuery .val()이 작동하지 않는 상황을 효과적으로 처리합니다. jQuery .val()이 작동하지 않는 상황을 효과적으로 처리합니다. Feb 20, 2024 pm 09:36 PM

제목: jQuery.val()이 작동하지 않는 문제를 해결하기 위한 방법 및 코드 예제 프런트엔드 개발에서 jQuery는 페이지 요소를 조작하는 데 자주 사용됩니다. 그 중 양식 요소의 값을 가져오거나 설정하는 것은 일반적인 작업 중 하나입니다. 일반적으로 우리는 jQuery의 .val() 메서드를 사용하여 양식 요소 값을 처리합니다. 그러나 때때로 jQuery.val()이 작동하지 않는 상황이 발생하여 일부 문제가 발생할 수 있습니다. 이 기사에서는 jQuery.val(

C# 위임이란 무엇이며 어떤 문제를 해결합니까? C# 위임이란 무엇이며 어떤 문제를 해결합니까? Apr 04, 2024 pm 12:42 PM

위임은 비동기 프로그래밍 및 이벤트 처리 문제를 해결하기 위해 객체 간에 메소드 포인터를 전달하는 데 사용되는 유형이 안전한 참조 유형입니다. 비동기 프로그래밍: 위임을 사용하면 메소드가 다른 스레드 또는 프로세스에서 실행될 수 있으므로 애플리케이션 응답성이 향상됩니다. 이벤트 처리: 대리자는 클릭이나 마우스 이동과 같은 이벤트를 생성하고 처리할 수 있도록 하여 이벤트 처리를 단순화합니다.

HTML을 읽는 방법 HTML을 읽는 방법 Apr 05, 2024 am 08:36 AM

HTML 자체는 파일을 읽을 수 없지만 다음과 같은 방법으로 파일을 읽을 수 있습니다. JavaScript(XMLHttpRequest, fetch()) 사용; 서버 측 언어(PHP, Node.js) 사용; get() , axios, fs-extra).

웹 사이트 속도를 향상시키는 핵심 최적화 모드, 모든 프런트엔드 개발자가 마스터해야 합니다! 웹 사이트 속도를 향상시키는 핵심 최적화 모드, 모든 프런트엔드 개발자가 마스터해야 합니다! Feb 02, 2024 pm 05:36 PM

프런트엔드 개발자의 필수품: 최적화 모드를 마스터하고 웹사이트를 멋지게 만드세요! 인터넷의 급속한 발전과 함께 웹사이트는 기업 홍보와 커뮤니케이션의 중요한 채널 중 하나로 자리 잡았습니다. 성능이 좋고 로딩 속도가 빠른 웹사이트는 사용자 경험을 향상시킬 뿐만 아니라 더 많은 방문자를 유치합니다. 프런트엔드 개발자로서 몇 가지 최적화 패턴을 익히는 것이 중요합니다. 이 기사에서는 개발자가 웹 사이트를 더 잘 최적화하는 데 도움이 되도록 일반적으로 사용되는 몇 가지 프런트 엔드 최적화 기술을 소개합니다. 압축 파일 웹 사이트 개발에서 일반적으로 사용되는 파일 형식에는 HTML, CSS 및 J가 포함됩니다.

WordPress에서 페이지 리디렉션을 방지하는 방법은 무엇입니까? WordPress에서 페이지 리디렉션을 방지하는 방법은 무엇입니까? Mar 05, 2024 am 09:33 AM

WordPress에서 페이지 리디렉션을 방지하는 방법은 무엇입니까? 웹사이트 개발 시 WordPress에서 페이지 비점프 설정을 구현하고 싶을 때가 있습니다. 즉, 특정 작업 중에 전체 페이지를 새로 고치지 않고도 페이지 콘텐츠를 업데이트할 수 있습니다. 이를 통해 사용자 경험이 향상되고 웹사이트가 더 부드러워집니다. 다음으로 WordPress에서 페이지 비점프 설정을 구현하는 방법을 공유하고 구체적인 코드 예제를 제공하겠습니다. 먼저 Ajax를 사용하여 페이지가 점프하는 것을 방지할 수 있습니다. 아약스

HTML에 외부 js를 도입하는 방법 HTML에 외부 js를 도입하는 방법 Apr 11, 2024 am 06:18 AM

HTML에 외부 JS 파일을 포함하려면 <script> 태그를 사용하고 로드할 파일의 URL을 지정합니다. 또한 유형, 지연 또는 비동기 속성을 지정하여 로드 및 실행 방법을 제어할 수도 있습니다. 일반적으로 <script> 태그는 페이지 렌더링을 차단하지 않으려면 <body> 섹션 하단에 배치해야 합니다.

PHP 검색 기능 최적화 팁 공유 PHP 검색 기능 최적화 팁 공유 Mar 06, 2024 am 11:12 AM

PHP 검색 기능은 항상 웹사이트 개발에서 매우 중요한 부분이었습니다. 왜냐하면 사용자는 필요한 정보를 찾기 위해 검색창을 자주 사용하기 때문입니다. 그러나 많은 웹사이트에서는 검색 기능 구현 시 효율성이 낮고, 검색 결과가 부정확한 등의 문제를 안고 있습니다. PHP 검색 기능을 최적화하는 데 도움이 되도록 이 문서에서는 몇 가지 팁을 공유하고 구체적인 코드 예제를 제공합니다. 1. 전체 텍스트 검색 엔진을 사용합니다. 기존 SQL 데이터베이스는 대량의 텍스트 콘텐츠를 처리할 때 효율성이 떨어집니다. 따라서 Elasticsearch, Solr 등과 같은 전체 텍스트 검색 엔진을 사용하는 것이 좋습니다.

웹사이트 성능 최적화에 대한 이해: 웹사이트 속도를 높이려면 다음 방법을 마스터하세요! 웹사이트 성능 최적화에 대한 이해: 웹사이트 속도를 높이려면 다음 방법을 마스터하세요! Feb 03, 2024 am 08:00 AM

공개된 웹사이트 성능 최적화: 웹사이트를 효과적으로 운영하려면 다음 방법을 숙지하세요! 인터넷의 급속한 발전으로 인해 웹사이트는 기업 홍보, 제품 전시, 커뮤니케이션 및 상호 작용을 위한 중요한 채널이 되었습니다. 그러나 사용자가 웹사이트를 방문할 때 로딩 속도가 너무 느리고 응답 시간이 너무 길면 사용자 경험이 크게 저하되고 사용자가 이탈하는 직접적인 원인이 될 수도 있습니다. 따라서 웹사이트 성능 최적화가 점점 더 중요해지고 있습니다. 그렇다면 웹사이트 성능 최적화란 무엇일까요? 간단히 말하면, 웹사이트 성능 최적화는 일련의 방법과 기술적 수단을 통해 웹사이트의 로딩 속도를 향상시키는 것입니다.

See all articles