У меня есть библиотека Angular 5, которую я предоставляю в виде пакета другим приложениям для использования из их node_modules
.
В настоящее время приложение JIT компилируется с использованием rollup
и gulp
и экспортируется как пакет. Таким образом, приложения для разработчиков используют мой пакет в JIT-компилированной форме.
Изучение AOT привело меня к мысли, что любое приложение Angular, которое при компиляции AOT намного более производительно, чем его аналог JIT в браузере. Однако, как разработчик библиотеки, я хотел бы знать, получат ли разработчики приложений какой-либо выигрыш в производительности, если я предоставлю свою библиотеку, скомпилированную AOT?
Я использую ng-bootstrap
и множество других библиотек с открытым исходным кодом для создания компонентов в моем модуле и добавления к ним пользовательских стилей или функций. Должны ли все библиотеки, которые я использую в своем модуле, быть в своих формах AOT, или я могу использовать их JIT-аналоги?
Кроме того, я думаю, что было бы неплохо иметь отдельные пакеты для моей библиотеки — packageName
и packageName-aot
, чтобы у пользователей была возможность выбрать ту библиотеку, которую они хотят использовать.
Помимо всего рефакторинга кода (изменение частных переменных, используемых в шаблоне, на общедоступные, удаление стрелочных функций, лямбда-выражений и т. д.), есть ли что-то еще, что мне нужно иметь в виду, прежде чем выставлять свои библиотечные модули в форме AOT?
Я не могу использовать Angular CLI из-за определенных ограничений, поэтому мне придется зависеть от @ngtools/webpack
, чтобы получить компиляцию AOT, если таковая имеется.
В настоящее время мой tsconfig.json
имеет следующие параметры:
"angularCompilerOptions": {
"skipTemplateCodegen": true,
"strictMedtadataEmit": true,
"fullTemplateTypeCheck": true
}
Я много искал в Интернете, но документы Angular AOT довольно расплывчаты и не очень ясно, что я пытался здесь сделать. Любое направление было бы очень полезно.
Спасибо!