像java這樣的高階語言,往往先做好部分編譯,在執行時,再使用JIT將前面編譯的中介軟體輸出編譯為機器語言,放到機器上執行。這可能會影響到執行的效能。
再比如,像angular的web 應用,angular bootup起來後,必須在瀏覽器中執行編譯過程,形成普通的js程式碼,瀏覽器才能理解並執行。而這個過程,如果頁面比較複雜的話,則會耗時非常大。這時AOT這個概念就可以用上了。
說的簡單一些,AOT就是在build構建時,由構建工具一次性將angular的程式碼,或者比如vuejs的vue元件都編譯成js程式碼,並且bundle起來,這樣瀏覽器開啟頁面就是已經構建好的純粹js程式碼,可以大大提高程式執行效率。
https://en.wikipedia.org/wiki/Ahead-of-time_compilation
https://stackoverflow.com/questions/43307970/vue-2-aot-ahead-of-time-compilation
http://blog.mgechev.com/2016/08/14/ahead-of-time-compilation-angular-offline-precompilation/