찾다
웹 프론트엔드JS 튜토리얼jQuery.noConflect()_jquery를 쉽게 처리

jQuery는 가장 널리 사용되는 프런트엔드 프레임워크 중 하나이며 이를 기반으로 수많은 타사 라이브러리와 플러그인이 개발되었습니다. 전역 네임스페이스 오염을 방지하기 위해 jQuery는 변수 충돌을 해결하는 jQuery.noConflect() 메서드를 제공합니다. 이 방법은 의심할 여지 없이 매우 효과적이다. 불행하게도 jQuery의 공식 문서에는 이 방법이 충분히 명확하게 설명되어 있지 않으며, 많은 개발자가 jQuery.noConflect()를 호출할 때 정확히 어떤 일이 발생하는지 모르기 때문에 이를 사용할 때 많은 문제가 발생합니다. 그럼에도 불구하고 jQuery.noConstrict()의 구현 원리는 여전히 웹 개발자가 배우고 숙달할 가치가 있으며 전역 네임스페이스 오염과 같은 문제를 해결하는 강력한 도구가 될 수 있습니다.

jQuery.noContribute()의 역할은 무엇인가요?
jQuery.noConstrict()는 단 하나의 목적으로만 존재합니다. 즉, 동일한 페이지에 여러 jQuery 인스턴스, 특히 다양한 버전의 jQuery를 로드할 수 있도록 해줍니다. 한 페이지에 여러 다른 버전의 jQuery 객체를 로드/사용해야 하는 이유가 무엇인지 궁금할 것입니다. 일반적으로 두 가지 상황이 있습니다. 첫 번째 경우에는 비즈니스 코드가 최신 버전의 jQuery 라이브러리를 사용하고, 선택한 타사 플러그인은 이전 버전의 jQuery 라이브러리에 의존합니다. 두 번째 경우에는 이미 있는 시스템을 유지 관리하고 있습니다. 비즈니스 여러 가지 이유로 코드는 이전 버전의 jQuery 라이브러리를 참조하고 새로 개발된 모듈은 다른 버전의 jQuery 라이브러리를 사용합니다. 두 경우 모두 jQuery 개체/메서드 충돌 문제에 직면해야 합니다. 다행스럽게도 jQuery.noConstrict()는 이 문제를 해결하는 데 도움이 됩니다.

jQuery가 로드되면 어떻게 되나요?
jQuery가 페이지에서 참조/로드되면 자체 실행 함수(익명 함수)에 캡슐화됩니다. jQuery가 제공하는 모든 변수, 함수 및 개체는 익명 함수 내부의 실행 환경에 있으며 외부에서 호출할 수 없습니다. 환경을 보호합니다. 글로벌 네임스페이스 오염을 방지합니다.

<script src="//ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js"></script>

jQuery는 익명 함수 내부에 jQuery와 $라는 두 개의 전역 개체를 정의하여 외부 환경에 자신을 노출합니다. 개발자가 사용하는 다양한 공개 메소드는 jQuery.ajax(), jQuery.css() 등과 같은 두 객체를 통해 액세스됩니다. 처음에는 익명 함수 내부의 동일한 개체 jQuery(개인 변수)를 가리키며 이를 통해 익명 함수 내부의 개인 변수와 함수에 액세스합니다. 이를 통해 익명 함수의 내부 전용 변수와 함수가 실행된 후에도 메모리에 계속 남아 있을 수 있으며 JavaScript 가비지 수집 메커니즘에 의해 지워지지 않습니다.

window.jQuery = window.$ = jQuery;

페이지에서 jQuery를 로드할 때 현재 페이지에는 이미 두 개의 전역 변수인 jQuery와 $가 있을 수 있습니다(예를 들어 다른 타사 라이브러리가 로드되고 내부적으로 정의되기도 함). 이로 인해 기존 개체가 덮어썼습니다(전역 네임스페이스 오염). 이 문제를 해결하기 위해 jQuery는 기존 전역 변수를 내부적으로 캐시하고 후속 호출을 위해 이를 개인 변수 _jQuery 및 _$에 저장합니다. 따라서 jQuery 라이브러리가 페이지에 로드될 때 jQuery 및 $ 개체가 아직 존재하지 않으면 _jQuery 및 _$는 모두 정의되지 않습니다. 그렇지 않으면 기존 jQuery 및 $에 대한 참조를 저장합니다(아마도 타사에서 가져온 것임). 이전에 참조된 라이브러리) 또는 다른 버전의 jQuery 라이브러리). 이후에 jQuery는 이 두 전역 변수를 덮어쓰고 위에서 설명한 대로 외부 환경에 노출됩니다. 이 시점에서 페이지의 전역 변수 jQuery 및 $는 방금 소개한 jQuery 라이브러리를 가리켰습니다.

// Map over jQuery in case of overwrite
_jQuery = window.jQuery,

// Map over the $ in case of overwrite
_$ = window.$,

// Otherwise expose jQuery to the global object as usual
window.jQuery = window.$ = jQuery;

jQuery.noContribute()의 마법 같은 효과?
 당신이 유지 관리하는 시스템이 이미 jQuery 라이브러리 버전 1.7.0을 참조하고 있고 새로 추가된 함수에서 jQuery 라이브러리 버전 1.10.2를 참조한다고 가정합니다. 그렇다면 jQuery 1.7.0을 재사용하거나 두 버전의 jQuery 라이브러리를 동시에 사용할 수 있는 방법이 있습니까? 대답은 '예'입니다. 즉, jQuery.noConflect()입니다. 실제로 jQuery.noConflect()를 사용하면 전역 변수 jQuery 및 $를 이전에 참조된 객체로 즉시 리디렉션할 수 있습니다. 놀랍지 않나요? 이것이 jQuery가 외부 세계에 노출되기 전에 이전에 참조된 객체를 내부적으로 캐시하는 이유입니다.
− jQuery.noConstrict()는 선택적 부울 매개변수를 허용하며 일반적으로 기본값은 false입니다. 이 매개변수는 어떤 영향을 미치나요? 실제로는 매우 간단합니다. jQuery.noConflect() 또는 jQuery.noConflect(false)가 호출되면 전역 변수 $만 이전 참조 값으로 재설정됩니다. $는 이전 참조 값으로 재설정됩니다. jQuery와 $는 모두 이전 참조 값으로 재설정됩니다. 이는 매우 중요하므로 명심하는 것이 좋습니다. jQuery.noConflect(false/true)를 호출하면 현재 jQuery 인스턴스가 반환됩니다. 이 기능을 사용하면 jQuery의 이름을 바꿀 수 있습니다.

// "Renaming" jQuery
var jayquery = jQuery.noConflict( true );
// Now we can call things like jayquery.ajax(), jayquery.css(), and so on

우리가 마법의 noContribute()를 실제로 이해하고 있는지 테스트하기 위해 또 다른 코드 조각을 살펴보겠습니다.



<script src="//ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js"></script>


핫 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를 무료로 생성하십시오.

뜨거운 도구

안전한 시험 브라우저

안전한 시험 브라우저

안전한 시험 브라우저는 온라인 시험을 안전하게 치르기 위한 보안 브라우저 환경입니다. 이 소프트웨어는 모든 컴퓨터를 안전한 워크스테이션으로 바꿔줍니다. 이는 모든 유틸리티에 대한 액세스를 제어하고 학생들이 승인되지 않은 리소스를 사용하는 것을 방지합니다.

ZendStudio 13.5.1 맥

ZendStudio 13.5.1 맥

강력한 PHP 통합 개발 환경

MinGW - Windows용 미니멀리스트 GNU

MinGW - Windows용 미니멀리스트 GNU

이 프로젝트는 osdn.net/projects/mingw로 마이그레이션되는 중입니다. 계속해서 그곳에서 우리를 팔로우할 수 있습니다. MinGW: GCC(GNU Compiler Collection)의 기본 Windows 포트로, 기본 Windows 애플리케이션을 구축하기 위한 무료 배포 가능 가져오기 라이브러리 및 헤더 파일로 C99 기능을 지원하는 MSVC 런타임에 대한 확장이 포함되어 있습니다. 모든 MinGW 소프트웨어는 64비트 Windows 플랫폼에서 실행될 수 있습니다.

SublimeText3 중국어 버전

SublimeText3 중국어 버전

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

에디트플러스 중국어 크랙 버전

에디트플러스 중국어 크랙 버전

작은 크기, 구문 강조, 코드 프롬프트 기능을 지원하지 않음