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