Хотя есть некоторые ответы, но я хотел бы также добавить некоторые из своих выводов, потому что я действительно был сбит с толку тем, что на самом деле компилируется, поскольку во всех случаях происходит преобразование TS
-> JS
. Я беру несколько параграфов из блога Джеффа в качестве ссылки.
JIT
TS
Код , написанный разработчиком компилируется в JS
код. Теперь этот скомпилированный js
код снова компилируется браузером, чтобы его html
можно было отображать динамически в соответствии с действием пользователя, и, соответственно, коды для angular
(для компонентов, обнаружения изменений, внедрения зависимостей) также генерируются во время выполнения.
(Компилятор браузера - это то, что принимает директивы и компоненты приложения, а также соответствующие им HTML и CSS, и создает фабрики компонентов для быстрого удаления экземпляров со всей их логикой создания представления.)
Когда приложение Angular 2 загружается в браузере, JIT-компилятор выполняет большую работу по анализу компонентов в приложении во время выполнения и генерации кода в памяти. Когда страница обновляется, вся проделанная работа отбрасывается, и JIT-компилятор выполняет ее заново.
АОТ
TS
Код , написанный разработчиком компилируется в JS
код, это js
уже скомпилированные для угловых и . Теперь этот скомпилированный js
код снова компилируется браузером, чтобы html
можно было отобразить. Но загвоздка здесь в том, что о функциях angular
уже позаботился AOT
компилятор, и, следовательно, браузеру не нужно сильно беспокоиться о создании компонентов, обнаружении изменений и внедрении зависимостей. Итак, имеем:
Более быстрый рендеринг
При использовании AOT браузер загружает предварительно скомпилированную версию приложения. Браузер загружает исполняемый код, чтобы он мог немедленно отобразить приложение, не дожидаясь предварительной компиляции приложения.
Меньше асинхронных запросов
Компилятор встраивает внешние шаблоны HTML и таблицы стилей CSS в JavaScript приложения, устраняя отдельные запросы ajax для этих исходных файлов.
Меньший размер загружаемого фреймворка Angular
Нет необходимости скачивать компилятор Angular, если приложение уже скомпилировано. Компилятор составляет примерно половину самого Angular, поэтому его отсутствие значительно снижает полезную нагрузку приложения.
Обнаруживать ошибки шаблона раньше
Компилятор AOT обнаруживает и сообщает об ошибках привязки шаблона на этапе сборки, прежде чем пользователи смогут их увидеть.
Лучшая безопасность
AOT компилирует HTML-шаблоны и компоненты в файлы JavaScript задолго до их предоставления клиенту. Без шаблонов для чтения и без рискованной оценки HTML или JavaScript на стороне клиента меньше возможностей для атак путем внедрения.
Остальные различия уже охвачены списком Беньямина, Нисара и Гауранга.
Не стесняйтесь поправлять меня