Реализация
Оригинальное название: implement
Коротко
Воплощение спецификации, интерфейса или требования в работающем коде. В веб-стандартах так говорят о поддержке возможности конкретным браузером: «свойство реализовано в Firefox».
Что такое «Реализация»
Спецификация описывает, как что-то должно работать, но сама ничего не делает. Чтобы свойство CSS или метод JavaScript появились у пользователей, их должны реализовать разработчики браузерных движков — Blink в Chrome и Edge, Gecko в Firefox, WebKit в Safari. Каждый движок — отдельная реализация одного стандарта, и они неизбежно расходятся в деталях: где-то ошибка, где-то устаревшая версия спецификации, где-то возможности ещё нет.
Поэтому для W3C реализации — главное доказательство готовности. Чтобы документ стал рекомендацией, обычно требуются как минимум две независимые реализации каждой возможности, которые ведут себя одинаково. Насколько совпадает поведение разных движков, описывает понятие совместимости реализаций.
Интерфейс и реализация в коде
В программировании то же слово разделяет «что» и «как». Интерфейс — обещание: какие методы есть и что они принимают. Реализация — конкретный код. Одну задачу можно реализовать по-разному, не меняя интерфейса, и код, который им пользуется, ничего не заметит. Пример на TypeScript:
interface PaymentGateway {
pay(orderId: string, amount: number): Promise<boolean>;
}
class TestGateway implements PaymentGateway {
async pay(orderId: string, amount: number) {
console.log(`Тестовая оплата ${orderId}: ${amount}`);
return true;
}
}
На время разработки подключают тестовую реализацию, на боевом сайте — настоящую, которая обращается к банку.
Когда реализации нет
Если нужная возможность в каком-то браузере ещё не реализована, есть два пути. Полифил — собственная реализация недостающего API на JavaScript, которая включается только там, где встроенной нет. Второй путь — резервный вариант: упрощённое поведение без новой возможности. Перед тем как применять свежую технологию на сайте, стоит проверить, в каких браузерах она реализована и с какой версии.

