Начална » кодиране на стоките » Разбиране на обектен модел на документ (DOM) в подробности

    Разбиране на обектен модел на документ (DOM) в подробности

    Всички сме чували за DOM, или Модел на документ, които се споменават от време на време, свързани с JavaScript. DOM е много важна концепция в уеб разработката. Без него нямаше да можем динамично модифициране на HTML страници в браузъра.

    Научаването и разбирането на DOM води до по-добри начини достъп, промяна и наблюдение различни елементи на HTML страница. Обектният модел на документа може също да ни помогне намаляване на ненужното увеличение на времето за изпълнение на скрипта.

    Дървета на структурата на данните

    Преди да говоря за това, какво е DOM, как тя възниква, как съществува и какво се случва вътре в нея, искам да знаете за дърветата. Не от иглолистни и широколистни видове, а за дърво на структурата на данните.

    Много по-лесно е да разберем концепцията за структурите от данни, ако опростим нейното определение. Бих казал, че има структура от данни подреждане на данните ви. Да, просто стара договореност, тъй като ще подредите мебелите в къщата или книгите на лавица за книги или всички различни групи храни, които имате за храна на чинията си, за да направи го смислено за теб.

    Разбира се, това не е всичко за структурата на данните, но това е мястото, където всичко започва. Това “уговорка” е в основата на всичко това. Това е доста важно и в DOM. Но все още не говорим за DOM, така че нека да ви насоча към a структура на данните, с която може да сте запознати: масиви.

    Масиви и дървета

    Масивите имат индекси и дължина, те могат да бъдат многоизмерен, и имат много повече характеристики. Колкото и да е важно да знаем тези неща за масивите, нека не се притесняваме с това точно сега. За нас масивът е доста прост. Това е, когато ти подреждайте различни неща в една линия.

    По същия начин, когато мислим за дървета, да речем, става въпрос за поставяйки нещата под един друг, започвайки само с едно нещо на върха.

    Сега можеш да вземеш единствената линия от преди, обърни го изправено, и ми кажи това “сега, всяка патица е под друга патица”. Тогава то ли е дърво? то е.

    В зависимост от това какви са данните ви или как ще ги използвате, най-горните данни в дървото ви (наречени корен) може да е нещо, което е от голямо значение или нещо, което е само там поставете други елементи под него.

    Така или иначе, най-горният елемент в структурата на дървените данни прави нещо много важно. Тя осигурява място започнете да търсите информация, която искате да извлечем от дървото.

    Значението на DOM

    DOM означава Модел на документ. Документът посочва HTML (XML) документ кое е представен като обект. (В JavaScript всичко може да бъде представено само като обект!)

    Моделът е създаден от браузъра който взема HTML документ и създава обект, който го представя. Имаме достъп до този обект с JavaScript. И тъй като ние използваме този обект, за да манипулираме HTML документа и изграждаме собствени приложения, DOM е основно API.

    Дървото DOM

    В JavaScript кода HTML документът е представен като обект. Всички данни, четени от този документ, са също се записват като обекти, вмъкнати един под друг (защото както казах преди, в JavaScript всичко може да бъде представено само като обекти).

    Така че, това е основно физическото подреждане на DOM данни в кода: всичко е подредени като обекти. Логично обаче, това е дърво.

    DOM Parser

    Всеки браузърен софтуер има програма, наречена DOM Parser това е отговорно за разбор на HTML документ в DOM.

    Браузърите четат HTML страница и превръщат данните в обекти, които съставляват DOM. Информацията, присъстваща в тези JavaScript DOM обекти, е логически подредена като дърво на структурата на данни, известна като DOM дървото.

    Разбор на данни от HTML към дървото DOM

    Вземете прост HTML файл. Тя има корен . негов поделементите сте и , всеки има много собствени детски елементи.

    Така че по същество, браузърът чете данните в HTML документа, нещо подобно на това:

           

    И, подрежда ги в DOM дърво като този:

    Представянето на всеки HTML елемент (и неговото съдържание) в дървото DOM е известно като a възел. Най- root node е възел на .

    Най- DOM интерфейс в JavaScript се нарича документ (тъй като това е представянето на HTML документа). Така получаваме достъп до дървото DOM на HTML документ през документ интерфейс в JavaScript.

    Не можем да имаме достъп само, но също така манипулирайте HTML документа чрез DOM. Можем да добавяме елементи към уеб страница, да ги премахваме и актуализираме. Всеки път, когато променим или актуализираме всички възли в дървото DOM, то се отразява на уеб страницата.

    Как са проектирани възлите

    Споменах преди, че всяка част от данни от HTML документ е записан като обект в JavaScript. И така, как данните, записани като обект, могат да бъдат логически подредени като дърво?

    Възелите на дърво DOM имат определени характеристики или свойства. Почти всеки възел в едно дърво има родителски възел (възел над него), детски възли (възлите под него) и братя и сестри (други възли, принадлежащи на един и същи родител). Като това семейство горе, долу и около възел е това, което го квалифицира като a част от дърво.

    Тази информация за семейството на всеки възел е запазени като свойства в обекта, представящ този възел. Например, деца е свойство на възел, който носи списък на дъщерните елементи на този възел, като по този начин логически подрежда неговите дъщерни елементи под възела.

    Избягвайте прекалената обработка на DOM

    Колкото и да е полезно актуализирането на DOM (за да променим дадена уеб страница), има такова нещо като прекалявам.

    Кажете, че искате да актуализирате цвета на a

    на уеб страница с помощта на JavaScript. Това, което трябва да направите, е достъп до съответния обект на DOM възел и актуализиране на свойствата на цвета. Това не трябва да засяга останалата част от дървото (другите възли в дървото).

    Но какво ще стане, ако искаш премахване на възел от дърво или добавете един към него? Цялото дърво може би трябва да се пренареди, с премахната или добавена към дървото възел. Това е скъпа работа. Отнема време и ресурс на браузъра, за да се свърши тази работа.

    Например, да речем, че искате добавете пет допълнителни реда към таблица. За всеки ред, когато новите му възли са създадени и добавени към DOM, дървото се обновява всеки път, общо до пет актуализации.

    Можем да избегнем това, като използваме DocumentFragment интерфейс. Мислете за това като за кутия, която би могла дръжте всичките пет реда и се добавя към дървото. По този начин петте реда са добавена като една единствена част от данните и не един по един, което води само до една актуализация в дървото.

    Това не се случва само когато премахнем или добавим елементи, но преоразмеряване на елемент може да засегне и други възли, тъй като елементът с преоразмеряване може да се нуждае от други елементи около него коригирайте техния размер. Така че, съответните възли на всички други елементи ще трябва да бъдат актуализирани и HTML елементите ще бъдат визуализирани отново съгласно новите правила..

    По същия начин, когато оформлението на уеб страница като цяло е засегнато, част или цялата уеб страница може да бъде пренасочена. Този процес е известен като Преформатирай. За да избягвайте прекомерно преформатиране Уверете се, че не променяте твърде много DOM. Промените в DOM не са единственото нещо, което може да доведе до преформатиране на уеб страница. В зависимост от браузъра, други фактори също могат да допринесат за него.

    Обобщавайки

    Опаковане на нещата, DOM е визуализирано като дърво съставен от всички елементи, намерени в HTML документ. Физически (като физически, както може да се получи всичко цифрово), това е набор от вложени JavaScript обекти от които свойствата и методите притежават информацията, която прави възможно логически ги подредите в едно дърво.