JavaScript Minifier (ย่อโค้ด JS)
วาง JavaScript เพื่อย่อด้วย Terser: โค้ดที่ไม่ได้ใช้ถูกลบ ชื่อถูกย่อให้สั้น และช่องว่างหายไป ข้อผิดพลาดทางไวยากรณ์จะชี้ไปที่บรรทัดและคอลัมน์ที่แน่นอน
ทำงานในเบราว์เซอร์ไม่ต้องสมัครไม่มีการอัปโหลด
วิธีใช้ JavaScript Minifier
- วาง JavaScript ของคุณหรือเปิดไฟล์
.js - เลือกตัวเลือก: ย่อชื่อตัวแปร ทำให้ตัวแปรภายในสั้นลง บีบอัด เขียนโค้ดใหม่ให้เล็กลงแต่ทำงานเหมือนเดิม ES module เปิดใช้
import/exportระดับบนสุด - เลือก ECMAScript target ที่เบราว์เซอร์ของผู้ใช้รองรับ ES2020 ปลอดภัยสำหรับเบราว์เซอร์ evergreen ทั้งหมด
- ดูขนาด ส่วนที่ประหยัดได้ และขนาด gzip โดยประมาณใต้ผลลัพธ์
- คัดลอกโค้ดที่ย่อแล้วหรือดาวน์โหลดเป็น
output.min.js
JavaScript minifier ทำอะไร?
การย่อทำให้ JavaScript เล็กลงโดยไม่เปลี่ยนการทำงาน เครื่องมือนี้ใช้ Terser ซึ่งเป็นตัวย่อเบื้องหลัง webpack, Vite และ Rollup และทำการเปลี่ยนแปลงสามแบบ:
- ลบช่องว่างและคอมเมนต์: การเยื้อง การขึ้นบรรทัด และคอมเมนต์ไม่จำเป็นสำหรับ JavaScript engine
- Mangling: ชื่อตัวแปรภายในและพารามิเตอร์ของฟังก์ชัน เช่น
subtotalจะกลายเป็นตัวอักษรเดียว ชื่อ global และ property ของ object จะไม่ถูกแตะต้อง public API ของคุณจึงยังทำงานได้ - การบีบอัด: นิพจน์ค่าคงที่ถูกคำนวณล่วงหน้า โค้ดที่ไม่มีวันถูกเรียกถูกลบ คำสั่ง
ifกลายเป็น ternary และฟังก์ชันสั้น ๆ ถูก inline
ย่อ vs. gzip: ต้องใช้ทั้งสองอย่างหรือไม่?
ใช่ Gzip และ Brotli บีบอัดรูปแบบไบต์ที่ซ้ำกันระหว่างการส่งผ่านเครือข่าย ส่วนการย่อจะลบไบต์ที่เบราว์เซอร์ต้องดาวน์โหลด พาร์ส และคอมไพล์ สคริปต์ทั่วไปเล็กลง 40–60% จากการย่อ และอีก 60–70% จาก gzip ขนาด gzip ที่แสดงที่นี่เป็นค่าประมาณที่ดีของสิ่งที่เซิร์ฟเวอร์จะส่งจริง
การเก็บคอมเมนต์ลิขสิทธิ์
ไลเซนส์โอเพนซอร์สหลายแบบ (MIT, BSD, Apache) กำหนดให้ประกาศลิขสิทธิ์ต้องอยู่กับโค้ด ตามธรรมเนียม คอมเมนต์ที่ขึ้นต้นด้วย /*! หรือมี @license หรือ @preserve จะถูกเก็บไว้เมื่อเปิด เก็บคอมเมนต์ลิขสิทธิ์
เมื่อใดไม่ควรย่อเอง
หากโปรเจกต์ของคุณใช้ bundler อยู่แล้ว ให้ bundler ย่อ production build และสร้าง source map สำหรับดีบัก ตัวย่อออนไลน์เหมาะสำหรับสคริปต์ใช้ครั้งเดียว โค้ดสั้น ๆ สำหรับ CMS หรือ tag manager, bookmarklet และการดูว่าโค้ดชิ้นหนึ่งเล็กลงได้แค่ไหน
คำถามที่พบบ่อย
โค้ดของฉันถูกอัปโหลดไปยังเซิร์ฟเวอร์หรือไม่?
การย่อทำให้โค้ดพังได้หรือไม่?
Function.prototype.toString() หรือชื่อตัวแปรภายในผ่าน eval อาจได้รับผลกระทบ ในกรณีนั้นให้ปิด ย่อชื่อตัวแปร