ตัวบีบอัด JavaScript ที่ดีที่สุดคืออะไร ฉันกำลังมองหาเครื่องมือที่:
- ใช้งานง่าย
- มีอัตราการบีบอัดสูง
- สร้างผลลัพธ์ที่เชื่อถือได้ (ไม่ทำให้สับสน)
ตัวบีบอัด JavaScript ที่ดีที่สุดคืออะไร ฉันกำลังมองหาเครื่องมือที่:
คำตอบ:
ฉันเพิ่งเปิดตัวUglifyJSซึ่งเป็นตัวบีบอัด JavaScript ซึ่งเขียนใน JavaScript (ทำงานบนแพลตฟอร์มNodeJS Node.jsแต่สามารถแก้ไขได้อย่างง่ายดายเพื่อให้ทำงานบนเอนจิ้น JavaScript ใด ๆ เนื่องจากไม่จำเป็นต้องใช้Node.js
ภายใน) มันเร็วกว่าทั้งYUI CompressorและGoogle Closureมากมันบีบอัดได้ดีกว่าYUIในสคริปต์ทั้งหมดที่ฉันทดสอบและปลอดภัยกว่าการปิด (รู้วิธีจัดการกับ "eval" หรือ "with")
นอกเหนือจากการลบช่องว่าง UglifyJS ยังทำสิ่งต่อไปนี้:
foo["bar"]
เป็นfoo.bar
ที่เป็นไปได้PS: โอ้มันสามารถ "ตกแต่ง" เช่นกัน ;-)
กลับมาที่คำถามนี้อีกไม่กี่ปีต่อมาUglifyJSดูเหมือนจะเป็นตัวเลือกที่ดีที่สุดในตอนนี้
ตามที่ระบุไว้ด้านล่างมันทำงานบนแพลตฟอร์ม NodeJS แต่สามารถแก้ไขได้อย่างง่ายดายเพื่อให้ทำงานบนเอนจิ้น JavaScript ใด ๆ
--- คำตอบเก่าด้านล่าง ---
Google เปิดตัวClosed Compilerซึ่งดูเหมือนว่าจะสร้างไฟล์ที่เล็กที่สุดเท่าที่เห็นที่นี่และที่นี่
ก่อนหน้านั้นมีตัวเลือกต่าง ๆดังนี้
โดยทั่วไปPackerทำงานได้ดีกว่าในการบีบอัดเริ่มต้น แต่ถ้าคุณกำลังจะ gzip ไฟล์ก่อนที่จะส่งลวด (ซึ่งคุณควรจะทำ) YUI Compressorจะมีขนาดเล็กที่สุด
การทดสอบทำในรหัส jQuery btw
@ daniel jamesกล่าวถึงคอมเม้นต์คอมเพรสเซอร์ซึ่งแสดงให้เห็นว่า Packer เป็นผู้นำในการบีบอัดที่ดีที่สุดดังนั้นฉันเดาว่า ymmv
\uxxxx
ตัวอักษรตามค่าเริ่มต้น .. ใช้เช่น--charset UTF-8
(ถ้าคุณแน่ใจว่าคุณแจ้งให้เบราว์เซอร์ทราบ)
YUI Compressorเป็นวิธีที่จะไป มันมีอัตราการบีบอัดที่ยอดเยี่ยมมีการทดสอบอย่างดีและมีการใช้งานในเว็บไซต์ยอดนิยมหลายแห่งและฉันแนะนำโดยส่วนตัวด้วย
ฉันใช้มันสำหรับโครงการของฉันโดยไม่มีข้อผิดพลาด JavaScript หรืออาการสะอึก และมีเอกสารที่ดี
ฉันไม่เคยใช้ความสามารถในการบีบอัด CSS แต่ก็มีอยู่เช่นกัน การบีบอัด CSS ทำงานได้ดีเช่นกัน
หมายเหตุ: แม้ว่า Dean Edwards / / packer / จะมีอัตราการบีบอัดที่ดีกว่า YUI Compressor แต่ฉันพบข้อผิดพลาดเล็กน้อยของ JavaScript เมื่อใช้งาน
npm install packer
ดังนี้ (= D
ฉันใช้ShrinkSafeจากโครงการ Dojo - มันยอดเยี่ยมเพราะใช้ล่าม JavaScript ( Rhino ) เพื่อจัดการกับการหาสัญลักษณ์ในโค้ดและทำความเข้าใจขอบเขตของโค้ด ฯลฯ ซึ่งช่วยให้มั่นใจได้ว่าโค้ดจะทำงานเมื่อมันออกมา ปลายอีกด้านตรงข้ามกับเครื่องมือบีบอัดจำนวนมากที่ใช้ regex ทำเช่นเดียวกัน (ซึ่งไม่น่าเชื่อถือ)
จริง ๆ แล้วฉันมีงาน MSBuild ในโครงการ Web Deploymentใน Visual Studio ปัจจุบันของฉันที่เรียกใช้สคริปต์ซึ่งจะเรียกใช้ไฟล์ JS ของโซลูชันทั้งหมดผ่าน ShrinkSafe ก่อนที่เราจะปรับใช้และทำงานได้ค่อนข้างดี
แก้ไข:โดยวิธีการที่ "ดีที่สุด" เปิดให้มีการอภิปรายเนื่องจากเกณฑ์สำหรับ "ดีที่สุด" จะแตกต่างกันไปขึ้นอยู่กับความต้องการของโครงการ ส่วนตัวฉันคิดว่า ShrinkSafe เป็นยอดที่ดี สำหรับบางคนที่คิดว่าขนาดที่เล็กที่สุด == ดีที่สุดมันจะไม่เพียงพอ
แก้ไข:มันเป็นที่น่าสังเกตว่าคอมเพรสเซอร์ YUI ยังใช้แรด
หากคุณใช้ Packer เพียงไปที่ตัวเลือก 'ลดขนาดตัวแปร' และ gzip โค้ดผลลัพธ์ ตัวเลือก base62 ใช้สำหรับหากเซิร์ฟเวอร์ของคุณไม่สามารถส่งไฟล์ gzipped Packer ที่มี 'shrink vars' จะสามารถบีบอัด YUI ได้ดีขึ้น แต่สามารถแนะนำข้อบกพร่องได้หากคุณข้ามเซมิโคลอนไปที่ไหนสักแห่ง
base62 นั้นเป็น gzip ของคนจนซึ่งเป็นสาเหตุที่รหัส gzipping base62-ed ให้ไฟล์ที่ใหญ่กว่า gzipping shrink-var-ed code
JSMinเป็นอีกอันหนึ่ง
ในการค้นหา bullet เงินพบคำถามนี้ สำหรับ Ruby on Rails http://github.com/sstephenson/sprockets
นี่คือซอร์สโค้ดของ HttpHandler ที่ทำเช่นนั้นบางทีมันอาจจะช่วยคุณได้
bananascript.comเคยให้ผลลัพธ์ที่ดีที่สุดแก่ฉัน
KJScompress
http://opensource.seznam.cz/KJScompress/index.html
Kjscompress / csskompress เป็นชุดของสองแอปพลิเคชัน (kjscompress a csscompress) เพื่อลบช่องว่างและความคิดเห็นที่ไม่สำคัญออกจากไฟล์ที่มี JavaScript และ CSS ทั้งคู่เป็นแอพพลิเคชั่นบรรทัดคำสั่งสำหรับระบบปฏิบัติการ GNU / Linux
Js Crushเป็นคอมเพรสเซอร์ที่ดีที่จะใช้หลังจากที่คุณย่อขนาดให้เล็กลง