दिलचस्प पोस्ट
स्विफ्ट: गार्ड बनाम अगर चलो रीसाइक्लर व्यू के चयनित आइटम को कैसे उजागर करना है? स्काला में `#` ऑपरेटर का क्या अर्थ है? जेएसपी पेज के माध्यम से सर्वलेट को कैसे कॉल करें किसी यूआरएल में टुकड़ा पहचानकर्ता के लिए मान्य पात्रों की सूची? मैं ASP.Net MVC रूटिंग का उपयोग कर मार्ग कैसे करूं? Vim में टेक्स्ट चिपकाने पर ऑटो इंडेंट बंद करना दृश्य स्टूडियो में LinqPad .dump () एक्सटेंशन विधि का उपयोग कैसे करें? एक तारीख में एक्स महीने जोड़ने के लिए जावास्क्रिप्ट फ़ंक्शन संदर्भ C ++ में क्यों नहीं reseatable हैं जावा में गहरी पुनरावर्ती से ढेर अतिप्रवाह? एक NumPy सरणी में भिन्न डेटाटाइप स्टोर करें? ffmpeg एक बास पाइप में यूनिट परीक्षण क्या प्रयास के लायक है? एक निर्देशिका के अंदर फाइलें प्राप्त करें

जावास्क्रिप्ट पुस्तकालयों को कम करने और संक्षिप्त करने के लिए आप क्या उपयोग करते हैं?

जावास्क्रिप्ट पुस्तकालयों को कम करने और संक्षिप्त करने के लिए आप क्या उपयोग करते हैं?

वेब के समाधान से एकत्रित समाधान "जावास्क्रिप्ट पुस्तकालयों को कम करने और संक्षिप्त करने के लिए आप क्या उपयोग करते हैं?"

मैं YUI कंप्रेसर का उपयोग करता हूँ काम अच्छी तरह से करने के लिए लगता है!

मैंने लंबे समय से यूआई कंप्रेसर का उपयोग किया है और इसके साथ कोई समस्या नहीं हुई है, लेकिन हाल ही में Google क्लोजर कंपाइलर का उपयोग करना शुरू कर दिया है और इसके साथ कुछ सफलता मिली है। मेरे इंप्रेशन अब तक:

  • यह आम तौर पर फ़ाइल आकार में कमी के संदर्भ में YUI कंप्रेसर को मात करता है। सरल मोड पर एक छोटी राशि से, और उन्नत मोड पर बहुत कुछ के द्वारा।
  • सरल मोड अब तक यूआई कंप्रेसर के रूप में विश्वसनीय है। मैंने जो कुछ भी खिलाया है उसे मैंने कोई समस्या नहीं दिखाई है।
  • उन्नत "संकलन" मोड कुछ लिपियों के लिए बहुत अच्छा है, लेकिन आपकी स्क्रिप्ट का नाटकीय आकार में कमी आपके कोड के साथ बहुत से निपटने की कीमत पर आता है जो इसे तोड़ने का अच्छा मौका है। इनमें से कुछ समस्याओं से निपटने के लिए और समझने के तरीके हैं कि यह क्या कर रहा है समस्याओं से बचने का एक लंबा रास्ता जा सकता है लेकिन मैं आम तौर पर इस मोड का उपयोग करने से बचता हूं।

मैं सरल "संकलन" मोड में Google क्लोजर कम्पाइलर का उपयोग करने के लिए आगे बढ़ चुका हूं, क्योंकि यह सामान्य रूप से YUI कंप्रेसर को पीछे छोड़ देता है मैंने इसे यूआई कंप्रेसर के मुकाबले काफी कम इस्तेमाल किया है, लेकिन मैंने जो कुछ भी देखा है उससे मैं इसकी सिफारिश करता हूं।

एक अन्य जो मैंने अभी तक कोशिश नहीं की है लेकिन आशाजनक लगता है मिहाई बेज़ोन की यूग्लिफ्टजेएस

आपके यहां संभावनाओं का झुंड है:

  • YUI कंप्रेसर द्वारा अन्य उत्तरों द्वारा उल्लिखित,
  • Google क्लोजर कंपाइलर ,
  • Dojo ToolKit के ShrinkSafe संकलक उनके बिल्ड सिस्टम द्वारा उपयोग किया जाता है,
  • डगलस क्रॉकफोर्ड अभी भी वास्तविक जेएसएमिन ,
  • दूसरों द्वारा उल्लिखित यूग्लिफ्टजेएसएस ,
  • और एक व्यावसायिक समाधान, जावास्क्रिप्ट आब्बूस्केटर (कभी भी व्यक्तिगत रूप से उपयोग नहीं किया गया)

मेरे व्यक्तिगत अनुभव से, मैं सुझाता था कि आप कस्टम बिल्ड बनाने के लिए डोजो एसडीके का उपयोग करें, जिसे आप फिर से अपने सामान्य शर्ंकसेफ कंपाइलर, या Google क्लोजर का उपयोग करने के लिए कॉन्फ़िगर कर सकते हैं, जो अब वे भी साथ ही समर्थन करते हैं ।

संपीड़न के संदर्भ में, मुझे लगता है कि Google क्लोजर मेरे लिए अब तक का सबसे अच्छा परिणाम पेश करता है, हालांकि मैं आमतौर पर श्रिंकसेफ़ से संतुष्ट हूं और यह थोड़ी बड़ी और अधिक मजबूत है, जबकि क्लोजर कंपाइलर ब्लॉक पर एक नया बच्चा दिखता है (जो आपके हितधारकों के लिए भी शौकीन नहीं हो सकता है, उदाहरण के लिए)

कुछ लोग केवल YUI कंप्रेसर द्वारा कसम खाता रहते हैं हालांकि। मैं व्यक्तिगत रूप से वास्तव में इसके लिए ज़मानत नहीं कर सकता

अब अगर आप सवाल करते थे कि पुस्तकालयों को संपीड़ित करने के लिए और न सिर्फ अपने जावास्क्रिप्ट कोड, यह स्पष्ट रूप से वास्तव में अधिक शामिल हो जाता है, क्योंकि आपको उन उपकरणों को निर्यात करने के लिए इनमें से अधिकतर उपकरणों की ज़रूरत होगी, जिन्हें नाम दिया जाना चाहिए या छीन लिया जाना चाहिए। अधिकांश सभ्य कंप्रेशर्स उन कार्यों को हटा देंगे, जिन्हें लगता है कि वे अप्रयुक्त हैं – अक्सर एक पुस्तकालय में मामला है, यदि कोई परियोजना के लिए बाध्य नहीं है, तो जाहिर है – और नामों को बदलने के लिए उन्हें कम करें और कम वर्णों का उपयोग करें – एक समस्या भी है जैसा आप स्पष्ट रूप से एक सार्वजनिक करना चाहते हैं एपीआई के साथ छेड़छाड़ की नहीं

आप इस विषय पर अन्य थ्रेड्स पा सकते हैं और टूल के समर्थन दस्तावेजों में जानकारी पा सकते हैं। आप जेएसबीइल्डर 2, डोजोज बिल्ड टूल के लिए किसी प्रकार का लटकन भी देख सकते हैं (इसलिए, एसआरआईएफसीएस या क्लोजर कम्पाइलर का इस्तेमाल करके) एक्स्टजेएस (यूआईआई कंप्रेसर का उपयोग करके)।

(क्षमा करें, एक नया SO उपयोगकर्ता होने के नाते, मैं एक से अधिक लिंक जोड़ नहीं सकता इसलिए मैं सीधे टू टूल्स से लिंक नहीं कर सकता।)

संपादित करें: कुछ उत्तरों में व्यक्त की गई चिंताओं के बारे में, जो संपीड़न कीड़े बता सकते हैं और यह डीबगिंग को आसान बनाता है क्योंकि कोड गड़बड़ नहीं है: हाँ, यह एक वैध चिंता है तथापि:

  • आप बैंडविड्थ के संदर्भ में एक बहुत ही महत्वपूर्ण सुधार प्राप्त करेंगे यदि आप मिनेसियर का उपयोग करते हैं, यहां तक ​​कि gzip संपीड़न सक्रिय होने के साथ भी (और आप कंप्रेसर के जीवन को आसान बनाकर जीज़िप संप्रेषण का लाभ उठाना सीख सकते हैं
  • आपको यह सुनिश्चित करने के लिए कि आपका व्यवहार समान है, डिबग और उत्पादन मोड में अपने कोड को सिर्फ स्वाद लेना चाहिए। मेरा मतलब है, यह आपके काम का भी हिस्सा है …
  • इनमें से कुछ कम्प्रेसर थोड़ी देर के आसपास रहे हैं और वास्तव में आपके कोड में कीड़े का परिचय नहीं करेंगे। वे वास्तव में सिर्फ चीज़ें पुन: व्यवस्थित कर रहे हैं और तारों को प्रतिस्थापित करते हैं, वास्तव में
  • कुछ कंप्रेशर्स (उदाहरण के लिए डोजो बिल्ड सिस्टम) आपको एक संकुचित और एक असम्पीड आउटपुट दोनों उत्पादन करने की अनुमति देने के विकल्प के साथ आते हैं, ताकि आप उदाहरण के लिए क्वेरी मापदंडों का उपयोग करके डीबगिंग और उत्पादन के लिए अलग-अलग मोड सक्षम कर सकें।

मैं जावास्क्रिप्ट को कम से कम नहीं करता: gzip compression मेरे लिए काफी अच्छा है और इसके अतिरिक्त लाभ है कि त्रुटि संदेश अभी भी उपयोगी होंगे

मैं भी YUI कंप्रेसर का उपयोग करता हूं मेरे पास ऐसी चीज चीज है जो मैं अपनी परियोजनाओं में उपयोग करता हूं:

<!-- YUI Compressor tasks http://www.julienlecomte.net/yuicompressor/README --> <property name="yuicompressor.jar" value="C:/devlibs/yuicompressor-2.2.4/build/yuicompressor-2.2.4.jar"/> <target name="js.compress"> <!-- Create min directory under js direcrtory if it doesnt exist --> <mkdir dir="${js-directory}/min" /> <apply verbose="true" executable="java" parallel="false" failonerror="true"> <fileset dir="${js-directory}" includes="*.js"/> <arg line="-jar"/> <arg path="${yuicompressor.jar}"/> <srcfile/> <arg line="-o"/> <mapper type="glob" from="*.js" to="${js-directory}/min/*-min.js"/> <targetfile/> </apply> </target> 

UglifyJS एक नया है

UglifyJS YUI कंप्रेसर से बेहतर संपीड़ित करता है और Google क्लोजर कम्पाइलर के सममूल्य के बराबर है उदाहरण के लिए, Google क्लोजर कम्पाइलर से jQuery का संपीड़ित संस्करण केवल 403 बाइट्स UglifyJS द्वारा निर्मित संस्करण की तुलना में कम है – प्रभावशाली! UglifyJS भी एक लंबे शॉट के द्वारा चलाने के लिए सबसे तेज है, क्लोजर को 6 सेकंड से अधिक मार रहा है!

इसके अतिरिक्त, UglifyJS द्वारा उत्पादित कोड कोड के मुकाबले सुरक्षित है जो क्लोजर उत्पन्न करता है। उदाहरण के लिए, क्लोजर यह नहीं जानता कि कैसे eval या {} के साथ निपटने के लिए – यह सिर्फ एक त्रुटि लॉग करता है और वैसे भी वैसे भी नाम बदलने के लिए जारी है यह, स्पष्ट रूप से, टूटे कोड की ओर जाता है UglifyJS में यह समस्या नहीं है

अधिक जानकारी यहां पायी जा सकती है: http://badassjs.com/post/971960912/uglifyjs-a-fast-new-javascript-compressor-for-node-js

डीन एडवर्ड के पैकर कुछ बहुत अच्छा संपीड़न अनुपात प्राप्त करते हैं इसमें कमांड लाइन कार्यान्वयन है जो इसे एक एकीकरण प्रक्रिया में उपयोग करने की अनुमति देता है।

Google के समापन उपकरण

आप अपने ऐड-ऑन के साथ फायरबग में डिबगिंग के लिए नियमित स्रोत कोड में न्यूनतम संस्करण को मैप कर सकते हैं।

मैंने पहले YUI कंप्रेसर की कोशिश की है, लेकिन यह मुझे त्रुटि संदेश देता है

मैं अपनी जावास्क्रिप्ट को कम करने के लिए JSMIN का उपयोग करने का सुझाव देता हूं:

http://www.crockford.com/javascript/jsmin.html

यहां माइक्रोसॉफ्ट का एक समाधान है, जब आप अपनी प्रोजेक्ट को बनाते समय फ़ाइलों को स्वचालित बनाने के लिए विजुअल स्टूडियो में एकीकृत कर सकते हैं।

स्थापित करने के लिए:

से एमएसआई डाउनलोड करें: http://aspnet.codeplex.com/releases/view/40584

आपको इसके समाप्त होने के बाद अपने कंप्यूटर को पुनरारंभ करना पड़ सकता है

उपयोग करने के लिए:

अपनी .csproj फ़ाइल संपादित करें और फ़ाइल के अंत में निम्नलिखित को शामिल करें (लेकिन </Project> टैग से पहले):

 <Import Project="$(MSBuildExtensionsPath)\Microsoft\MicrosoftAjax\ajaxmin.tasks" /> <Target Name="AfterBuild"> <ItemGroup> <JS Include="**\*.js" Exclude="**\*.min.js;Scripts\*.js" /> <CSS Include="**\*.css" Exclude="**\*.min.css" /> </ItemGroup> <AjaxMin JsSourceFiles="@(JS)" JsSourceExtensionPattern="\.js$" JsTargetExtension=".min.js" CssSourceFiles="@(CSS)" CssSourceExtensionPattern="\.css$" CssTargetExtension=".min.css"/> </Target> 

अब जब आप अपनी प्रोजेक्ट बनाते हैं, तो सभी सीएसएस और जेएस फ़ाइलें जो .min.js में समाप्त नहीं होती हैं, .min.css को कम किया जाएगा (minified होने से अन्य फाइलों को बाहर करने के लिए "बहिष्कृत" विशेषता देखें)।

http://code.google.com/p/jsmin-php/

अच्छा पुराने डॉग क्रॉकफोर्ड 🙂 इस का सौंदर्य यह है कि कैश नियंत्रण के साथ आप केवल तब ही स्वचालित रूप से स्वचालित संपीड़न प्राप्त कर सकते हैं जब इसकी आवश्यकता होती है या मेरी किसी एक प्रोजेक्ट में मैं कॉम्पैक्टेड / जीज़िप फाइलों को आउटपुट करता हूं और जब मैं कोई बदलाव करता हूं तो उन्हें हटा देता हूं। एक विकास के वातावरण के लिए, मैं 'मिनिफिकेशन स्क्रिप्ट'

मैं जावास्क्रिप्ट :: मिनिफ़ायर :: एक्सएस के चारों ओर एक सरल (3-4 पंक्ति) रैपर स्क्रिप्ट का उपयोग करता हूं

यहाँ एक लेख है जिसमें वर्णित है कि निर्माण के दौरान फ़ाइलों को कम करने के लिए YUI कंप्रेसर का उपयोग कैसे करें: जेएस फ़ाइलों को आपकी बिल्ड प्रक्रिया के भाग के रूप में संपीड़ित करना

मैं पर्ल के जावास्क्रिप्ट :: मिनेफ़ायर का उपयोग करता हूँ यह बहुत अच्छी तरह से काम करता है और आप उदाहरण के लिए पर्ल का इस्तेमाल करते हुए कुछ वाक्यांशों को बदल सकते हैं।

http://caja.appspot.com/tools/index सभी तीन HTML / CSS / JS करता है

https://jawr.dev.java.net/ minification और संस्करण के लिए उत्कृष्ट है

एक बहुत अच्छा ऑनलाइन कंप्रेसर है:

http://javascriptcompressor.com/

आप चर को भी घटा सकते हैं, अगर आप चाहते हैं कि वह और भी संकलित हो।

आशा करता हूँ की ये काम करेगा