웹 프론트엔드 JS 튜토리얼 jQuery 소스코드 분석-04 선택기-Sizzle-작동원리분석_jquery

jQuery 소스코드 분석-04 선택기-Sizzle-작동원리분석_jquery

May 16, 2016 pm 05:59 PM
작동 원리

작성자: nuysoft/Gao Yun QQ: 47214707 이메일: nuysoft@gmail.com
진술: 이 기사는 원본 기사입니다. 재인쇄해야 하는 경우 출처를 표시하고 원본 링크를 유지하세요.
Sizzle 소스 코드를 분석하기 전에 선택기의 작동 원리를 정리하겠습니다.

나중에 읽을 때 모호함이 없도록 먼저 선택기에 사용되는 일부 명사를 명확히 합니다.

Selector 표현식: "div > p"
블록 표현식: "div" "p"
열 선택기 표현식: "div, p"
블록 분할기: Sizzle의 Chunker Regular, 선택용 표현식이 분할됩니다. 왼쪽에서 오른쪽으로 블록 표현식으로
Finder: 블록 표현식을 검색하고 발견된 DOM 요소의 배열을 후보 집합이라고 합니다.
필터: 블록 표현식과 후보 집합을 필터링합니다.
관계 필터는 두 블록 사이의 관계를 필터링합니다. 블록 표현식에는 총 4개의 관계가 있습니다. "" 직계 형제 관계 ">" 상위-자식 관계 및 "~" 뒤의 모든 형제 관계
후보 세트: finder, 필터로 필터링
맵 세트: 후보 세트의 복사본, 필터 및 맵 세트를 필터링하기 위한 관계형 필터

워크플로:

1. 선택기 표현식을 왼쪽에서 오른쪽으로 분할하려면
쉼표 ","로 분할된 병렬 선택기 표현식을 만나면 첫 번째 쉼표 변환기 표현식 앞의 선택으로만 분할하고 나머지 부분을 기록하세요

2. Sizzle.find에서 마지막 블록 표현식을 검색하고 그 결과를 후보 세트에 넣은 다음 블록 표현식에서 일치하는 문자열 부분을 삭제합니다.
파인더 Sizzle.find는 정규 세트 Expr에서 해당 정규 표현식을 얻습니다. 일치하고 일치하는 경우 검색 기능 세트 Expr.find에서 해당 검색 기능을 가져와 실행합니다.
검색 순서는 Expr.order에 정의되어 있으며 순서는 다음과 같습니다. ID CLASS NAME TAG를 검색할 때 브라우저는 getElementsByClassName을 지원해야 합니다.
Expr.match는 ID의 정규 일치 표현식을 설정합니다. CLASS NAME ATTR TAG CHILD POS PSEUDO

3. 마지막 블록 표현식이 비어 있지 않은 경우 (문자열), 필터 Sizzle.filter는 집합을 필터링합니다
필터 Sizzle.filter는 단일 블록 표현식과 후보 집합 집합의 요소에만 작동합니다. 후보 집합의 요소가 나머지를 만족하는지 확인하여 작동합니다. 블록 표현식
필터 Sizzle.filter의 필터링 과정 중 조건에 맞지 않는 것은 false로 설정되고, 조건에 맞는 것은 수정되지 않습니다
필터링 시 해당 정규식을 정규식에서 가져옵니다. Expr.leftMatch를 설정하고 블록 표현식을 일치시킵니다. 일치에 성공하면 Expr.filter에서 해당 필터 함수를 가져와 실행합니다.
Expr.leftMatch는 Expr.match와 동일한 수의 정규식을 정의합니다. 공식: ID CLASS NAME ATTR TAG CHILD POS PSEUDO
필터 함수 세트 Expr.filter는 PSEUDO CHILD ID TAG CLASS ATTR POS의 필터 기능을 정의합니다.
필터 Sizzle.filter는 필터링 전에 사전 필터 Expr을 호출합니다. .preFilter는 필터링에 필요한 매개변수를 수정합니다. , 그러나 CLASS는 예외
CLASS가 사전 필터링되면 클래스와 일치하는 요소를 후보 집합으로 직접 반환하도록 최적화되어 필터링 범위와 후보 집합 범위가 좁아집니다
위에서 얻은 후보 집합 집합을 복사합니다. 검색 및 필터링하여 매핑 세트 checkSet에 넣습니다. 후속 필터링 작업은 checkSet
에서 수행되며 마지막 블록 표현식의 검색 및 필터링이 여기서 끝나고 후보 세트 세트와 checkSet
4. 매핑 세트 checkSet에서 오른쪽에서 왼쪽으로 나머지 블록 표현식을 필터링하고, 이전 블록 표현식과의 관계를 기반으로 관계 필터 세트 Expr.relative에서 해당 함수를 가져옵니다 관계형 필터 Expr.relative의 필터링 과정에서 조건에 맞지 않는 것은 false로 설정되고, 조건에 맞는 것은 부모 요소, 조상 요소, 형제 요소 간의 관계로 설정됩니다.
네 가지 유형이 있습니다: " " 직계 형제 관계 ">" 아버지-아들 관계; "~" 이후의 모든 형제 관계
관계 필터 Expr.relative의 필터링 과정에서 다음과 같은 경우가 발생합니다. 표현식은 태그 TAG이고 태그 유형 nodeName을 직접 비교하여 동일한지 확인합니다.
태그 TAG가 아닌 경우 필터 Sizzle.filter가 호출되어 필터링 프로세스에 대해 3단계를 참조하세요.
오른쪽부터 모든 블록 표현식이 필터링될 때까지 왼쪽으로 필터링

5. 필터링된 매핑 집합 checkSet에 따라 매핑 집합 checkSet
에서 null인 경우 최종 결과 집합을 선택합니다. , false는 필터링됩니다
Element(nodeType===1)가 아니면 필터링됩니다
컨텍스트가 Document가 아니고 Element이고 Element의 하위 요소가 아닌 경우에는 필터링됩니다. 필터링됨

6. 병렬 표현식이 있는 경우 1~5를 반복하고 최종 결과 집합을 병합, 정렬, 중복 제거
선택기 표현식이 하나만 있고 병렬 선택기 표현식이 없으면 정렬이 없습니다. 필수

다음 프로세스는 Sizzle에 속하지 않고 jQuery의 Sizzle 확장에 속합니다

7. context가 여러 개인 경우 각 context에 대해 1~6을 반복합니다.
Multiple context 예: $(' div').find('div > p'), $('div')는 여러 div를 찾을 수 있습니다.
사실 7단계는 7단계부터 호출 1까지의 jQuery 선택기로의 입구입니다. ~6, 결과 세트로 빈 jQuery 객체에서 Pass를 호출하는 경우
기본적으로 문서는 컨텍스트입니다. (context || rootjQuery).find( selector )

8 결과를 병합하고 제거합니다. 여러 컨텍스트에서 찾은 세트 반복하여 결과 세트 반환

완료!

본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 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 옷 제거제

AI Hentai Generator

AI Hentai Generator

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

뜨거운 도구

메모장++7.3.1

메모장++7.3.1

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

SublimeText3 중국어 버전

SublimeText3 중국어 버전

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

스튜디오 13.0.1 보내기

스튜디오 13.0.1 보내기

강력한 PHP 통합 개발 환경

드림위버 CS6

드림위버 CS6

시각적 웹 개발 도구

SublimeText3 Mac 버전

SublimeText3 Mac 버전

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

SOL 코인이란? SOL 코인은 어떻게 작동하나요? SOL 코인이란? SOL 코인은 어떻게 작동하나요? Mar 16, 2024 am 10:37 AM

솔라나 블록체인과 SOL 토큰 솔라나는 분산 애플리케이션(dApp)에 고성능, 보안, 확장성을 제공하는 데 초점을 맞춘 블록체인 플랫폼입니다. 솔라나 블록체인의 기본 자산인 SOL 토큰은 주로 거래 수수료 지불, 서약, 거버넌스 결정 참여에 사용됩니다. 솔라나의 독특한 특징은 빠른 거래 확인 시간과 높은 처리량으로 개발자와 사용자가 선호하는 선택입니다. SOL 토큰을 통해 사용자는 솔라나 생태계의 다양한 활동에 참여하고 플랫폼의 개발과 발전을 공동으로 추진할 수 있습니다. 솔라나의 작동 원리 솔라나는 수천 건의 거래를 효율적으로 처리할 수 있는 역사 증명(PoH)이라는 혁신적인 합의 메커니즘을 사용합니다.

Spring Data JPA의 아키텍처와 작동 원리는 무엇입니까? Spring Data JPA의 아키텍처와 작동 원리는 무엇입니까? Apr 17, 2024 pm 02:48 PM

SpringDataJPA는 JPA 아키텍처를 기반으로 하며 매핑, ORM 및 트랜잭션 관리를 통해 데이터베이스와 상호 작용합니다. 해당 리포지토리는 CRUD 작업을 제공하고 파생 쿼리는 데이터베이스 액세스를 단순화합니다. 또한 지연 로딩을 사용하여 필요한 경우에만 데이터를 검색하므로 성능이 향상됩니다.

폴리곤 코인이란? 폴리곤 코인은 어떻게 작동하나요? 폴리곤 코인이란? 폴리곤 코인은 어떻게 작동하나요? Mar 16, 2024 am 09:22 AM

Polygon: 이더리움 생태계를 구축하는 다기능 블록체인 Polygon은 이전에 MaticNetwork로 알려진 Ethereum을 기반으로 구축된 다기능 블록체인 플랫폼입니다. 이더리움 네트워크의 확장성, 높은 수수료, 복잡성 문제를 해결하는 것이 목표입니다. Polygon은 확장성 솔루션을 제공하여 개발자와 사용자에게 더 빠르고 저렴하며 간단한 블록체인 경험을 제공합니다. Polygon의 작동 방식은 다음과 같습니다. 사이드체인 네트워크: Polygon은 여러 사이드체인의 네트워크를 생성합니다. 이러한 사이드체인은 메인 이더리움 체인과 병렬로 실행되며 대량의 트랜잭션을 처리할 수 있으므로 전체 네트워크 처리량이 증가합니다. 플라즈마 프레임워크: Polygon은 플라즈마 프레임워크를 활용합니다.

VET 코인이란 무엇인가요? VET 코인은 어떻게 작동하나요? VET 코인이란 무엇인가요? VET 코인은 어떻게 작동하나요? Mar 16, 2024 am 11:40 AM

VET 코인: 블록체인 기반 IoT 생태계 VeChainThor(VET)는 데이터의 신뢰성을 보장하고 공급망 관리 및 비즈니스 프로세스의 안전한 전송을 가능하게 하여 사물 인터넷(IoT) 분야를 향상시키는 것을 목표로 하는 블록체인 기술 기반 플랫폼입니다. . VET 코인은 VeChainThor 블록체인의 기본 토큰이며 다음과 같은 기능을 가지고 있습니다: 거래 수수료 지불: VET 코인은 데이터 저장, 스마트 계약 실행 및 신원 확인을 포함하여 VeChainThor 네트워크에서 거래 수수료를 지불하는 데 사용됩니다. 거버넌스: VET 토큰 보유자는 플랫폼 업그레이드 및 제안에 대한 투표를 포함하여 VeChainThor의 거버넌스에 참여할 수 있습니다. 인센티브: VET 코인은 네트워크의 검증자에게 인센티브를 제공하여 다음을 보장하는 데 사용됩니다.

SHIB 코인이란? SHIB 코인은 어떻게 작동하나요? SHIB 코인이란? SHIB 코인은 어떻게 작동하나요? Mar 17, 2024 am 08:49 AM

ShibaInu 코인: 개에서 영감을 받은 암호화폐 ShibaInu 코인(SHIB)은 상징적인 Shiba Inu 이모티콘에서 영감을 받은 분산형 암호화폐입니다. 암호화폐는 2020년 8월에 출시되었으며 이더리움 네트워크에서 Dogecoin의 대안이 되는 것을 목표로 합니다. 작동 원리 SHIB 코인은 이더리움 블록체인을 기반으로 구축된 디지털 통화이며 ERC-20 토큰 표준을 준수합니다. 이는 분산 합의 메커니즘인 지분 증명(PoS)을 활용하여 보유자가 SHIB 토큰을 스테이킹하여 거래를 확인하고 이에 대한 보상을 받을 수 있도록 합니다. 주요 특징 막대한 공급량: SHIB 코인의 초기 공급량은 1,000조 코인으로, 유통되는 암호화폐 중 최대 규모입니다. 낮은 가격

알고랜드 코인이란 무엇인가요? 알고랜드 코인은 어떻게 작동하나요? 알고랜드 코인이란 무엇인가요? 알고랜드 코인은 어떻게 작동하나요? Mar 17, 2024 am 08:30 AM

알고랜드(Algorand): 순수 비잔틴 합의 프로토콜을 기반으로 한 블록체인 플랫폼입니다. 알고랜드는 순수 비잔틴 합의 프로토콜을 기반으로 구축된 블록체인 플랫폼으로, 효율적이고 안전하며 확장 가능한 블록체인 솔루션을 제공하는 것을 목표로 합니다. 이 플랫폼은 MIT 교수 Silvio Micali가 2017년에 설립했습니다. 작동 원리 알고랜드의 핵심은 고유한 순수 비잔틴 합의 프로토콜인 알고랜드 합의에 있습니다. 이 프로토콜을 사용하면 네트워크에 악의적인 노드가 있더라도 노드는 무신뢰 환경에서 합의를 달성할 수 있습니다. 알고랜드 합의는 일련의 단계를 통해 이 목표를 달성합니다. 키 생성: 각 노드는 공개 키와 개인 키 쌍을 생성합니다. 제안 단계: 무작위로 선택된 노드가 새로운 영역을 제안합니다.

빔코인이란 무엇인가요? 빔 코인은 어떻게 작동하나요? 빔코인이란 무엇인가요? 빔 코인은 어떻게 작동하나요? Mar 15, 2024 pm 09:50 PM

Beam 코인: 개인 정보 보호에 초점을 맞춘 암호화폐 Beam 코인은 안전하고 익명의 거래를 제공하도록 설계된 개인 정보 보호에 초점을 맞춘 암호화폐입니다. 이는 거래를 병합하고 발신자와 수신자의 주소를 숨겨 사용자 개인정보 보호를 강화하는 블록체인 기술인 MimbleWimble 프로토콜을 사용합니다. Beam Coin의 디자인 컨셉은 사용자에게 거래 정보의 기밀성을 보장하는 디지털 통화 옵션을 제공하는 것입니다. 이 프로토콜을 채택함으로써 사용자는 개인정보 유출에 대한 걱정 없이 더욱 안심하고 거래를 수행할 수 있습니다. 이 개인 정보 보호 기능을 통해 Beam Coin이 작동합니다. Beam Coin 작동 방식: MimbleWimble 프로토콜은 다음을 통해 개인 정보 보호를 강화합니다. 트랜잭션 병합: 여러 트랜잭션을 하나의 트랜잭션으로 결합합니다.

AR 코인이란? AR 코인은 어떻게 작동하나요? AR 코인이란? AR 코인은 어떻게 작동하나요? Mar 15, 2024 pm 07:25 PM

AR 코인(AR Coin): 증강현실 기술을 기반으로 한 디지털 화폐 AR 코인은 증강현실 기술을 이용해 사용자에게 디지털 콘텐츠와 상호작용하는 경험을 제공함으로써 현실 세계에서 몰입형 경험을 창출할 수 있게 해주는 디지털 화폐입니다. 작동 방식 AR 코인은 다음 주요 개념을 기반으로 작동합니다. 증강 현실(AR): AR 기술은 현실 세계에 디지털 정보를 오버레이하여 사용자가 가상 ​​개체와 상호 작용할 수 있도록 합니다. 블록체인: 블록체인은 거래를 기록하고 확인하는 데 사용되는 분산 원장 기술입니다. AR 코인에 보안성과 투명성을 제공합니다. 스마트 계약: 스마트 계약은 특정 작업을 자동화하는 데 사용되는 블록체인에 저장된 코드입니다. AR 코인 생성 및 관리에 중요한 역할을 합니다. AR 코인의 작업 흐름은 다음과 같습니다. AR 바디 생성

See all articles