Angular--AOT和JIT兩種編譯方式帶來的改變

         Angular 應用主要由組件及其 HTML 模板組成。因爲瀏覽器沒法直接理解 Angular 所提供的組件和模板,所以 Angular 應用程序須要先進行編譯才能在瀏覽器中運行。Angular 提供了瀏覽器

兩種方式來編譯angular應用程序:安全

  1. 即時編譯 (JIT,Just in time),它會在運行期間在瀏覽器中編譯你的應用。服務器

  2. 預先編譯(AOT,Ahead of time),它會在構建時編譯你的應用。框架

        注:當你運行 ng build(僅編譯)或 ng serve(編譯並啓動本地服務器) 這兩個 CLI 命令時 JIT 編譯是默認選項;要進行 AOT 編譯,只要讓 ng build 或 ng serve 命令中包含 --aot 標誌。異步

帶有 --prod 標誌的 ng build 命令 (ng build --prod) 會默認使用 AOT 編譯。ui

一:AOT:在瀏覽器下載和運行代碼以前的編譯階段,Angular 預先(AOT)編譯器會先把你的 Angular HTML 和 TypeScript 代碼轉換成高效的 JavaScript 代碼。好處以下:code

  1. 渲染得更快:使用 AOT瀏覽器下載預編譯版本的應用程序。 瀏覽器直接加載運行代碼,因此它能夠當即渲染該應用,而不用等應用完成首次編譯;
  2. 須要的異步請求更少:編譯器把外部 HTML 模板和 CSS 樣式表內聯到了該應用的 JavaScript 中。 消除了用來下載那些源文件的 Ajax 請求;
  3. 須要下載的 Angular 框架體積更小:若是應用已經編譯過了,天然不須要再下載 Angular 編譯器了。 該編譯器差很少佔了 Angular 自身體積的一半兒,因此,省略它能夠顯著減少應用的體積;
  4. 提前檢測模板錯誤:AOT 編譯器在構建過程當中檢測和報告模板綁定錯誤,避免用戶遇到這些錯誤;
  5. 更安全:AOT 方式會在發給客戶端以前就把 HTML 模板和組件編譯成 JavaScript 文件。 不須要讀取模板,也沒有客戶端組裝 HTML 或執行 JavaScript 的危險操做,受到注入類攻擊的機會也比較少。
相關文章
相關標籤/搜索