ฉันมีแอพง่ายๆเริ่มต้นโดยangular-cli
.
มันแสดงบางเพจที่สัมพันธ์กับ 3 เส้นทาง ฉันมีส่วนประกอบ 3 อย่าง ที่หนึ่งของการใช้งานนี้ผมหน้าlodash
และเชิงมุม 2 HTTP โมดูลที่จะได้รับข้อมูลบางอย่าง (โดยใช้ RxJS Observable
s, map
และsubscribe
) ฉันแสดงองค์ประกอบเหล่านี้โดยใช้ไฟล์*ngFor
.
แต่แม้ว่าแอปของฉันจะเรียบง่าย แต่ฉันก็ได้รับแพ็คเกจและแผนที่ขนาดใหญ่ (ในความคิดของฉัน) ฉันไม่ได้พูดถึงเวอร์ชัน gzip แต่เป็นขนาดก่อน gzipping คำถามนี้เป็นเพียงการสอบถามเกี่ยวกับคำแนะนำทั่วไป
ผลการทดสอบบางส่วน:
ng สร้าง
แฮช: 8efac7d6208adb8641c1 เวลา: 10129ms chunk {0} main.bundle.js, main.bundle.map (main) 18.7 kB {3} [initial] [rendered]
ก้อน {1} styles.bundle.css, styles.bundle.map, styles.bundle.map (รูปแบบ) 155 kB {4} [เริ่มต้น] [แสดงผล]
ก้อน {2} scripts.bundle.js, scripts.bundle.map (สคริปต์) 128 kB {4} [เริ่มต้น] [แสดงผล]
ก้อน {3} vendor.bundle.js, vendor.bundle.map (ผู้ขาย) 3.96 MB [เริ่มต้น] [แสดงผล]
ก้อน {4} inline.bundle.js, inline.bundle.map (อินไลน์) 0 ไบต์ [รายการ] [แสดงผล]
รอ: แพ็คเกจบันเดิลผู้ขาย 10Mb สำหรับแอพง่ายๆเช่นนี้หรือไม่?
ng สร้าง --prod
แฮช: 09a5f095e33b2980e7cc เวลา: 23455ms ชิ้น {0} main.6273b0f04a07a1c2ad6c.bundle.js, main.6273b0f04a07a1c2ad6c.bundle.map (หลัก) 18.3 kB {3} [เริ่มต้น] [แสดงผล]
กลุ่ม {1} styles.bfdaa4d8a4eb2d0cb019.bundle.css, styles.bfdaa4d8a4eb2d0cb019.bundle.map, styles.bfdaa4d8a4eb2d0cb019.bundle.map (รูปแบบ) 154 kB [แสดงผล]
ก้อน {2} scripts.c5b720a078e5464ec211.bundle.js, scripts.c5b720a078e5464ec211.bundle.map (สคริปต์) 128 kB {4} [เริ่มต้น] [แสดงผล]
กลุ่ม {3} vendor.07af2467307e17d85438.bundle.js, vendor.07af2467307e17d85438.bundle.map (ผู้ขาย) 3.96 MB [เริ่มต้น] [แสดงผล]
กลุ่ม {4} inline.a345391d459797f81820.bundle.js, inline.a345391d459797f81820.bundle.map (อินไลน์) 0 ไบต์ [รายการ] [แสดงผล]
รออีกครั้ง: ขนาดกลุ่มผู้ขายที่ใกล้เคียงกันสำหรับ prod หรือไม่
ng build --prod --aot
แฮช: 517e4425ff872bbe3e5b เวลา: 22856ms ชิ้น {0} main.95eadabace554e3c2b43.bundle.js, main.95eadabace554e3c2b43.bundle.map (หลัก) 130 kB {3} [เริ่มต้น] [แสดงผล]
chunk {1} styles.e53a388ae1dd2b7f5434.bundle.css, styles.e53a388ae1dd2b7f5434.bundle.map, styles.e53a388ae1dd2b7f5434.bundle.map (รูปแบบ) 154 kB {4} [เริ่มต้น] [แสดงผล]
ก้อน {2} scripts.e5c2c90547f3168a7564.bundle.js, scripts.e5c2c90547f3168a7564.bundle.map (สคริปต์) 128 kB {4} [เริ่มต้น] [แสดงผล]
กลุ่ม {3} vendor.41a6c1f57136df286f14.bundle.js, vendor.41a6c1f57136df286f14.bundle.map (ผู้ให้บริการ) 2.75 MB [เริ่มต้น] [แสดงผล]
ก้อน {4} inline.97c0403c57a46c6a7920.bundle.js, inline.97c0403c57a46c6a7920.bundle.map (อินไลน์) 0 ไบต์ [รายการ] [แสดงผล]
ng build --aot
แฮช: 040cc91df4df5ffc3c3f เวลา: 11011ms chunk {0} main.bundle.js, main.bundle.map (หลัก) 130 kB {3} [เริ่มต้น] [แสดงผล]
ก้อน {1} styles.bundle.css, styles.bundle.map, styles.bundle.map (รูปแบบ) 155 kB {4} [เริ่มต้น] [แสดงผล]
ก้อน {2} scripts.bundle.js, scripts.bundle.map (สคริปต์) 128 kB {4} [เริ่มต้น] [แสดงผล]
ก้อน {3} vendor.bundle.js, vendor.bundle.map (ผู้ขาย) 2.75 MB [เริ่มต้น] [แสดงผล]
ก้อน {4} inline.bundle.js, inline.bundle.map (อินไลน์) 0 ไบต์ [รายการ] [แสดงผล]
ดังนั้นคำถามสองสามข้อสำหรับการปรับใช้แอปของฉันบน prod:
- เหตุใดกลุ่มผู้ขายจึงมีขนาดใหญ่มาก
- ต้นไม้สั่นถูกใช้โดย
angular-cli
หรือไม่? - จะปรับปรุงขนาดกลุ่มนี้ได้อย่างไร?
- ไฟล์. map จำเป็นหรือไม่?
- คุณลักษณะการทดสอบรวมอยู่ในบันเดิลหรือไม่ ฉันไม่ต้องการพวกมันในแยง
- คำถามทั่วไป: อะไรคือเครื่องมือที่แนะนำในการแพ็คสำหรับแยง? บางที
angular-cli
(ใช้ Webpack ในพื้นหลัง) อาจไม่ใช่ตัวเลือกที่ดีที่สุด? เราทำได้ดีกว่านี้ไหม
ฉันค้นหาการสนทนามากมายใน Stack Overflow แต่ไม่พบคำถามทั่วไปใด ๆ