VUE3.0을 빠르게 시작하는 방법: 학습 시작
기사 시작 부분에서 일반적인 용어로 DOM과 BOM이 무엇인지 언급하고 싶습니다. 왜냐하면 이 기사는 궁극적으로 특정 JavaScript 기초를 갖고 있지만 DOM과 BOM에 대해 이해하지 못하거나 심지어 알지 못하는 친구들을 대상으로 하기 때문입니다. .
그러나 DOM과 BOM에 대해 이야기하기 전에 Javascript의 전체 구조를 보여 드리겠습니다 .
위 그림에서 JavaScript, ECMAScript, DOM 및 BOM의 네 가지 요소가 있음을 알 수 있습니다. 그러면 이 네 가지 요소 사이의 연결은 무엇입니까? 방정식을 사용하여 이들 사이의 관계를 요약합니다.
JavaScript = ECMAscript + BOM + DOM
이들에 대한 개요를 하나씩 제공 하겠습니다.
ECMAscript:
ECMAScript는 ECMA International(이전의 유럽 컴퓨터 제조업체 협회)에서 ECMA-262를 통해 전달된 언어입니다. 표준화된 스크립팅 프로그래밍 언어입니다 . 이는 JavaScript(줄여서 JS)의 표준이며 브라우저는 이 표준을 구현합니다 .
ECMAscript는 JavaScript가 브라우저에서 실행되는 스크립팅 언어라는 것을 알고 있기 때문에 각 브라우저가 JavaScript 구문을 실행하는 방법을 규정하는 규정과 비슷합니다 ! 규정은 있지만 아직 페이지의 각 요소와 상호 작용할 수 있는 방법이 부족합니다 . 이때 다음과 같은 DOM이 탄생했습니다!
DOM:
DOM( 문서 개체 모델 )은 xml 및 html 문서를 운영하기 위한 언어 독립적인 응용 프로그래밍 인터페이스 입니다.
JavaScript의 경우: JavaScript가 Html을 작동할 수 있도록 JavaScript에는 자체 DOM 프로그래밍 인터페이스가 있습니다 .
한 문장으로 말하면: DOM은 JavaScript에 HTML 요소에 액세스하고 작동하는 "메서드"를 제공합니다. (우리가 인터페이스라는 단어를 사용하지 않는 이유는 일부 친구들이 인터페이스를 보면 겁을 먹을까 봐 두렵기 때문입니다. 가장 정확한 설명은 JavaScript) 인터페이스가 제공됩니다 .
BOM:
BOM은 브라우저 개체 모델, 브라우저 개체 모델 입니다. BOM은 브라우저의 동작을 제어하는 것으로 보이는 인터페이스입니다 .
JavaScript의 경우: JavaScript가 브라우저의 동작을 제어할 수 있도록 JavaScript에는 자체 BOM 인터페이스가 있습니다 .
한 문장으로 말하자면, BOM은 JavaScript에 브라우저 동작을 제어하는 "메서드"를 제공합니다.
마지막으로 JavaScript의 위 세 가지 구성 요소 중 ECMscript는 사양 이고 나머지 두 개는 각각 HTML 요소와 브라우저에 해당하는 "메서드"를 제공하므로 아래에서는 후자 두 가지인 DOM과 BOM에 중점을 두고 체계적으로 설명합니다 . 초보자를 위한 것이므로 최대한 간단하고 이해하기 쉽게 설명하겠습니다. 기초가 탄탄하지 않아도 안심하고 드실 수 있습니다 !
먼저 DOM 관련 지식을 두 부분으로 나누어 설명하겠습니다.
그럼 DOM 트리란 무엇일까요?
DOM을 처음 접한 초보자들에게는 이 단어가 조금 낯설 수도 있겠지만, 사실 DOM 트리는 특별히 환상적이지는 않습니다. 반대로 프론트엔드 직원에게 DOM 트리는 자신이 처리하는 페이지의 HTML입니다 . 매일 다음 요소로 구성된 트리입니다.
BOM 트리 에서 각 노드는 두 가지 ID를 가질 수 있습니다. 상위 노드의 하위 노드일 수도 있고 다른 하위 노드의 상위 노드일 수도 있습니다.
<!DOCTYPE html> <html lang="ko"> <머리> <meta charset="UTF-8"> <title>DOM_demo</title> </head> <본문> <p> <a href="https://blog.csdn.net/qq_52736131">탱고를 추는 가재</a> </p> </body> </html>
위 코드의 경우 DOM 트리는 다음과 같아야 합니다.
이때 누군가 묻고 싶습니다. 오랫동안 DOM 트리가 html 요소를 운영하는 것과 관련이 있다고 생각하십니까 ?
대답은 매우 관련성이 높으며 문서의 DOM 트리 구조를 이해해야만 DOM 요소를 정확하고 효과적으로 작동할 수 있습니다 . 그렇지 않으면 예상치 못한 다양한 버그가 나타날 것입니다. 페이지의 HTML 요소를 조작하기 전에 전체 페이지의 DOM에 대한 명확한 그림이 있어야 합니다 . 실제로 그리는 것이 아니더라도 마음 속에 명확한 컨텍스트 구조가 있어야 합니다.
JavaScript에서 DOM의 html 요소를 작동하는 몇 가지 일반적인 방법 에 대해 소개하기 위해 여러 하위 부분으로 나누었습니다 .
// 1. Pass Get 요소의 id 속성 값을 반환하고 요소 객체를 반환합니다. var element = document.getElementById(id_content) //2. name 속성 값을 통해 요소를 가져오고 요소 객체의 배열을 반환합니다. var element_list = document.getElementsByName(name_content) //3. 요소의 클래스 속성 값을 통해 요소를 가져오고 요소 객체의 배열을 반환합니다. var element_list = document.getElementsByClassName(class_content) //4. 태그 이름을 통해 요소를 가져오고 요소 객체의 배열을 반환합니다. var element_list = document.getElementsByTagName(tagName)
//1. 요소의 속성 값을 가져옵니다. 전달된 매개변수는 당연히 class, id, href와 같은 속성 이름입니다. var 속성 = element.getAttribute(attribute_name) //2. 요소의 속성 값을 설정합니다. 전달되는 매개변수는 당연히 요소의 속성 이름과 해당 속성 값이 설정됩니다.
//1. html 요소를 생성하고 전달된 매개변수는 p, h1-5, a와 같은 요소 유형입니다. 아래 예에서는 p를 사용합니다. var element = document.createElement( "피") //2. 텍스트 노드를 생성하고 해당 텍스트 콘텐츠를 전달합니다(html 요소가 아닌 텍스트 노드입니다). var text_node = document.createTextNode(텍스트) //3. 속성 노드를 생성하고 전달된 매개변수는 해당 속성 이름입니다. var attr_node = document.createAttribute(attribute_name) element.setAttributeNode(attr_node)
세 번째 방법에 특히 주의하세요. 속성 노드를 생성하는 이 방법은 특정 요소와 일치해야 합니다 . 즉, 먼저 특정 요소 요소를 얻고 속성 노드를 생성한 후 마지막으로 이를 추가해야 합니다. 이 요소에 대한 속성 노드( setAttributeNode) .
//1. 요소 끝에 노드를 추가합니다. 전달된 매개변수는 노드 유형 element.appendChild(Node)입니다. //2. 요소 내부의 기존 노드 앞에 노드를 삽입하고 여전히 노드 유형 매개변수 element.insertBefore(new_Node, 기존_Node)를 전달합니다.
노드를 추가하기 전에 먼저 노드를 생성해야 합니다. 동시에 부모 노드 요소를 선택합니다 . 두 번째 방법에서는 삽입 위치 뒤에 있는 형제 노드도 찾아야 합니다 .
//요소 내 노드 삭제 전달된 매개변수는 노드 유형 매개변수 element.removeChild(Node)입니다.
삭제 시에는 해당 상위 노드 요소를 찾아야 원활하게 삭제됩니다 .
마지막으로 몇 가지 일반적인 DOM 속성 :
//1. 현재 요소의 상위 노드를 가져옵니다. var element_father = element.parentNode //2. 현재 요소의 html 요소 유형 하위 노드를 가져옵니다. var element_son = element.children //3. html 요소, 텍스트 및 속성을 포함하여 현재 요소의 모든 유형의 하위 노드를 가져옵니다. var element_son = element.childNodes //4. 현재 요소의 첫 번째 하위 노드를 가져옵니다. var element_first = element.firstChild //5. 현재 요소의 이전 형제 요소를 가져옵니다. var element_pre = element.previousSibling //6. 현재 요소의 다음 형제 요소를 가져옵니다. var element_next = element.nextSibling //7. HTML 소스 코드와 텍스트를 포함하여 현재 요소의 모든 텍스트를 가져옵니다. var element_innerHTML = element.innerHTML //8. html 소스 코드를 제외한 현재 요소의 모든 텍스트를 가져옵니다. var element_innerTEXT = element.innerText
그 중 일곱 번째는 html 코드와 해당 요소의 텍스트를 text 로 변환하는 것이며 원본 html 코드도 마찬가지입니다. 가 실행되면 텍스트로 변환하는 것은 일반 문자열로 변환하는 것과 같습니다!
다음으로 BOM에 대해 다시 설명하겠습니다. 제한된 공간으로 인해 BOM에 대해서는 자세히 설명하지 않습니다 (실용성은 DOM만큼 크지 않습니다). 처음에 BOM에 대한 소개를 검토해 보겠습니다.
BOM은 JavaScript가 브라우저를 작동하는 여러 "메소드"를 제공합니다.
먼저 그림을 사용하여 전체 BOM의 구조를 정렬해 보겠습니다. DOM에도 트리 구조가 있습니다.
위 그림에서 다음을 볼 수 있습니다.
window는 전체 BOM 트리 먹이 사슬의 최상위이므로 새로 열리는 모든 창은 창 개체로 간주됩니다.
창 개체에는 다음과 같은 공통 속성과 메서드가 있습니다.
속성/메서드 | 의미 |
opener | 현재 창 길이의 상위 창 |
창 | 문서의 프레임 수 창 |
에 | 현재 표시된 문서 개체입니다. |
경고(문자열) | 경고 대화 상자를 생성하고 메시지를 표시합니다. |
close() | 창을 닫습니다. |
확인() | 사용자 확인이 필요한 대화 상자를 만듭니다. |
open(url, name, [options]) | 새 창을 열고 새 창 개체를 반환합니다. |
프롬프트(text, defaultInput) | 대화 상자 만들기 사용자가 정보를 입력해야 하는 |
setInterval(expression, milliseconds) | 지정된 시간 간격 후에 표현식을 계산합니다. |
setInterval(function, millis enconds, [arguments]) | 지정된 시간 간격 후에 setTimeout(expression, milliseconds) 함수를 호출하고 |
타이머가 | 만료된후 | 타이머가 만료된 후 함수를 계산합니다. |
그 중 위에 경고() 함수가 있다는 것을 알 수 있습니다. 왜냐하면 JavaScript를 배울 때 대부분의 작업이 수행되기 때문입니다. 우리는 입력 및 출력 스트림으로 경고() 함수 팝업 창을 사용합니다. 이것은 나의 첫 번째 데모이므로 이것을 보면 다음과 같이 질문할 수 있습니다.
경고() 함수를 사용할 때 창이 언급되지 않은 것 같습니다. . 여기 있는 경고()는 이전에 배운 것과 동일한 경고()입니까 ? 대답은 다음과 같습니다.
이 두 가지 경고()는 실제로 동일한 함수입니다 . window를 생략할 수 있는 이유는 window의 모든 속성과 메서드를 두 가지 방식으로 표현할 수 있기 때문입니다.
(1) window.property/window.
(2) 직접 속성/메서드() 호출은
단순한 경고()가 아니며 위의 모든 창 속성과 기능이 유효하므로 관심 있는 친구가 직접 시도해 볼 수 있습니다.
위치 객체란 무엇입니까?
위치 객체는 현재 창에 로드된 문서에 대한 정보를 제공하고 일부 탐색 기능도 제공하는 창 객체의 속성입니다.
위치 객체에는 다음과 같은 공통 속성과 메소드가 있습니다:
속성/메소드 | 내용 |
호스트 | 호스트 이름: 포트 번호 |
호스트 | 이름 호스트 이름 |
href | 전체 URL |
경로 이름 | 경로 이름 |
포트 | 포트 번호 |
프로토콜 프로토콜 | 부분 |
검색 | 쿼리 문자열 |
사용 | 하여 |
현재 | URL을 다시 로드합니다 |
새 URL이 현재 페이지를 대체합니다. |
실제로 위의 구조 다이어그램을 주의 깊게 살펴보면
위치 개체가 창 개체의 속성일 뿐만 아니라 문서 개체의 속성이기도 함을 알 수 있습니다.
이는 다음을 의미합니다:
window.location = 위치 = document.location
히스토리 객체란 무엇입니까?
기록 개체는 창 개체의 속성으로, 사용자의 인터넷 액세스 기록을 저장합니다. 이 기록의 타임스탬프는 창이 열린 순간부터 계산됩니다.
기록 객체에는 다음과 같은 공통 속성과 메소드가 있습니다.
속성/메서드 | 설명 |
길이 | 기록 객체의 레코드 수 |
back()은 | 브라우저 기록 항목의 이전 URL로 이동합니다. 이는 앞으로 뒤로 이동 |
()이 | 다음 URL로 이동하는 것과 |
브라우저 기록 항목의 | |
앞으로 이동(num) | 과 유사합니다.브라우저는 기록 개체에서 앞으로 또는 뒤로 이동합니다. |
마지막으로 navigator 객체를 소개하겠습니다.
navigator 객체는 클라이언트 브라우저를 식별하는 BOM의 창 속성입니다.
네비게이터와 관련된 일부 공통 속성:
속성 | 설명 |
appName | 전체 브라우저 이름 및 버전 정보 |
브라우저가 있는 플랫폼 시스템 플랫폼 플러그인 | 브라우저 |
플러그인 | 정보 배열 |
userAgent | 브라우저의 사용자 에이전트 문자열 |
userLanguage | 운영 체제의 기본 |
언어 위 내용은 이번 호의 전체 내용입니다. 좋아하는 친구들은 세 번 연속으로 지원할 수 있습니다! ???!
게다가 본 블로그는 [ 라이징스타 프로젝트 ]에도 참여하고 있으니 많은 응원 부탁드립니다 ???