Я використовую jquery у своєму веб-додатку, і мені потрібно завантажити більше файлів сценарію jquery на одну сторінку.
Google запропонував об’єднати всі файли сценарію jquery в один файл.
Як я можу це зробити?
Я використовую jquery у своєму веб-додатку, і мені потрібно завантажити більше файлів сценарію jquery на одну сторінку.
Google запропонував об’єднати всі файли сценарію jquery в один файл.
Як я можу це зробити?
Відповіді:
У Linux ви можете використовувати простий сценарій оболонки https://github.com/dfsq/compressJS.sh, щоб об'єднати кілька файлів javascript в один. Він використовує онлайн-службу Closure Compiler, тому отриманий скрипт також ефективно стискається.
$ ./compressJS.sh some-script.js another-sctipt.js onemore.js
Спробуйте компілятор закриття google:
http://code.google.com/closure/compiler/docs/gettingstarted_ui.html
Просто об’єднайте текстові файли, а потім використовуйте щось на зразок YUI Compressor .
Файли можна легко комбінувати за допомогою команди, cat *.js > main.js
а main.js потім можна запускати через компресор YUI за допомогою java -jar yuicompressor-x.y.z.jar -o main.min.js main.js
.
Оновлення серпня 2014 року
Зараз я перейшов на використання Gulp для конкатенації та стиснення javascript, оскільки з різними плагінами та деякою мінімальною конфігурацією ви можете робити такі налаштування, як налаштування залежностей, компіляцію coffeescript тощо, а також стискання вашого JS.
Ви можете зробити це через
include
їх усіх і виведіть у <script>
тегinclude
тобто не робити <script src = "...."> посилання на декілька файлів, просто включити їх в один елемент сценарію. В ідеалі слід використовувати cdn разом із належним кешуванням.
Я зазвичай маю це на 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
Сподіваюся, це допоможе.
Я використовую цей сценарій оболонки на Linux https://github.com/eloone/mergejs .
У порівнянні з вищезазначеними сценаріями, він має переваги дуже простої у використанні, і великим плюсом є те, що ви можете перерахувати файли js, які ви хочете об'єднати, у вхідний текстовий файл, а не в командний рядок, тому ваш список можна використовувати багаторазово і вам не потрібно вводити його кожного разу, коли ви хочете об’єднати свої файли. Це дуже зручно, оскільки ви будете повторювати цей крок кожного разу, коли захочете перейти на виробництво. Ви також можете коментувати файли, які не хочете об’єднувати у списку. Командний рядок, який ви, швидше за все, введете:
$ 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 файли .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. Варто зазначити, що вам насправді не потрібно компілювати / зменшувати JavaScript, це повинно мати можливість просто об’єднати текстові файли JavaScript в один текстовий файл. Просто приєднайтеся до них у тому порядку, в якому вони зазвичай містяться на сторінці.
Якщо ви використовуєте PHP, я рекомендую Minify, оскільки він поєднує та мініфікує на льоту як для CSS, так і для JS. Після того, як ви його налаштували, просто працюйте як зазвичай, і він подбає про все.
Ви можете використовувати KjsCompiler: https://github.com/knyga/kjscompiler Прохолодне управління залежностями
Ви можете використовувати сценарій, який я створив. Для запуску цього вам потрібен JRuby. https://bitbucket.org/ardee_aram/jscombiner (JSCombiner).
Це відрізняє те, що він спостерігає за змінами файлів у javascript і автоматично поєднує їх із сценарієм на ваш вибір. Тому немає необхідності вручну «будувати» свій javascript кожного разу, коли ви його тестуєте. Сподіваюся, це допоможе вам, я зараз використовую це.
Це може бути трохи зусиль, але ви можете завантажити мій проект wiki з відкритим кодом з codeplex:
http://shuttlewiki.codeplex.com
Він містить проект CompressJavascript (і CompressCSS), який використовує проект http://yuicompressor.codeplex.com/ .
Код повинен бути зрозумілим, але комбінування та стиснення файлів робить дещо простішим - все одно для мене :)
Проект ShuttleWiki показує, як використовувати його в події після збірки.