سؤال

ما هو أفضل ضاغط جافا سكريبت متاح؟أبحث عن أداة:

  • سهل الاستخدام
  • لديه معدل ضغط مرتفع
  • إنتاج نتائج نهائية موثوقة (لا تفسد الكود)
هل كانت مفيدة؟

المحلول

لقد أفرجت مؤخرا UglifyJS, ، ضاغط JavaScript مكتوب بلغة JavaScript (يعمل على NodeJS Node.js منصة، ولكن يمكن تعديلها بسهولة لتعمل على أي محرك جافا سكريبت، لأنها لا تحتاج إلى أي محرك Node.js الداخلية).إنه أسرع بكثير من كليهما ضاغط يوي و إغلاق جوجل, ، فهو يضغط بشكل أفضل من يوي في جميع البرامج النصية التي اختبرتها، وهي أكثر أمانًا من الإغلاق (يعرف كيفية التعامل مع "eval" أو "with").

بخلاف إزالة المسافات البيضاء، يقوم UglifyJS أيضًا بما يلي:

  • يغير أسماء المتغيرات المحلية (عادةً إلى أحرف مفردة)
  • ينضم إلى إعلانات var المتتالية
  • يتجنب إدراج أي أقواس وأقواس وفواصل منقوطة غير ضرورية
  • تحسين IFs (يزيل "آخر" عندما يكتشف عدم الحاجة إليها، ويحول IFs إلى &&، || أو ?/:المشغلين عندما يكون ذلك ممكنًا، وما إلى ذلك).
  • يتحول foo["bar"] داخل foo.bar حيثما كان ذلك ممكنا
  • يزيل علامات الاقتباس من المفاتيح في الكائنات الحرفية، حيثما أمكن ذلك
  • يحل التعبيرات البسيطة عندما يؤدي ذلك إلى كود أصغر (1+3*4 ==> 13)

ملاحظة:أوه، يمكنها "التجميل" أيضًا.؛-)

نصائح أخرى

أعيد النظر في هذا السؤال بعد بضع سنوات، UglifyJS, ، ويبدو أنه الخيار الأفضل حتى الآن.

كما هو مذكور أدناه، فهو يعمل على منصة NodeJS، ولكن يمكن تعديله بسهولة ليعمل على أي محرك JavaScript.

--- الإجابة القديمة أدناه ---

أصدرت جوجل مترجم الإغلاق والذي يبدو أنه يولد أصغر الملفات حتى الآن كما رأينا هنا و هنا

السابق لذلك الخيارات المختلفة كانت على النحو التالي

أساسًا باكر يقوم بعمل أفضل عند الضغط الأولي، ولكن إذا كنت ستقوم بضغط الملفات باستخدام gzip قبل إرسالها عبر السلك (وهو ما يجب عليك فعله) ضاغط يوي يحصل على أصغر حجم نهائي.

تم إجراء الاختبارات على كود jQuery راجع للشغل.

  • مكتبة jQuery الأصلية 62,885 بايت، 19,758 بايت بعد gzip
  • تم تصغير jQuery باستخدام JSMin 36,391 بايت، و11,541 بايت بعد gzip
  • تم تصغير jQuery باستخدام Packer 21,557 بايت، و11,119 بايت بعد gzip
  • تم تصغير jQuery باستخدام ضاغط YUI بمقدار 31,822 بايت، و10,818 بايت بعد gzip

@دانيال جيمس يذكر في التعليق com.compressorrater مما يُظهر أن Packer يتصدر المخطط بأفضل ضغط، لذلك أعتقد أن ymmv

ضاغط يوي هو الطريق للذهاب.إنه يتمتع بمعدل ضغط رائع، وقد تم اختباره جيدًا وهو قيد الاستخدام بين العديد من أفضل المواقع، وقد أوصيت به شخصيًا.

لقد استخدمته في مشاريعي دون أي خطأ أو خلل في JavaScript.ولها وثائق جميلة.

لم أستخدم مطلقًا إمكانات ضغط CSS الخاصة به، ولكنها موجودة أيضًا. يعمل ضغط CSS أيضًا.

ملحوظة:على الرغم من أن دين إدواردز /باكر/ يحقق معدل ضغط أفضل من YUI Compressor، وقد واجهت بعض أخطاء JavaScript عند استخدامه.

أنا أستعمل شرينك سيف من مشروع دوجو - إنه استثنائي لأنه يستخدم بالفعل مترجم JavaScript (وحيد القرن) للتعامل مع العثور على الرموز في الكود وفهم نطاقها، وما إلى ذلك.مما يساعد على التأكد من أن الكود سيعمل عندما يخرج من الطرف الآخر، على عكس الكثير من أدوات الضغط التي تستخدم التعبير العادي للقيام بنفس الشيء (وهو أمر غير موثوق به).

لدي بالفعل مهمة MSBuild في ملف مشروع نشر الويب في حل Visual Studio الحالي الخاص بي الذي يقوم بتشغيل برنامج نصي والذي بدوره يقوم بتشغيل جميع ملفات JS الخاصة بالحل من خلال ShrinkSafe قبل النشر ويعمل بشكل جيد.

يحرر: بالمناسبة، كلمة "الأفضل" مفتوحة للنقاش، حيث أن معايير "الأفضل" ستختلف حسب احتياجات المشروع.أنا شخصياً أعتقد أن ShrinkSafe يمثل توازناً جيداً؛بالنسبة لبعض الأشخاص الذين يعتقدون أن الحجم الأصغر == الأفضل، فلن يكون كافيًا.

يحرر: ومن الجدير بالذكر أن ضاغط YUI يستخدم أيضًا Rhino.

يحاول JSMin, ، وحصلت على C# وJava وC ومنافذ أخرى وهي متاحة بسهولة أيضًا.

إذا كنت تستخدم Packer، فما عليك سوى الانتقال إلى خيار "تقليص المتغيرات" وضغط الكود الناتج باستخدام gzip.خيار base62 مخصص فقط إذا كان خادمك لا يستطيع إرسال ملفات مضغوطة بتنسيق gzipped.يحقق برنامج Packer المزود بـ "shrink vars" ضغطًا أفضل لـ YUI، ولكن يمكنه تقديم أخطاء إذا تخطيت فاصلة منقوطة في مكان ما.

Base62 هو في الأساس ملف gzip للرجل الفقير، وهذا هو السبب في أن كود gzip base62-ed يمنحك ملفات أكبر من كود gzipتقليص-var-ed.

JSMin هو واحد آخر.

في البحث عن رصاصة فضية ، وجدت هذا سؤال.لروبي أون ريلز http://github.com/sstephenson/sprockets

وهنا شفرة المصدر من HttpHandler الذي يفعل ذلك، ربما سيساعدك

هنا هو برنامج نصي ضاغط YUI (بويك) الذي يعثر على جميع ملفات js وcss في المسار ويضغطها /(اختياريًا) مما يؤدي إلى تشويشها.من الجيد الاندماج في عملية البناء.

bananscript.com تستخدم لتعطيني أفضل النتائج.

KJScompress

http://opensource.seznam.cz/KJScompress/index.html

تم تعيين Kjscompress / csskompress من اثنين التطبيقات (KJSCOMPRESS A csscompress) لإزالة غير مهم المسافات البيضاء والتعليقات من الملفات تحتوي على جافا سكريبت و CSS.كلا هي تطبيقات سطر الأوامر ل نظام التشغيل جنو/لينكس.

شبيبة سحق يعد ضاغطًا جيدًا لاستخدامه بعد التصغير.

أنا أستعمل jscompressor.com كتطبيق كروم.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top