Webアプリケーションでjqueryを使用していて、さらに多くのjqueryスクリプトファイルを単一のページにロードする必要があります。
Googleは、すべてのjqueryスクリプトファイルを1つのファイルに結合することを提案しました。
これどうやってするの?
回答:
Linuxでは、単純なシェルスクリプトhttps://github.com/dfsq/compressJS.shを使用して、複数のJavaScriptファイルを1つのファイルに結合できます。これは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年8月の更新
これで、JavaScriptの連結と圧縮にGulpを使用するように移行しました。さまざまなプラグインといくつかの最小限の構成と同様に、依存関係のセットアップ、coffeescriptのコンパイルなど、JSの圧縮などを実行できます。
あなたはこれを行うことができます
include
それらすべての配列を作成し、<script>
タグに出力するだけですinclude
つまり、複数のファイルにリンクする<script src = "....">を行わないで、1つのスクリプト要素にそれらを含めます。理想的には、適切なキャッシングとともに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ファイルをドラッグ&ドロップします。
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
orangutancloudが示唆するように、Closure-compilerを使用できます。JavaScriptを実際にコンパイル/縮小する必要がないことを指摘する価値があります。JavaScriptテキストファイルを単一のテキストファイルに単純に連結できるはずです。通常ページに含まれている順序で参加してください。
KjsCompilerを使用できます:https : //github.com/knyga/kjscompiler クールな依存関係管理
私が作成したスクリプトを使用できます。ただし、これを実行するにはJRubyが必要です。 https://bitbucket.org/ardee_aram/jscombiner(JSCombiner)。
これを際立たせるのは、JavaScriptでのファイルの変更を監視し、選択したスクリプトに自動的に結合することです。したがって、Javascriptをテストするたびに手動で「ビルド」する必要はありません。お役に立てば幸いです。現在使用しています。
これは少し手間がかかるかもしれませんが、私のオープンソースWikiプロジェクトをcodeplexからダウンロードできます。
http://shuttlewiki.codeplex.com
これには、http://yuicompressor.codeplex.com/を使用するCompressJavascriptプロジェクト(およびCompressCSS)が含まれていますプロジェクト。
コードは自明ですが、ファイルの結合と圧縮が少し単純になります---私にとってはとにかく:)
ShuttleWikiプロジェクトは、ビルド後のイベントで使用する方法を示しています。