2016-09-14 27 views
5

Biên dịch trước thời hạn (hoặc AoT) là một tính năng được cung cấp trong Angular2. Nhưng tôi không thể tìm thấy lời giải thích tốt trên trang web chính thức về nó.AoT (hoặc biên dịch trước thời gian) trong Angular2 là gì?

Ai đó có thể định nghĩa rõ ràng về nó?

+2

thể dup của http://stackoverflow.com/questions/39464319/how-does-angular2-ahead-of-time-aot-compilation-work – yurzui

+0

nhờ các liên kết, tôi muốn đã xem xét nó, nhưng vẫn đang tìm kiếm loại định nghĩa chính xác –

Trả lời

6

Mẫu mà chúng tôi sử dụng các cú pháp đặc biệt góc cạnh2 như ngFor hoặc các chi tiết liên kết đường ống hoặc dữ liệu cần được biên dịch thành mã thân thiện với vm, trình duyệt có thể đọc.

Để chỉ trong thời gian biên dịch (hành vi thông thường), khuôn khổ cần gửi trình biên dịch góc và mẫu được biên dịch trên trình duyệt khi ứng dụng bắt đầu. Điều này có nghĩa là góc kích thước gói cao hơn phải gửi và thời gian tải lâu hơn, bởi vì trình duyệt phải biên dịch mẫu trước khi nó có thể hiển thị nó.

Điều này tương tự như cách chúng tôi có trong quá trình chuyển đổi trình duyệt của bản ghi. Bởi vì đây là quá trình tốn kém, chúng tôi thường xuyên chuyển đổi kiểu chữ ngoại tuyến trong khi đóng gói hoặc xây dựng quy trình.

Rendering mẫu ẩn cho số lợi ích như

  • nhỏ bó kích thước: 60% của thư viện angular2 là trình biên dịch. Bây giờ mẫu được biên dịch trước thời hạn, chúng tôi không cần gửi trình biên dịch nữa. Điều này làm giảm kích thước gói ứng dụng cần phải xuất xưởng
  • Thời gian tải nhanh hơn: Do mẫu đã được biên dịch sang mã thân thiện với VM, trình duyệt không mất thời gian để hiển thị mẫu. Kết quả trong hiển thị trang nhanh hơn.
+0

AOT chỉ là một thực tế để chuyển đổi các mẫu html thành các chức năng. Vì vậy, cơ bản, ứng dụng của bạn sẽ nhanh hơn (không cần phải biên dịch teplates khi đang bay tại bootstrap). Vì vậy, tôi đồng ý với ** Thời gian tải nhanh hơn **. Nhưng đối với ** Kích thước gói nhỏ hơn ** nó sẽ không xảy ra vì AOT. Bạn sẽ cần phải sử dụng một cái gì đó như rollup để cây lắc mã của bạn (và giảm kích thước gói). Đây là giai đoạn đầu tho. – Maxime

+0

ngoài việc lắc cây, kích thước bó nhỏ hơn cũng có thể với AOT vì trình biên dịch góc, là phần chính của angular2, không được bao gồm trong gói –

+0

"ngoài việc lắc cây ... vì trình biên dịch góc ... là phần chính của angular2 ". Bạn ** cần ** để chạy AOT xây dựng trước khi bạn có thể thực hiện một cây lắc hiệu quả. – Maxime

1

docs Angular2: https://angular.io/docs/ts/latest/guide/deployment.html#!#aot

Các kiễu góc Ahead-of-Thời gian biên dịch trước biên dịch thành phần ứng dụng và các mẫu của họ trong quá trình xây dựng.

Các ứng dụng được biên dịch với AOT khởi chạy nhanh hơn vì nhiều lý do.

Application components execute immediately, without client-side compilation. 
Templates are embedded as code within their components so there is no client-side request for template files. 
You don't download the Angular compiler, which is pretty big on its own. 
The compiler discards unused Angular directives that a tree-shaking tool can then exclude. 
Các vấn đề liên quan