В документации Angular указано, что он совместим с двумя последними версиями (и последней + ESR для Firefox) для всех основных браузеров. Поскольку Angular использует стандартный DOM API под капотом, должна быть возможность полифиллинга Angular для совместимости со старыми браузерами.
Мой конкретный вариант использования: мне нужно поддерживать старые браузеры, которые не подлежат обновлению, поскольку они встроены в прошивку устройства (не бойтесь, они не подключены к Интернету -> никаких проблем с безопасностью).
Вопросы следующие:





Да, но это зависит от того, на какие браузеры вы ориентируетесь. Похоже, у вас есть четко определенный список браузеров, поэтому вы сможете найти список необходимых полифилов с помощью:
Да, но проблемы, как и ваши, обычно очень специфичны для контекста. Никто не создает угловые приложения со сложным функционалом, ориентированные на 100% браузеров.
Вообще говоря, инструменты объединения обычно позволяют вам указать целевые браузеры, хотя конкретные браузеры, на которые вы ориентируетесь, могут быть недоступны в качестве параметров целевого браузера для вашего инструмента объединения.
Поскольку вы используете Angular, вы можете указать целевые браузеры в .browserslistrc в корне приложения. Если, например, вы ориентируетесь на IE 11, это может выглядеть так:
>0.25%
IE 11
Опять же, это зависит от того, что именно вам нужно для полифила. Если это простое приложение, Core-js может быть достаточно. Лучший способ выяснить это — использовать core-js и посмотреть, работает ли оно. Если нет, вы всегда сможете найти пакет, который будет выполнять полифил для вас. Обязательно избегайте ненужных функций, требующих полизаполнения (например, для анимации Angular, скорее всего, потребуется полифил для браузеров, на которые вы ориентируетесь. Возможно, проще просто не использовать анимацию).
В дальнейшем вам нужно будет добавить тесты e2e для ваших целевых браузеров в процессе развертывания.
Спасибо за вашу разработку. Есть ли у вас представление о том, насколько сигналы Angular влияют на эту проблему совместимости? Можно ли полифиллить и используемую технологию?
К сожалению, похоже, что полифилл для него находится в разработке на момент написания статьи github.com/tc39/proposal-signals/blob/…
Хорошо, но это для сигналов JavaScript. Angular не может использовать сигналы JavaScript, поскольку их еще не существует. Это всего лишь предложение внедрить его. Angular должен иметь собственную логику для реализации сигналов.
Browserslistrc не подхватывается автоматически. Подробное руководство я написал в другом вопросе по этой теме: stackoverflow.com/a/78611674/6098257 может кому-то это поможет.
Немного продвинулись на этапе исследования: вот руководство по интеграции полифилов stackoverflow.com/questions/78603055/…