XemEngine
Trước Ivy, trình biên dịch ViewEngine đã thực hiện phân tích toàn bộ chương trình dựa trên cấu hình NgModule và mẫu html và sau đó sản xuất các nhà máy mô-đun và thành phần dựa trên thông tin bắc cầu toàn cầu này.
Điều này có nghĩa là nếu bạn có một thành phần mà bạn không tham chiếu trong mẫu và bạn chưa thêm nó vào entryComponents
mảng NgModule thì thành phần này sẽ không được biên dịch và bạn không thể kết xuất nó một cách linh hoạt vì Angular không biết nơi để có được nhà máy cho thành phần này.
Khi bạn đã thêm nó, trình biên dịch sẽ tạo ra nhà máy chuyên dụng và cũng thêm nhà máy này vào HashMap nội bộ để có thể giải quyết thông qua ComponentFactoryResolver
.
Ivy
Ivy giới thiệu một trình biên dịch ngtsc hoàn toàn mới mà mô hình tinh thần là trình trang trí là trình biên dịch .
Nói cách khác, kiến trúc tổng thể của ngtsc nó là một tập hợp các biến áp TypeScript : cho thành phần, ống dẫn, ngModule, v.v.
Những máy biến áp này phát ra các chức năng tĩnh như AppComponent.ɵfac
, AppComponent.ɵcmp
tại chỗ có nghĩa là mã được mã hóa nằm trong cùng một tệp nơi đặt thành phần ban đầu / pipe / ngModule. Vì vậy, chúng tôi có các nhà máy (tất cả các mã cần thiết để khởi tạo các thành phần / ống / mô-đun góc) ở cùng một nơi và chúng có thể dễ dàng được truy cập bởi các thuộc tính tĩnh đó.
Nói một cách đơn giản, nếu có một tệp có trong trình biên dịch TypeScript có lớp với một @Component
trình biên dịch TypeScript trang trí thì trình biên dịch ngtsc sẽ phát ra nhà máy cho lớp này trong cùng một tệp.
Như bạn có thể đoán nếu bạn nhập thành phần đó trong bất kỳ tệp nào và Angular có thể dễ dàng khám phá nhà máy của nó thông qua thuộc tính tĩnh.
Xem thêm: