Использование как AOT, так и JIT в производстве в приложении Angular 9
Итак, я создал приложение Angular 9, в котором есть панель управления клиентами для управления их шаблонами, которые сохраняются на сервере. Эти шаблоны можно просматривать на разных устройствах через систему активации, чтобы устройства были привязаны к пользователю.
Так что скажем на https://templates.com
у нас есть /login
, /dashboards
, /manage
с дополнительными путями просмотра и редактирования данных. На этом URL-адресе также есть/:companyName
по этому пути он запрашивает шаблон, который содержит html со строками интерполяции, а также css, который будет загружен на лету.
Пока мне удалось добиться этого благодаря сообщению alarm9k.
Единственная проблема, возникающая с этим решением, заключается в том, что при создании приложения вы не можете использовать ng build --prod
потому что используя --prod
не будет работать, поскольку компилятор angular не включен в AOT, поэтому вы застряли в JIT.
Это приведет к увеличению размера приложения, в моем случае его размер составляет почти 42 МБ. Поэтому я хотел бы уменьшить размер файла, так как это сильно влияет на задержку приложения. Я просматривал статистику приложения и банкомата, у него задержка http p95 составляет 1,2 секунды, а средняя задержка http составляет 340 мс.
При использовании разных тестов скорости веб-сайта выберите Великобританию, в которой должен запускаться тест. Я получаю значения времени загрузки от 600 до 900 мс. При проверке нескольких мест он дал мне среднее время загрузки 5 с.
Вопрос:
Поэтому я хотел бы знать, есть ли способ разделить приложение на 2, где одно находится в режиме AOT, а другое - в режиме JIT, если безопасно сохранить часть в режиме JIT и если это минимизирует приложение или нет.
Если это невозможно, я хотел бы знать, как лучше всего свернуть это приложение и как это можно сделать.
Или, если есть способ, по крайней мере, сделать приложение более безопасным, так как весь код можно просмотреть в браузере в режиме JIT.
РЕДАКТИРОВАТЬ 1:
Я забыл упомянуть, что в моем случае я использую socket.js для системы активации, поэтому панели инструментов и шаблоны несколько связаны. Итак, когда собираетесь/:companyname
и устройство не было подключено до того, как оно автоматически перейдет в /activate
где он генерирует код и слушает, вводит ли пользователь этот код, чтобы подключить устройство к учетной записи пользователя.
РЕДАКТИРОВАТЬ 2:
Я читал, что ivy можно использовать для загрузки компонентов "на лету", поэтому можно по-прежнему находиться в AOT и без компилятора. Можно ли это сделать, и если да, то как этого добиться?