मैं अपने वेब एप्लिकेशन में jquery का उपयोग कर रहा हूं और मुझे jquery स्क्रिप्ट फ़ाइलों को एक पृष्ठ में लोड करने की आवश्यकता है।
Google ने सुझाव दिया कि मैं सभी jquery स्क्रिप्ट फ़ाइलों को एक ही फ़ाइल में संयोजित करूँ।
मैं यह कैसे कर सकता हूँ?
जवाबों:
लिनक्स पर आप एक से अधिक जावास्क्रिप्ट फ़ाइलों को एक में संयोजित करने के लिए सरल शेल स्क्रिप्ट https://github.com/dfsq/compressJS.sh का उपयोग कर सकते हैं । यह क्लोजर कंपाइलर ऑनलाइन सेवा का उपयोग करता है ताकि परिणामस्वरूप स्क्रिप्ट भी प्रभावी रूप से संपीड़ित हो।
$ ./compressJS.sh some-script.js another-sctipt.js onemore.js
Google क्लोजर कंपाइलर आज़माएं:
http://code.google.com/closure/compiler/docs/gettingstarted_ui.html
बस पाठ फ़ाइलों को संयोजित करें और फिर YUI कंप्रेसर की तरह कुछ का उपयोग करें ।
कमांड का उपयोग करके फ़ाइलों को आसानी से जोड़ा जा सकता है cat *.js > main.js
और main.js तो YUI कंप्रेसर का उपयोग करके चलाया जा सकता हैjava -jar yuicompressor-x.y.z.jar -o main.min.js main.js
।
अद्यतन अगस्त 2014
मैंने अब जावास्क्रिप्ट कॉन्टेक्टेशन और कम्प्रेशन के लिए विभिन्न प्लगइन्स और कुछ न्यूनतम कॉन्फ़िगरेशन के साथ गुलप का उपयोग करने के लिए माइग्रेट किया है ।
आप इसके माध्यम से कर सकते हैं
include
उन सभी की एक सरणी बनाएं और एक <script>
टैग में आउटपुट करेंinclude
अर्थात <script src = "...."> कई फाइलों से लिंक नहीं है, बस उन्हें एक स्क्रिप्ट तत्व में शामिल करें। आदर्श रूप से उचित कैशिंग के साथ एक सीडीएन का उपयोग किया जाना चाहिए।
मेरे पास आमतौर पर यह है Makefile
:
# All .js compiled into a single one.
compiled=./path/of/js/main.js
compile:
@find ./path/of/js -type f -name "*.js" | xargs cat > $(compiled)
फिर आप चलाते हैं:
make compile
मुझे उम्मीद है यह मदद करेगा।
मैं इस शेल स्क्रिप्ट का उपयोग लिनक्स https://github.com/eloone/mergejs पर करता हूं ।
उपरोक्त लिपियों की तुलना में इसका उपयोग करने के लिए बहुत सरल होने के फायदे हैं, और एक बड़ा प्लस यह है कि आप उन जेएस फाइलों को सूचीबद्ध कर सकते हैं जिन्हें आप इनपुट टेक्स्ट फाइल में मर्ज करना चाहते हैं और कमांड लाइन में नहीं, इसलिए आपकी सूची पुन: प्रयोज्य है आपको हर बार अपनी फ़ाइलों को मर्ज करने के लिए इसे टाइप करने की आवश्यकता नहीं है। यह बहुत आसान है क्योंकि आप इस चरण को हर बार दोहराएंगे जब आप उत्पादन में धकेलना चाहते हैं। आप उन फ़ाइलों को भी टिप्पणी कर सकते हैं जिन्हें आप सूची में मर्ज नहीं करना चाहते हैं। आपके द्वारा सबसे अधिक संभावित प्रकार की कमांड लाइन है:
$ mergejs js_files_list.txt output.js
और अगर आप भी परिणामी विलय फ़ाइल को संपीड़ित करना चाहते हैं:
$ mergejs -c js_files_list.txt output.js
यह output-min.js
Google के क्लोजर कंपाइलर द्वारा बनाया जाएगा । या:
$ mergejs -c js_files_list.txt output.js output.minified.js
यदि आप अपनी नामांकित फ़ाइल के लिए एक विशिष्ट नाम चाहते हैं output.minified.js
मुझे यह एक साधारण वेबसाइट के लिए वास्तव में उपयोगी लगता है।
स्क्रिप्ट समूहीकरण उल्टा है, तो आपको उन्हें http://yepnopejs.com/ या http://headjs.com जैसी किसी चीज़ का उपयोग करके समानांतर में लोड करना चाहिए
इस स्क्रिप्ट को नोटपैड में कॉपी करें और .vbs फ़ाइल के रूप में सहेजें। इस स्क्रिप्ट पर .js फ़ाइलें खींचें और छोड़ें।
ps। यह केवल खिड़कियों पर काम करेगा।
set objArgs = Wscript.Arguments
set objFso = CreateObject("Scripting.FileSystemObject")
content = ""
'Iterate through all the arguments passed
for i = 0 to objArgs.count
on error resume next
'Try and treat the argument like a folder
Set folder = objFso.GetFolder(objArgs(i))
'If we get an error, we know it is a file
if err.number <> 0 then
'This is not a folder, treat as file
content = content & ReadFile(objArgs(i))
else
'No error? This is a folder, process accordingly
for each file in folder.Files
content = content & ReadFile(file.path)
next
end if
on error goto 0
next
'Get system Temp folder path
set tempFolderPath = objFso.GetSpecialFolder(2)
'Generate a random filename to use for a temporary file
strTempFileName = objFso.GetTempName
'Create temporary file in Temp folder
set objTempFile = tempFolderPath.CreateTextFile(strTempFileName)
'Write content from JavaScript files to temporary file
objTempFile.WriteLine(content)
objTempFile.Close
'Open temporary file in Notepad
set objShell = CreateObject("WScript.Shell")
objShell.Run("Notepad.exe " & tempFolderPath & "\" & strTempFileName)
function ReadFile(strFilePath)
'If file path ends with ".js", we know it is JavaScript file
if Right(strFilePath, 3) = ".js" then
set objFile = objFso.OpenTextFile(strFilePath, 1, false)
'Read entire contents of a JavaScript file and returns it as a string
ReadFile = objFile.ReadAll & vbNewLine
objFile.Close
else
'Return empty string
ReadFile = ""
end if
end function
आप क्लोजर-कंपाइलर का उपयोग कर सकते हैं जैसा कि orangutancloud सुझाव देता है। यह इंगित करने योग्य है कि आपको वास्तव में जावास्क्रिप्ट को संकलित / संक्षिप्त करने की आवश्यकता नहीं है , यह जावास्क्रिप्ट पाठ फ़ाइलों को केवल एक पाठ फ़ाइल में संक्षिप्त करने के लिए संभव होना चाहिए। बस उन्हें उस क्रम में शामिल करें, जो वे आम तौर पर पृष्ठ में शामिल करते हैं।
यदि आप PHP चला रहे हैं, तो मैं मिनिफाइ करने की सलाह देता हूं क्योंकि यह सीएसएस और जेएस दोनों के लिए फ्लाई पर कंबाइन और मिनीफाई करता है। एक बार जब आप इसे कॉन्फ़िगर कर लेते हैं, तो सामान्य रूप से काम करते हैं और यह सब कुछ ध्यान रखता है।
आप KjsCompiler का उपयोग कर सकते हैं: https://github.com/knyga/kjscompiler कूल निर्भरता प्रबंधन
आप मेरे द्वारा बनाई गई स्क्रिप्ट का उपयोग कर सकते हैं। हालांकि इसे चलाने के लिए आपको JRuby की जरूरत है। https://bitbucket.org/ardee_aram/jscombiner (JSCombiner)।
इसके अलावा जो सेट करता है, वह जावास्क्रिप्ट में फ़ाइल परिवर्तन देखता है, और इसे आपकी पसंद की स्क्रिप्ट में स्वचालित रूप से जोड़ता है। तो हर बार जब आप इसे टेस्ट करते हैं तो आपको अपनी जावास्क्रिप्ट को मैन्युअल रूप से "बिल्ड" करने की कोई आवश्यकता नहीं है। आशा है कि यह आपकी मदद करेगा, मैं वर्तमान में इसका उपयोग कर रहा हूं।
यह थोड़ा सा प्रयास हो सकता है लेकिन आप कोडपलेक्स से मेरे ओपन-सोर्स विकी प्रोजेक्ट को डाउनलोड कर सकते हैं:
http://shuttlewiki.codeplex.com
इसमें कंप्रेसजैवस्क्रिप्ट प्रोजेक्ट (और कंप्रेससीएसएस) शामिल है जो http://yuicompressor.codeplex.com/ प्रोजेक्ट का उपयोग करता है ।
कोड स्व-व्याख्यात्मक होना चाहिए, लेकिन यह फाइलों को थोड़ा सा सिम्प्लेयर के संयोजन और संपीड़ित करता है --- मेरे लिए वैसे भी :)
शटलविक्की परियोजना से पता चलता है कि इसे पोस्ट-बिल्ड ईवेंट में कैसे उपयोग किया जाए।