Mặc dù có một số câu trả lời nhưng tôi cũng muốn bổ sung một số phát hiện của mình, bởi vì tôi thực sự bối rối với những gì thực sự đang được biên dịch như trong tất cả các trường hợp, TS
-> JS
chuyển đổi xảy ra. Tôi đang lấy một số para từ blog của Jeff làm tài liệu tham khảo.
JIT
Các TS
mã được viết bởi các nhà phát triển được biên soạn để JS
mã. Giờ đây, js
mã đã biên dịch này được trình duyệt biên dịch lại để html
có thể hiển thị động theo hành động của người dùng và theo đó mã cho angular
(đối với các thành phần, phát hiện thay đổi, Chèn phụ thuộc) cũng được tạo trong thời gian chạy.
(Trình biên dịch trình duyệt là thứ nhận các chỉ thị và thành phần của ứng dụng, cùng với HTML và CSS tương ứng của chúng, đồng thời tạo ra các nhà máy sản xuất thành phần để nhanh chóng loại bỏ các phiên bản với tất cả logic tạo chế độ xem của chúng.)
Khi một ứng dụng Angular 2 được khởi động trong trình duyệt, trình biên dịch JIT thực hiện rất nhiều công việc để phân tích các thành phần trong ứng dụng trong thời gian chạy và tạo mã trong bộ nhớ. Khi trang được làm mới, tất cả công việc đã hoàn thành sẽ bị loại bỏ và trình biên dịch JIT thực hiện lại công việc.
AOT
Các TS
mã được viết bởi các nhà phát triển được biên soạn để JS
mã, này js
đã được biên soạn cho góc cũng . Bây giờ, mã đã biên dịch js
này được trình duyệt biên dịch lại để html
có thể hiển thị. Tuy nhiên, điểm nổi bật ở đây là các tính năng của angular
đã được AOT
trình biên dịch xử lý và do đó trình duyệt không phải lo lắng nhiều về việc tạo thành phần, phát hiện thay đổi, Dependency Injection. Vì vậy chúng tôi có :
Kết xuất nhanh hơn
Với AOT, trình duyệt tải xuống phiên bản được biên dịch trước của ứng dụng. Trình duyệt tải mã thực thi để có thể hiển thị ứng dụng ngay lập tức mà không cần đợi biên dịch ứng dụng trước.
Ít yêu cầu không đồng bộ hơn
Trình biên dịch nội tuyến các mẫu HTML bên ngoài và các biểu định kiểu CSS trong JavaScript ứng dụng, loại bỏ các yêu cầu ajax riêng biệt cho các tệp nguồn đó.
Kích thước tải xuống khung Angular nhỏ hơn
Không cần tải xuống trình biên dịch Angular nếu ứng dụng đã được biên dịch. Trình biên dịch gần bằng một nửa Angular, vì vậy việc bỏ qua nó sẽ giảm đáng kể tải ứng dụng.
Phát hiện lỗi mẫu sớm hơn
Trình biên dịch AOT phát hiện và báo cáo lỗi liên kết mẫu trong bước xây dựng trước khi người dùng có thể nhìn thấy chúng.
An ninh tốt hơn
AOT biên dịch các mẫu và thành phần HTML thành các tệp JavaScript rất lâu trước khi chúng được cung cấp cho máy khách. Không có mẫu để đọc và không có đánh giá HTML hoặc JavaScript phía máy khách rủi ro, có ít cơ hội hơn cho các cuộc tấn công tiêm.
Sự khác biệt còn lại đã được bao gồm trong các gạch đầu dòng của Benyamin, Nisar & Gaurang.
Vui lòng sửa cho tôi