我在Web应用程序中使用jquery,我需要将更多jquery脚本文件加载到单个页面中。
Google建议我将所有的jquery脚本文件合并为一个文件。
我怎样才能做到这一点?
Answers:
在Linux上,您可以使用简单的Shell脚本https://github.com/dfsq/compressJS.sh将多个javascript文件合并为一个。它利用了Closure Compiler在线服务,因此生成的脚本也得到了有效压缩。
$ ./compressJS.sh some-script.js another-sctipt.js onemore.js
尝试使用Google Closure编译器:
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月更新
我现在已经迁移到使用Gulp进行javascript串联和压缩,就像使用各种插件和一些最小配置一样,您可以执行诸如设置依赖项,编译coffeescript等以及压缩JS的操作。
您可以通过
include
所有数组,然后将其输出到<script>
标记中include
即不要将<script src =“ ....”>链接到多个文件,只需将它们包含在一个script元素中即可。理想情况下,应使用带有适当缓存的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上使用此shell脚本。
与上述脚本相比,它具有使用非常简单的优点,并且最大的优点是您可以在输入文本文件中而不是在命令行中列出要合并的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
您可以使用KjsCompiler:https : //github.com/knyga/kjscompiler 酷依赖管理
您可以使用我制作的脚本。但是,您需要JRuby来运行它。 https://bitbucket.org/ardee_aram/jscombiner(JSCombiner)。
区别在于它可以监视javascript中的文件更改,并将其自动组合到您选择的脚本中。因此,无需在每次测试时手动“构建” JavaScript。希望它能对您有所帮助,我目前正在使用此功能。
这可能需要一些努力,但是您可以从Codeplex下载我的开源Wiki项目:
http://shuttlewiki.codeplex.com
它包含一个使用http://yuicompressor.codeplex.com/项目的CompressJavascript项目(和CompressCSS)。
该代码应该是不言自明的,但是无论如何,对于我来说,合并和压缩文件都非常简单--- :)
ShuttleWiki项目显示了如何在构建后事件中使用它。