Tôi có một ứng dụng đơn giản, khởi tạo bởi angular-cli
.
Nó hiển thị một số trang liên quan đến 3 tuyến đường. Tôi có 3 thành phần. Trên một trong những trang này, tôi sử dụng lodash
và các mô-đun HTTP Angular 2 để lấy một số dữ liệu (sử dụng RxJS Observable
s map
và subscribe
). Tôi hiển thị các yếu tố này bằng cách sử dụng đơn giản *ngFor
.
Nhưng, mặc dù thực tế ứng dụng của tôi rất đơn giản, tôi nhận được một gói và bản đồ rất lớn (theo ý kiến của tôi). Tôi không nói về các phiên bản gzip nhưng kích thước trước khi gzipping. Câu hỏi này chỉ là một cuộc điều tra khuyến nghị chung.
Một số kết quả xét nghiệm:
ng xây dựng
Hash: 8efac7d6208adb8641c1 Thời gian: 10129ms chunk {0} main.bundle.js, main.bundle.map (chính) 18,7 kB {3} [ban đầu] [kết xuất]
chunk
chunk {2} scripts.bundle.js, scripts.bundle.map (scripts) 128 kB {4} [ban đầu] [kết xuất]
chunk {3} eller.bundle.js, eller.bundle.map (nhà cung cấp) 3,96 MB [ban đầu] [kết xuất]
chunk {4} inline.bundle.js, inline.bundle.map (nội tuyến) 0 byte [entry] [render]
Chờ đã: Gói gói nhà cung cấp 10Mb cho một ứng dụng đơn giản như vậy?
ng xây dựng - sản phẩm
Hash: 09a5f095e33b2980e7cc Thời gian: 23455ms chunk {0} main.6273b0f04a07a1c2ad6c.bundle.js, main.6273b0f04a07a1c2ad6c.bundle.map (chính)
chunk {1} style.bfdaa4d8a4eb2d0cb019.bundle.css, style.bfdaa4d8a4eb2d0cb019.bundle.map, Styles.bfdaa4d8a4eb2d0cbb.
chunk {2} scripts.c5b720a078e5464ec211.bundle.js, scripts.c5b720a078e5464ec211.bundle.map (script) 128 kB {4} [ban đầu] [kết xuất]
chunk {3} nhà cung cấp.07af2467307e17d85438.bundle.js, nhà cung cấp.07af2467307e17d85438.bundle.map (nhà cung cấp) 3,96 MB [ban đầu] [kết xuất]
chunk {4} inline.a345391d459797f81820.bundle.js, inline.a345391d459797f81820.bundle.map (nội tuyến) 0 byte [entry] [render]
Đợi một lần nữa: kích thước gói nhà cung cấp tương tự như vậy cho prod?
ng build --prod --aot
Hash: 517e4425ff872bbe3e5b Thời gian: 22856ms chunk {0} main.95eadabace554e3c2b43.bundle.js, main.95eadabace554e3c2b43.bundle.map (chính) 130 kB {3]
chunk {1} style.e53a388ae1dd2b7f5434.bundle.css, style.e53a388ae1dd2b7f5434.bundle.map, Styles.e53a388ae1dd2b7f5434.bundle.map [4]
chunk {2} scripts.e5c2c90547f3168a7564.bundle.js, scripts.e5c2c90547f3168a7564.bundle.map (scripts) 128 kB {4} [ban đầu] [kết xuất]
chunk {3} nhà cung cấp.41a6c1f57136df286f14.bundle.js, nhà cung cấp.41a6c1f57136df286f14.bundle.map (nhà cung cấp) 2.75 MB [ban đầu] [kết xuất]
chunk {4} inline.97c0403c57a46c6a7920.bundle.js, inline.97c0403c57a46c6a7920.bundle.map (nội tuyến) 0 byte [entry] [render]
ng build --aot
Hash: 040cc91df4df5ffc3c3f Thời gian: 11011ms chunk {0} main.bundle.js, main.bundle.map (main) 130 kB {3} [ban đầu] [kết xuất]
chunk
chunk {2} scripts.bundle.js, scripts.bundle.map (scripts) 128 kB {4} [ban đầu] [kết xuất]
chunk {3} eller.bundle.js, eller.bundle.map (nhà cung cấp) 2,75 MB [ban đầu] [kết xuất]
chunk {4} inline.bundle.js, inline.bundle.map (nội tuyến) 0 byte [entry] [render]
Vì vậy, một vài câu hỏi để triển khai ứng dụng của tôi trên prod:
- Tại sao các gói nhà cung cấp rất lớn?
- Cây lắc có được sử dụng đúng cách
angular-cli
không? - Làm thế nào để cải thiện kích thước bó này?
- Là các tập tin .map cần thiết?
- Là các tính năng kiểm tra bao gồm trong gói? Tôi không cần chúng trong prod.
- Câu hỏi chung: các công cụ được đề xuất để đóng gói cho prod là gì? Có lẽ
angular-cli
(sử dụng Webpack trong nền) không phải là lựa chọn tốt nhất? Chúng ta có thể làm tốt hơn không?
Tôi đã tìm kiếm nhiều cuộc thảo luận về Stack Overflow, nhưng tôi không tìm thấy bất kỳ câu hỏi chung chung nào.