Angular 2 rc 6
, typescript 2
, node 4.5.0
, npm 2.15.9
trên Windows 7
Góc 2 Trình biên dịch phía trước của thời gian: tôi có phải làm cho tất cả các thuộc tính lớp công khai không?
Tôi đang cố gắng để di chuyển từ Just-in-Time để Ahead-of-Time biên soạn và tôi dựa vào các nguồn lực:
- Angular 2 - Ahead-of-time compilation how to
- https://github.com/angular/angular/tree/master/modules/@angular/compiler-cli#angular-template-compiler
tôi hiểu rằng tôi cần phải chạy trình biên dịch ngc
để tạo các tệp ngfactory.ts
và tôi cần thay đổi main.ts
để sử dụng platformBrowser
thay vì platformBrowserDynamic
để khởi động. Tôi đã gặp phải rào cản và không biết cách tiếp tục.
1. Tôi đã xác nhận rằng Ứng dụng chạy không có lỗi khi sử dụng tính năng Soạn thảo trong thời gian thực. main.ts
của tôi là:
enableProdMode();
platformBrowserDynamic().bootstrapModule(AppModule);
2. để xóa tất cả các file ứng dụng của tôi từ thư mục sản xuất của tôi, nhưng giữ thư viện của bên thứ 3 (ví dụ: góc 2, góc 2 Material)
3. tôi chạy "node_modules/.bin/ngc" -p ./
Thao tác này không có đầu ra cho bảng điều khiển. Tôi thấy tệp .ngfactory.ts
cho mỗi thành phần và mô-đun .ts
của tôi. Tôi cũng thấy tệp .css.shim.ts
cho mỗi số .css
của tôi có kiểu dáng thành phần. Bên cạnh đó, .js
và .js.map
file đã được transpiled và đặt trong thư mục sản
4. Nếu tôi cố gắng để chạy các ứng dụng vào thời điểm này, tôi thấy 404 not found
lỗi cho tất cả các .html
file mà tổ chức các mẫu thành phần
5. Tôi di chuyển tất cả các tệp mẫu theo cách thủ công (.html
) sang thư mục sản xuất và chạy Ứng dụng. Nó chạy tốt, nhưng nó vẫn sử dụng Just-in-Time biên soạn (255 yêu cầu, bao gồm compiler.umd.js
)
6. tôi thay đổi tôi main.ts
tới:
enableProdMode();
platformBrowser().bootstrapModuleFactory(AppModuleNgFactory);
On riêng của mình, điều này làm cho có sự khác biệt vì mã mới chưa được biên dịch. Tuy nhiên, tôi không biết phải làm gì từ đây.
Tôi có nên chạy lại ngc
không? Nếu tôi nhận được rất nhiều lỗi thuộc loại:
Error at C:/path/to/notify.component.ngfactory.ts:113:41: Property 'visible' is private and only accessible within class 'NotifyComponent'
... (many more like that with lots of properties from lots of components)
Compilation failed
Việc sử dụng trình biên dịch AoT có nghĩa là tôi phải công khai tất cả các thuộc tính lớp học của mình? Tôi có bỏ lỡ một bước không?
Đó cũng là những gì tôi đã tìm. Muốn tài liệu ionic làm cho điều này rõ ràng hơn như là 'biến đổi biến riêng thành âm thanh công khai' loại đáng sợ – masimplo