Estou usando jquery em meu aplicativo da web e preciso carregar mais arquivos de script jquery em uma única página.
O Google sugeriu que eu combinasse todos os arquivos de script jquery em um único arquivo.
Como posso fazer isso?
Estou usando jquery em meu aplicativo da web e preciso carregar mais arquivos de script jquery em uma única página.
O Google sugeriu que eu combinasse todos os arquivos de script jquery em um único arquivo.
Como posso fazer isso?
Respostas:
No Linux, você pode usar um script de shell simples https://github.com/dfsq/compressJS.sh para combinar vários arquivos javascript em um único. Ele faz uso do serviço online Closure Compiler para que o script resultante também seja compactado de forma eficaz.
$ ./compressJS.sh some-script.js another-sctipt.js onemore.js
Experimente o compilador google closure:
http://code.google.com/closure/compiler/docs/gettingstarted_ui.html
Basta combinar os arquivos de texto e usar algo como o Compressor YUI .
Os arquivos podem ser facilmente combinados usando o comando cat *.js > main.js
e main.js pode ser executado por meio do compressor YUI usando java -jar yuicompressor-x.y.z.jar -o main.min.js main.js
.
Atualização de agosto de 2014
Agora migrei para o uso do Gulp para concatenação e compactação de javascript como com vários plug-ins e algumas configurações mínimas, você pode fazer coisas como configurar dependências, compilar coffeescript etc, bem como compactar seu JS.
Você pode fazer isso via
include
todos eles e gerar uma <script>
taginclude
ou seja, não faça <script src = "...."> vinculando a vários arquivos, apenas inclua-os em um elemento de script. Idealmente, um cdn junto com o cache adequado deve ser usado.
Eu geralmente tenho em um 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)
Então você executa:
make compile
Espero que ajude.
Eu uso este script de shell no Linux https://github.com/eloone/mergejs .
Comparado com os scripts acima, ele tem as vantagens de ser muito simples de usar, e uma grande vantagem é que você pode listar os arquivos js que deseja mesclar em um arquivo de texto de entrada e não na linha de comando, portanto, sua lista é reutilizável e você não precisa digitá-lo toda vez que quiser mesclar seus arquivos. É muito útil, pois você repetirá essa etapa toda vez que quiser entrar em produção. Você também pode comentar os arquivos que não deseja mesclar na lista. A linha de comando que você provavelmente digitaria é:
$ mergejs js_files_list.txt output.js
E se você também deseja compactar o arquivo resultante mesclado:
$ mergejs -c js_files_list.txt output.js
Isso criará output-min.js
minimizado pelo compilador de encerramento do Google. Ou:
$ mergejs -c js_files_list.txt output.js output.minified.js
Se você quiser um nome específico para o seu arquivo reduzido chamado output.minified.js
Acho muito útil para um site simples.
O agrupamento de scripts é contraproducente, você deve carregá-los em paralelo usando algo como http://yepnopejs.com/ ou http://headjs.com
Copie este script para o bloco de notas e salve como um arquivo .vbs. Arraste e solte arquivos .js neste script.
ps. Isso funcionará apenas no 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
Você pode usar o compilador Closure como orangutancloud sugere. Vale ressaltar que você não precisa realmente compilar / minimizar o JavaScript, deve ser possível simplesmente concatenar os arquivos de texto JavaScript em um único arquivo de texto. Basta juntá-los na ordem em que são normalmente incluídos na página.
Se você estiver executando o PHP, recomendo o Minify porque ele combina e minimiza rapidamente para CSS e JS. Depois de configurá-lo, funcione normalmente e ele cuidará de tudo.
Você pode usar o KjsCompiler: https://github.com/knyga/kjscompiler Cool dependency managment
Você pode usar um script que fiz. Você precisa do JRuby para executá-lo. https://bitbucket.org/ardee_aram/jscombiner (JSCombiner).
O que diferencia isso é que ele observa as alterações do arquivo no javascript e o combina automaticamente com o script de sua escolha. Portanto, não há necessidade de "construir" manualmente o seu javascript cada vez que você o testa. Espero que ajude você, estou usando isso no momento.
Pode ser um pouco trabalhoso, mas você pode baixar meu projeto wiki de código aberto em codeplex:
http://shuttlewiki.codeplex.com
Ele contém um projeto CompressJavascript (e CompressCSS) que usa o projeto http://yuicompressor.codeplex.com/ .
O código deve ser autoexplicativo, mas torna a combinação e compactação dos arquivos um pouco mais simples - para mim, de qualquer maneira :)
O projeto ShuttleWiki mostra como usá-lo no evento pós-compilação.