Использование AOT и JIT в производстве в приложении Angular 9 - PullRequest
5 голосов
/ 18 марта 2020

Итак, я создаю приложение 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:

Я забыл упомянуть, что в моем случае я использую сокет. js для системы активации, поэтому информационные панели и шаблоны несколько связаны. Таким образом, при переходе на /:companyname, когда устройство не было подключено, прежде чем оно автоматически переходит на /activate, где оно генерирует код и прослушивает, если пользователь вводит этот код, чтобы он мог подключить устройство к учетной записи пользователя. 1035 * РЕДАКТИРОВАТЬ 2:

Я читал, что плющ можно использовать для загрузки компонентов на лету, так что можно по-прежнему находиться в AOT и без необходимости иметь компилятор. Это можно сделать, и если да, то как этого добиться?

...