组织和合并JS文件,Google Closure?

use*_*223 5 javascript google-closure-compiler

我正在尝试合并我的所有插件,所以我可以改变这个:

<html>
    <head>
    </head>
    <body>    
        <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
        <script src="js/plugin1.js"></script>
        <script src="js/plugin2.js"></script>
        <script src="js/plugin3.js"></script>
        <script src="js/plugin4.js"></script>
    </body>
</html>
Run Code Online (Sandbox Code Playgroud)

对此:

<html>
    <head>
    </head>
    <body>    
        <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
        <script src="js/plugins.min.js"></script>
    </body>
</html>
Run Code Online (Sandbox Code Playgroud)

主要的想法是有一个工具"自动导入"我的plugins.js文件所有我的网站所需的插件,并在编译时缩小它们.我一直在测试Google Closure(可下载的Java版本的编译器),我想到了如何缩小文件,但我无法导入外部文件.所以我想问你是否可以告诉我Google Closure是否是我正在寻找的工具,或者我是否应该使用其他工具或方法.

"自动导入"我的意思是:

PLUGINS/HELLO.JS

function hello(name) {
    alert('Hello, ' + name);
}
Run Code Online (Sandbox Code Playgroud)

PLUGINS.JS

@import hello.js
hello('New user');
Run Code Online (Sandbox Code Playgroud)

我希望自己清楚明白,如果我搞砸了英语,我会道歉.

谢谢!!

小智 5

我问自己同样的问题,并没有找到可接受的答案.加入多个文件的唯一方法是在命令行中放置多个"--js"参数:

java -jar compiler.jar --js 1.js --js 2.js --js 3.js --js_output_file all.js
Run Code Online (Sandbox Code Playgroud)

我尝试了这样的行(在Closure Compiler服务UI中使用):

// ==ClosureCompiler==
// @code_url 1.js
// @code_url 2.js
// @code_url 3.js
// ==/ClosureCompiler==
Run Code Online (Sandbox Code Playgroud)

...在"main.js"中编译它 - 没有效果.:(


小智 0

您可能想看看require.js

  • 当然,require.js 解决了自动化依赖管理问题。但这可能并不总是最佳策略,因为它会保留大量请求,因为每个脚本都需要加载一个请求(AFAIK,我不确定这一点)。是否有可能自动将所有 JavaScript 合并为一个,以最大程度地减少请求数量? (6认同)