it-swarm.com.ru

Объедините несколько файлов JavaScript в один файл JS

Я использую jquery в своем веб-приложении, и мне нужно загрузить больше файлов сценариев jquery на одной странице.

Google предложил объединить все файлы сценариев jquery в один файл.

Как я могу это сделать?

84
Chandrasekhar

В Linux вы можете использовать простой скрипт Shell https://github.com/dfsq/compressJS.sh , чтобы объединить несколько файлов javascript в один. Он использует онлайн-сервис Closure Compiler, поэтому полученный скрипт также эффективно сжимается.

$ ./compressJS.sh some-script.js another-sctipt.js onemore.js
52
dfsq

Просто объедините текстовые файлы и используйте что-то вроде 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.

18
Prydie

Попробуйте компилятор Google Closure:

http://code.google.com/closure/compiler/docs/gettingstarted_ui.html

15
Tom Gruner

Вы можете сделать это через

  • a. Вручную: скопировать все файлы Javascript в один, запустить на нем компрессор ( необязательно, но рекомендуется ) и загрузить на сервер и ссылку на этот файл.
  • b. Использовать PHP: Просто создайте массив всех файлов JS и include их все и выведите в тег <script>
11
Gary Green

Я использую этот сценарий Shell в 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

Я считаю, что это действительно полезно для простого сайта.

8
eloone

У меня обычно это есть на 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

Я надеюсь, что это помогает.

8
user339827

Группировка скриптов контрпродуктивна, вы должны загружать их параллельно, используя что-то вроде http://yepnopejs.com/ или http://headjs.com

7
Capsule

Скопируйте этот скрипт в блокнот и сохраните как файл .vbs. Перетащите .js файлы на этот скрипт.

пс. Это будет работать только на окнах.

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
6
SasHok.Tk

Вы можете использовать Closure-компилятор, как предлагает orangutancloud. Стоит отметить, что на самом деле вам не нужно нужно компилировать/минимизировать JavaScript, должна быть возможность просто объединить текстовые файлы JavaScript в один текстовый файл. Просто присоединяйтесь к ним в том порядке, в котором они обычно находятся на странице.

5
Jim Blackler

Вы можете использовать KjsCompiler: https://github.com/knyga/kjscompiler Классное управление зависимостями

4
Oleksandr Knyga

Если вы используете PHP, я рекомендую Minify , потому что он объединяет и минимизирует как для CSS, так и для JS. После того, как вы настроили его, просто работайте как обычно, и он позаботится обо всем.

4
technoTarek

Вы можете использовать скрипт, который я сделал. Вам нужно JRuby, чтобы запустить это все же. https://bitbucket.org/ardee_aram/jscombiner (JSCombiner).

Это отличает то, что он отслеживает изменения файлов в javascript и автоматически объединяет их с выбранным вами сценарием. Поэтому нет необходимости вручную "строить" свой javascript каждый раз, когда вы его тестируете. Надеюсь, это поможет вам, я в настоящее время использую это.

2
Ardee Aram

Это может быть немного усилий, но вы можете скачать мой вики-проект с открытым исходным кодом из codeplex:

http://shuttlewiki.codeplex.com

Он содержит проект CompressJavascript (и CompressCSS), который использует проект http://yuicompressor.codeplex.com/ .

Код должен быть понятен, но он делает объединение и сжатие файлов немного симнплерным --- для меня в любом случае :)

Проект ShuttleWiki показывает, как использовать его в событии после сборки.

0
Eben Roux