1. Разберитесь с браузером
- Концепции ядра браузера
Ядро браузера разделено на две части: движок рендеринга (render engin), js движок (js engin)
Механизм рендеринга: отвечает за интерпретацию синтаксиса веб-страниц (HTML, JavaScript, импорт css и т. д.) и рендеринг (отображение) веб-страниц.
js engine: интерпретация, компиляция и выполнение javaScript
Основные ядра: Trident (IE), Gecko (FireFox), Webkit (Safari), Presto (ядро до Opera, устарело), blink (Chrome)
2. История прогресса механизма рендеринга браузера webkit.
3. Введение в основной контент браузера webkit
Интерпретатор HTML: интерпретатор, который интерпретирует текст HTML. Его основная функция — интерпретировать текст HTML в дерево DOM. DOM — это метод представления документа.
Интерпретатор CSS: интерпретатор каскадных таблиц стилей, его функция заключается в вычислении информации о стиле для каждого объекта элемента в DOM, что обеспечивает инфраструктуру для расчета макета конечной веб-страницы.
Макет: после создания DOM webkit необходимо объединить объекты элементов с информацией о стиле, рассчитать информацию о макете, такую как их размер и положение, и сформировать внутреннюю модель представления соотношения, которая может представлять всю информацию.
Механизм JavaScript: код JavaScript может использоваться для изменения содержимого веб-страницы и информации CSS. Механизм JavaScript может интерпретировать код JavaScript и изменять содержимое и информацию о стиле веб-страницы через интерфейс DOM и режим просмотра CSSOM, тем самым изменяя результат рендеринга.
Рисование: используйте графическую библиотеку, чтобы нарисовать узлы каждой веб-страницы после расчета макета в результате изображения.
Два, Chromium, CEF, Webkit, JavaScriptCore, V8, Blink
- V8 (вздесьУзнать больше)
- Webkit
(refer: W)
Применение: сафари, почта, магазин приложений и другие приложения
макет вебкита:
После того, как webkit создает объекты RenderObject, каждый объект не знает свою собственную позицию, размер и другую информацию.Процесс, в котором webkit вычисляет их положение, размер и другую информацию в соответствии с блочной моделью, называется расчетом/набором макета.
Классификация расчета макета: первая категория — это расчет всего дерева RenderObject; вторая категория — это расчет поддерева в дереве RenderObject, который обычно используется при расчете текстовых элементов или блоков overflow:auto.
Расчет макета: расчет макета — это рекурсивный процесс, потому что для определения размера узла обычно сначала необходимо вычислить положение, размер и другую информацию его дочерних узлов.
Пополнить:
Почему говорят, что производительность преобразования для достижения анимации лучше, чем непосредственное задание геометрических свойств?
1. Процесс рендеринга Webkit: стиль -> Макет (здесь происходит перекомпоновка) -> Краска (здесь происходит перерисовка) -> Композит, преобразование находится в «Композит (слияние слоев рендеринга)», а ширина, левое поле, поля и т. Д. На слое «Макет» это должно привести к перекомпоновке.
2. Современные браузеры открываются для ускоренного GPU трансформации и так далее.
style -> Layout (здесь происходит перерисовка) -> Paint (здесь происходит перерисовка) -> Composite (в это время происходит преобразование)
(ссылаться:
Оптимизация производительности анимации CSS
Объясните производительность анимации преобразования с точки зрения перерисовки и перестановки.
Несомненно
-
В начале он был разработан на основе KJS, который является абстрактным интерпретатором на основе синтаксиса с плохой производительностью. В 2008 году Apple переписала компилятор и переводчик Bytecode, называемый Tacrefish
-
Chromium/Blink
Chromium основан на webkit, но код Webkit стал более читабельным, многопроцессорная структура
Процесс загрузки веб-страницы в Chromium, вам необходимо выполнить рендеринг в браузере и завершить процесс совместной работы. Процесс загрузки веб-страницы инициируется процессом Браузера, процесс запроса веб-контента серверному процессу завершается Браузером. Процесс рендеринга отвечает за загрузку веб-контента, анализируется обратно, после анализа получается дерево DOM. После этого дерева DOM процесс рендеринга может отображать веб-страницу.
(см.: СВведение в загрузку веб-страницы chromium)
Blink: проект Chromium разработал движок рендеринга, основанный на Webkit и вне его.
Более мощный рендеринг и макет:
- Следование многопоточной верстке
- пересчет стиля
- Не создавайте рендерер для скрытого iframe
- Исправьте старые ошибки, такие как удаление плагина при настройке display:none для плагинов.
- Асинхронно выгружайте iframe, быстрее
(Ссылаться:Часто задаваемые вопросы разработчиков Blink)
5. CEF (встраиваемая платформа Chromium)
Фреймворк для встраивания функций браузера (рендеринг страниц, выполнение js) в другие приложения, поддерживающий платформы Windows, Linux, Mac.
История ЦЭФ:
- CEF имеет две версии Chromium Embedded Framework: CEF 1 и CEF 3.
- Разработка CEF 2 была прекращена после появления Chromium Content API.
- CEF 1 — это реализация одного процесса, основанная на Chromium WebKit API. Он больше не разрабатывается и не поддерживается.
- CEF 3 — это многопроцессорная реализация, основанная на Chromium Content API, с производительностью, аналогичной Google Chrome.
заявление:
1) сделать браузер
2) базовая кроссплатформенная настольная программаelectron.js
Преимущество: очень удобно разрабатывать смешанное веб-приложение и нативное.
3. Резюме
Движок V8 — это JS-движок, разработанный независимой компанией Google.
Webkit основан на KHTML и включает JavaScriptCore.
Chromium основан на Webkit, производном от Blink.
CEF — это платформа приложений, включающая браузер Chromium.
Создатель всего:KHTML