AOT/JIT
AOT: Ahead-of-Time compliation.
JIT: Just-In-Iime compilation.
所以專案經過 AOT 後,vendor 檔案會變小的原因是,瀏覽器已經不需要 compiler 了,build 工具就會把 compile 相關的程式碼抽掉,也表示 polyfill.js 裡面的 reflect 相關的 js 檔案也不需要一併傳給前端。這就是為什麼 AOT 應為預設的建置模式。產出的檔案大小會比JIT小很多。
可是AOT有寫法上的限制,請參閱這篇文章,在開發時,就要特別留意。
Universal
Universal
是讓 Angular 的程式碼先在伺服器端作 bootstrap 的行為,這時就會有 HTML Template 的產生,再把產生出來的 DOM 塞回頁面裡後再傳給前端瀏覽器。前端瀏覽器收到頁面後,會再重新執行一次 client 端的 bootstrap,在這著時間點,由於不需要重新產生頁面,所以速度就會很快,而且在看頁面source時,也可以看到實際產生後的HTML,而不是單一HTML Tag而已了。
須留意的是,Server端的bootstrap,有些物件是無法使用的,例如 window
, document
這一類的物件。
參考閱讀
AHEAD-OF-TIME COMPILATION
Multiple solutions for Angular Ahead of Time (AOT) Compilation
angular/universal