Какие основные движки рендеринга в современных браузерах?

Ответ

Движок рендеринга (браузерный движок) отвечает за преобразование HTML, CSS и JavaScript в визуальную страницу. Основные движки на рынке:

1. Blink

  • Разработчик/Владелец: Google и соавторы (проект Chromium).
  • Используется в: Google Chrome, Microsoft Edge (с 2020), Opera, Brave, Vivaldi и большинстве других браузеров.
  • Особенности: Доминирующий движок с открытым исходным кодом. Изначально был форком WebKit. Быстрое внедрение новых веб-стандартов.

2. WebKit

  • Разработчик/Владелец: Apple и сообщество.
  • Используется в: Safari (на всех платформах), всех браузерах для iOS (по правилам App Store).
  • Особенности: Открытый движок. Был основой для Blink. Известен энергоэффективностью, что критично для мобильных устройств Apple.

3. Gecko

  • Разработчик/Владелец: Mozilla Foundation.
  • Используется в: Mozilla Firefox и его производных.
  • Особенности: Открытый движок с сильным акцентом на приватность пользователя и независимость веб-стандартов.

4. Устаревшие движки

  • Trident: Использовался в Internet Explorer (IE 4-11). Больше не поддерживается.
  • EdgeHTML: Использовался в первоначальной версии Microsoft Edge (заменен на Blink).

Практическое значение для разработки:

  • Кросс-браузерное тестирование необходимо, так как движки могут по-разному интерпретировать один и тот же код, особенно в части CSS и некоторых API JavaScript.
  • Префиксы поставщиков (-webkit-, -moz-) иногда требуются для экспериментальных функций.
  • Проверка поддержки через ресурсы вроде Can I use.

Пример проверки в JavaScript (условно):

// Определение движка на основе специфических свойств (не абсолютно надежно)
const isBlinkOrWebKit = 'chrome' in window || 'WebkitAppearance' in document.documentElement.style;
const isGecko = 'InstallTrigger' in window; // Устаревший способ, для примера

Ответ 18+ 🔞

Ну вот, сидишь ты такой, пишешь свой сайт, всё вроде красиво, а потом открываешь его в другом браузере — и пиздец, всё разъехалось, как пьяный на льду. А знаешь, почему? Потому что под капотом у каждого браузера свой движок рендеринга, этакий мозг, который жрёт твой HTML, CSS и JS, а на выходе плюёт готовой картинкой. И мозги эти, блядь, разные!

Вот смотри, какие главные мудаки на рынке сейчас орудуют:

1. Blink — главный пахан

  • Кто пасёт: Гугл и куча народу из проекта Chromium.
  • Где сидит: Google Chrome, Microsoft Edge (с 2020 года, а до этого у них своя мута была), Opera, Brave, Vivaldi — короче, в половине браузеров, которые ты знаешь.
  • Фишка: Это сейчас царь и бог, движок с открытым кодом. Он, кстати, когда-то отпочковался от WebKit. Новые веб-фичи внедряет быстрее всех, прямо овердохуища темпов.

2. WebKit — яблочный упырь

  • Кто пасёт: Эппл и всякие энтузиасты.
  • Где сидит: Safari (везде, где только можно) и, внимание, ВО ВСЕХ браузерах на iOS! Да-да, по правилам Эппла в их магазине — только WebKit, хоть ты тресни. Хочешь свой движок? Иди на хуй.
  • Фишка: Тоже открытый. Известен тем, что жрёт батарею как мартышлюшка, а не как свинья. Для айфонов и макбуков это святое.

3. Gecko — упрямый старик

  • Кто пасёт: Фонд Mozilla.
  • Где сидит: Mozilla Firefox и всякие его клоны.
  • Фишка: Тоже открытый, но со своей гордостью. Сильно заботится о приватности и старается не дать вебу превратиться в монополию одного пахана. Уважуха.

4. Движки-пенсионеры (R.I.P.)

  • Trident: Это тот самый дед, который водил Internet Explorer (с 4 по 11). Уже на кладбище.
  • EdgeHTML: Был в первых версиях Microsoft Edge. Потом майкрософт посмотрели на это и сказали: «Да похуй, давайте лучше Blink». И взяли.

А тебе-то, верстальщику, нахуя это знать?

  • Кросс-браузерное тестирование — это пиздец как важно. Потому что один и тот же CSS-код эти движки могут понять по-разному. В одном браузере блок ровный, а в другом — хуй с винтом.
  • Вендорные префиксы (-webkit-, -moz-). Иногда, чтобы какая-нибудь хитрая фича работала, её надо задобрить этими заклинаниями.
  • Смотри Can I use. Прежде чем впендюрить какую-нибудь навороченную APIшку, зайди на caniuse.com и проверь, не обосрёшься ли ты.

Ну и на закуску, кусок кода для галочки (не трогай его, он правильный):

// Попытка угадать движок по каким-то признакам (способ так себе, но для примера сойдёт)
const isBlinkOrWebKit = 'chrome' in window || 'WebkitAppearance' in document.documentElement.style;
const isGecko = 'InstallTrigger' in window; // Способ древний, как мамонт, но пусть будет

Вот и вся магия, блядь. Теперь ты знаешь, с какими зверями имеешь дело. Верстай с умом.