Объединить несколько файлов JavaScript в один файл JS [закрыто]
Я использую jquery в своем веб-приложении, и мне нужно загрузить больше файлов сценариев jquery на одну страницу.
Google предложил мне объединить все файлы сценариев jquery в один файл.
Как я могу это сделать?
13 ответов:
в linux вы можете использовать простой сценарий оболочки https://github.com/dfsq/compressJS.sh для объединения нескольких файлов javascript в один. Он использует онлайн-службу компилятора закрытия, поэтому полученный скрипт также эффективно сжимается.
$ ./compressJS.sh some-script.js another-sctipt.js onemore.js
просто объединить текстовые файлы, а затем использовать что-то вроде Юи компрессора.
файлы могут быть легко объединены с помощью команды
cat *.js > main.js
и главное.затем js можно запустить через компрессор YUI с помощьюjava -jar yuicompressor-x.y.z.jar -o main.min.js main.js
.Обновление Августа 2014 Года
теперь я перешел на использование залпом для конкатенации и сжатия javascript, как с различными плагинами и некоторой минимальной конфигурацией, вы можете делать такие вещи, как настройка зависимости, компиляция coffeescript и т. д., а также сжатие вашего JS.
попробуйте компилятор закрытия google:
http://code.google.com/closure/compiler/docs/gettingstarted_ui.html
Вы можете сделать это с помощью
- а. Вручную: скопируйте все файлы Javascript в один, запустите на нем компрессор (необязательно, но рекомендуется) и загрузить на сервер и ссылку на этот файл.
- b. используйте PHP: просто создайте массив всех файлов JS и
include
их всех и выхода в<script>
tag
у меня обычно есть это на
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 файлы в этом скрипте.
ps. Это будет работать только на Windows.
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
вы можете использовать Closure-компилятор, как предлагает 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/ проект.
код должен быть понятным, но он делает объединение и сжатие файлов немного simnpler - - - для меня в любом случае:)
проект Шаттлвики показывает, как использовать его в событии после сборки.