Поддержка браузера
Angular поддерживает самые последние браузеры. Это включает в себя следующие конкретные версии:
браузер | Поддерживаемые версии |
---|---|
Хром | Самый последний |
Fire Fox | Самый последний |
край | 2 самые последние основные версии |
IE | 11,10,9 |
IE Mobile | 11 |
Сафари | 2 самые последние основные версии |
IOS | 2 самые последние основные версии |
Android | Нуга (7.0), Зефир (6.0), Леденец (5.0, 5.1) KitKat (4.4) |
Polyfills
Angular построен по последним стандартам веб-платформы. Ориентация на такой широкий спектр браузеров является сложной задачей, поскольку они не поддерживают все функции современных браузеров.
Чтобы компенсировать эти старые неподдерживающие браузеры, мы загружаем сценарии полизаполнения («полизаполнения»). В следующем разделе мы определим некоторые из полифилов, которые могут вам понадобиться.
Предлагаемые полифилы - те, которые выполняют полные приложения Angular. Вам могут понадобиться дополнительные полифиллы для поддержки функций, не включенных в этот список. Обратите внимание, что полифиллы не могут волшебным образом преобразовать старый, медленный браузер в современный, быстрый.
Включение полифилов
Пользователи Angular CLI включают полифилы через файл src / polyfills.ts, который CLI создал с вашим проектом.
Этот файл включает в себя обязательные и многие из необязательных полизаполнений как операторы импорта JavaScript.
Пакеты npm для обязательных полифильмов (таких как zone.js) были установлены автоматически для вас, когда вы создали свой проект, и их соответствующие операторы импорта готовы к работе. Вы, вероятно, не будете прикасаться к ним.
Но если вам нужен дополнительный polyfill, вам придется установить его пакет npm. Например, если вам нужен полифилл веб-анимации, вы можете установить его с помощью npm, используя следующую команду (или эквивалент пряжи):
```npm install --save web-animations-js```
Обратите внимание, что полифил web-animations.js приведен только в качестве примера, он больше не является строгим требованием для angular.
Затем откройте файл polyfills.ts и удалите комментарий соответствующего оператора импорта, как в следующем примере:
/**
* Required to support Web Animations `@angular/platform-browser/animations`.
* Needed for: All but Chrome, Firefox and Opera. http://caniuse.com/#feat=web-animation
**/
import 'web-animations-js'; // Run `npm install --save web-animations-js`.
Демонстрация в реальном времени:
См. Pen src / polyfills.ts от w3resource ( @ w3resource ) в CodePen .
Если вы не можете найти нужный вам polyfill в polyfills.ts, добавьте его самостоятельно, следуя той же схеме:
- установить пакет npm
- импортировать файл в polyfills.ts
Обязательные полифилы
Это полифилы, необходимые для запуска приложения Angular на каждом поддерживаемом браузере:
Браузеры (настольные и мобильные) | Требуется полифилл |
---|---|
Chrome, Firefox, Edge, Safari 9+ | ES7 / отражать (только JIT) |
Safari 7 & 8, IE10 & 11, Android 4.1+ | ES6 |
IE9 | ES6, classList |
Дополнительные функции браузера для заполнения
Для некоторых функций Angular могут потребоваться дополнительные полифилы.
Например, библиотека анимаций опирается на стандартный API веб-анимации, который доступен только в Chrome и Firefox сегодня. (обратите внимание, что зависимость web-animations-js в Angular необходима только при использовании AnimationBuilder.)
Вот функции, которые могут потребовать дополнительных полифилов:
Особенность | Polyfill | Браузеры (настольные и мобильные) |
---|---|---|
JIT сборник. Требуется отразить для метаданных. | ES7 / отражения | Все текущие браузеры. Включено по умолчанию. Можно удалить, если вы всегда используете AOT и используете только угловые декораторы. |
Анимации Только в том случае, если в приложении используется Animation Builder - стандартная поддержка анимации в Angular не требует никаких поли заливок (начиная с NG6). | Веб-анимация | Если используется AnimationBuilder, тогда полифилл включит поддержку очистки для IE / Edge и Safari (Chrome и Firefox поддерживают это изначально). |
Если вы используете следующие устаревшие каналы i18n: дата, валюта, десятичная дробь, проценты | Международный API | Все, кроме Chrome, Firefox, Edge, IE11 и Safari 10 |
NgClass на элементах SVG | ClassList | IE10, IE11 |
Http при отправке и получении двоичных данных | Типизированный Array Blob FormData | IE 9 |
Маршрутизатор при использовании хеш-маршрутизации | ES7 / массив | IE 11 |
Особенность | Polyfill | Браузеры (настольные и мобильные) |
Предлагаемые полифилы
Ниже приведены полифилы, которые используются для тестирования самого каркаса. Они являются хорошей отправной точкой для приложения.
Polyfill | Лицензия | Размер* |
---|---|---|
ES7 / отражения | MIT | 0.5KB |
ES7 / массив | MIT | 0.1KB |
ES6 | MIT | 27.4KB |
ClassList | Всеобщее достояние | 1KB |
международный | Лицензия MIT / Unicode | 13.5KB |
Веб-анимация | апаш | 14.8KB |
Типизированный Массив | MIT | 4KB |
капля | MIT | 1.3KB |
FormData | MIT | 0.4KB |
Polyfills для пользователей без CLI
Если вы не используете CLI, вы должны добавить свои сценарии polyfill непосредственно на веб-страницу хоста (index.html), возможно, так.
<!-- pre-zone polyfills -->
<script src="node_modules/core-js/client/shim.min.js"></script>
<script src="node_modules/web-animations-js/web-animations.min.js"></script>
<script>
/**
* you can configure some zone flags which can disable zone interception for some
* asynchronous activities to improve startup performance - use these options only
* if you know what you are doing as it could result in hard to trace down bugs..
*/
// __Zone_disable_requestAnimationFrame = true; // disable patch requestAnimationFrame
// __Zone_disable_on_property = true; // disable patch onProperty such as onclick
// __zone_symbol__BLACK_LISTED_EVENTS = ['scroll', 'mousemove']; // disable patch specified eventNames
/*
* in IE/Edge developer tools, the addEventListener will also be wrapped by zone.js
* with the following flag, it will bypass `zone.js` patch for IE/Edge
*/
// __Zone_enable_cross_context_check = true;
</script>
<!-- zone.js required by Angular -->
<script src="node_modules/zone.js/dist/zone.js"></script>
<!-- application polyfills -->
Демонстрация в реальном времени:
Смотрите индекс Pen по w3resource ( @ w3resource ) на CodePen .
Предыдущий: Компилятор Ahead-of-Time (AOT)
Далее: Создание и обслуживание приложений Angular
Новый контент: Composer: менеджер зависимостей для PHP , R программирования