Webkit разработчик, savepearlharbor

За много от нас, разработчиците, WebKit - черна кутия. Ние го хвърлят HTML, CSS, JS, и един куп снимки и WebKit, някак си ... магически ни дава една уеб страница, която изглежда и работи добре.






Но в действителност, тъй като моят колега Иля Grigorik.

Web-комплект не е черна кутия. Това - бяла кутия. И не само бели, но също така и на открито чекмеджето.


Така че, нека се опитаме да разбера някои неща:

  • Какво е WebKit?
  • В WebKit не е?
  • WebKit се използва като браузър WebKit базиран?
  • Защо не WebKit-е едно и също?

Сега, особено след новината, че Opera продължи WebKit. ние сме заобиколени от много WebKit-базиран браузър, и това е достатъчно трудно да се каже, че те са обединени, и където и да отидат по различни пътища. По-долу, надявам се, ще се опитаме да хвърли светлина върху този въпрос. В резултат на това, по-добре да определите разликите между браузъра, изпратете бъгове за правилното проследяване, както и за провеждане на развитие различни браузъри по-ефективно.

Стандартни компоненти на уеб браузър

Нека да изброя някои от компонентите на съвременни браузъри:

Кои от тях са общи за всички WebKit браузъри? Почти само първите две.

Останалите компоненти на всеки WebKit «порт» реализира свой собствен начин. Нека да видим какво означава това.

WebKit порт

Има много WebKit «пристанища", а аз давам Ariya Хидаят, на WebKit и хакер. Директор Sencha право да говори за това:

Най-популярната концепция за асоцииране към WebKit, като цяло е видът на WebKit, но от Apple, която работи на Mac OS X (първия и оригинален WebKit библиотеката). Както можете да предположите, различни интерфейси realizovanna използването на различни местни библиотеки Mac OS X, е съсредоточено главно в CoreFoundation компонент. Например, ако се определи плосък цветен бутон със специален радиус линия, на WebKit знае къде и как да се направи на бутона. В същото време, крайните рендиране бутони (като пиксели на ползвателя на монитор) лежат на CoreGraphics раменете.

Както бе споменато по-горе, се използва CoreGraphics, уникални за всеки порт на WebKit. Chrome за Mac-като, например, използва Skia.

В един момент, на WebKit е "пренесли" за различни платформи, десктоп и мобилни устройства. Този вариант обикновено се нарича «WebKit пристанище." За Safari за Windows, Apple също независимо пренесли WebKit да тече под Windows, като се използва версия на (ограниченото прилагане) CoreFoundation библиотека Windows.

... въпреки факта, че Safari за Windows сега е мъртъв.

В допълнение, има много други "портове" (вж. Пълният списък). Google е създала и поддържа техния prodlozhaet Chromium порт. Налице е също така WebKitGtk, въз основа на Gtk +. Nokia (и сега Trolltech, който го е купил) подкрепя WebKit Qt порт, който е станала популярна като модул QtWebKit.

Някои пристанища на WebKit

  • сафари
    - Safari под OS X и Safari на Windows са две различни пристанище
    - WebKit вечер изграждане монтаж изходния код Mac «порт», която се използва за Safari, само по-късно
  • мобилния Safari
    - да се развива в частен клон, но по-късно е открит.
    - Chrome за IOS (с помощта на уеб изгледа на Apple; малко по-късно за разликата)
  • Хром (Chromium)
    - Chrome за Android (с помощта на просто "пристанище» Chromium)
    - Хром също е в основата на браузъри: Yandex. 360. Sogou. и скоро, Opera.
  • Браузърът на Android
    - Използва най-новата изходния код за WebKit, налични към момента на освобождаване.
  • Още по-голям брой портове. Amazon Silk, Делфин, Blackberry, QtWebKit, WebKitGTK +, Пристанището EFL (Tizen), wxWebKit, WebKitWinCE и т.н.

Други пристанища могат да се фокусират върху различни задачи. Фокус Mac порт - разделението между операционната система и браузъра, както и предоставянето на Bindig Obj-C и C ++ за вграждане ядро ​​в стандартните приложения. Фокус Chromium порт - изцяло на браузъра. QtWebKit предлага пристанище да се използва със своята архитектура прилагане на различни платформи, като двигател за да се изобрази.







Общият във всички браузъри, базирани на WebKit

За да започнете, нека да разгледаме общите черти, които се използват във всички WebKit-базиран браузър:

Знаеш, че е смешно, направих няколко опита да се пишат този параграф. И както ще видите, всеки път, когато членовете на екипа Chrome ме поправят ...

  1. И така, на първо място, на WebKit HTML анализира същото. Е, с изключение на това Chromium едно пристанище, в момента, които са дали възможност потоци подкрепа за разбор HTML.
  2. ... Е, след разбор на HTML, дървото DOM е проектирана по същия начин. Ами, всъщност DOM в сянка е разрешено само за Chromium порт, т.е. изграждането на DOM кръг. Също така за потребителски елементи.
  3. ... Е, WebKit създава прозорец и предмети, документи са едни и същи за всички. Все пак, въпреки че свойствата и конструкции, които те предоставят може да зависи от използването на ключове функции (функции знамена).
  4. ... CSS разбор същото. Яденето ви CSS и да го превърне в CSSOM доста стандартни. Да, но само подкрепя представки Chrome -webkit- когато Apple и други браузъри от стар представки -khtml- и -apple-.
  5. Разпределение ... ... позициониране? Това е като хляб и масло. Навсякъде едно и също, нали? Е, вече! Подпиксел оформление и прототипи наситен аритметика е част от WebKit, но се различава от порт на порт.
  6. Супер.

Така че, това е трудно.

Точно както Flickr и Github скрий изпълнява функции за специални знамена, WebKit прави същото нещо. Това позволява на пристанищата, за да включите / изключите всички функции по време на компилация с помощта на WebKit компилация Feature знамена. Функциите могат да бъдат включени в операцията, като се използват параметрите в командния ред (за Chromium) или конфигурации, като например за: знамена.

Сега, нека се опитаме да обобщим това, което в света общо WebKit ...

Какво е обща за всеки порт на WebKit.

Става съвсем ясно, така че нека се опитаме да разгледаме някои от разликите.

Сега това не е обща за WebKit, пристанища:

Нека да разгледаме един от тях: 2D графики зависи от пристанището, ние използваме един напълно различен библиотека за оказване на екрана:

Или ако да навлизам в подробности, добавения функция: CSS.supports () е активиран за всички пристанища, с изключение на победа и wincairo, които не включват условно функция CSS3 (CSS3 условни функции).

Сега, ние vdaemsya в технически подробности ... време, за да се превърне педантичен. Дори по-горе не е съвсем вярна. В действителност тя WebCore, е често срещана съставка. WebCore това оформление, изобразяване и библиотеката DOM за HTML и SVG, и в общи линии това, което хората мислят, когато казват, WebKit. В действителност "на WebKit" технически - слой от автомати между WebCore и "пристанище", въпреки че в обикновен разговор, тази разлика по принцип не е от значение.

Графика трябва да помогне:

Webkit разработчик, savepearlharbor

Много от WebKit компонентите задейства (показани в сиво).

Шрифтове и текстово представяне са много голяма част от платформата. Има 2 начина да се разделят на текст в WebKit: бързи и предизвикателни. И двете изискват специфична подкрепа за платформата (приложена от страната на пристанището), но бързо само трябва да знаете как blitirovat глифове (която кешира платформа WebKit), когато е трудно да се преместят за предоставяне на линии на нивото на перона, и просто казва: "Нарисувай, моля."

«WebKit е като сандвич. С други въпроси, в случай на хром, това е по-скоро като тако. Вкусни такос на уеб технологиите.
Дмитри Glazkov, Chrome WebKit хакер. Шампион на уеб Componets и сянка дом.

Сега, нека да разшири прегледа и разгледаме няколко пристанища и няколко подсистеми. По-долу са пет WebKit порт, обърнете внимание как различен набор от инструменти за всеки от тях, независимо от общите компоненти:

Добре, така че защо сме дошли?

И така, всичко, WebKit-и сега са напълно различни. Страх ме е.

Не си струва! Покриването на WebKit-тестове «layoutTest» огромен. (28,000 изпитвания при последното преброяване), а не само за настоящите им функции, но и за всички регресии намерени. Всъщност, всеки път, когато се научите на нова, езотерична функция DOM / CSS / HTML-5, layoutTest-ите обикновено имат отлична демонстрация на минималната целия уеб платформата.

В допълнение, W3C работи за стандартизиране на набор от тестове. Това означава, че можем да очакваме като WebKit пристанище и всички други браузъри ще бъдат тествани и същ набор от тестове, които ще ни доведат до намаляване на странности и по-оперативно съвместима мрежа. За всички онези, които поставят своите усилия, като посетите Тест развиват мрежата събитието ... благодаря ти!

Opera току-що се премества върху WebKit. Какво се случва?

Робърт Naiman и Роб Хоукс вече са докоснати по тази тема. но аз бих добавил, че един от най-важната част от съобщението е, че операта продължава Chromium. Това означава, че на WebGL, Платно, HTML5 форми, изпълнението на 2D графики, всички тези неща ще бъдат същите на Chrome и Opera сега. Същата API, същата изпълнението на ниско ниво. От Opera е базиран на хром, може да се почувствате, че ви се намали работата си, съвместимост проверка за Opera и Chrome.

Аз също трябва да се отбележи, че всички Opera браузъри ще бъдат прехвърлени на Chromium. Това означава, че Opera за Windows, Mac, Linux и Opera Mobile (пълен мобилен браузър). Дори и Opera Mini, тънък клиент, ще се премине към текущата рендиране фермата въз основа на Presto, от друга страна, въз основа на Chromium.

... и всяка вечер се основава на WebKit. Какво е това?

Chrome Canary също се използва най-новата WebKit изходния код, един ден-стар или така.

Разкажи ми повече за вътрешността на WebKit.

Webkit разработчик, savepearlharbor