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

时间:2013-03-31 07:44:18

标签: 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>

到此:

<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>

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

使用“自动导入”我的意思是:

插件/ HELLO.JS

function hello(name) {
    alert('Hello, ' + name);
}

PLUGINS.JS

@import hello.js
hello('New user');

我希望自己说清楚,如果我搞砸了我的英语,我会道歉。

谢谢!

4 个答案:

答案 0 :(得分:5)

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

java -jar compiler.jar --js 1.js --js 2.js --js 3.js --js_output_file all.js

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

// ==ClosureCompiler==
// @code_url 1.js
// @code_url 2.js
// @code_url 3.js
// ==/ClosureCompiler==

...在“main.js”中编译 - 没有效果。 :(

答案 1 :(得分:2)

使用RequireJs及其优化可能性。看看这里:http://requirejs.org/docs/optimization.html

答案 2 :(得分:1)

Closure-compiler可以完全按照你想要的方式完成,但只能使用Closure-library代码,因为它使用goog.require调用。使用jQuery代码,它可以做的最好的事情是将所有插件编译到一个文件中,但它不会考虑实际使用情况。

不幸的是,我不知道通常会为代码做什么。

注意:预计这个问题不会被接受。这个问题具体问了关于Closure-compiler的问题,我想确保至少在哪里说过编译器无法正常工作。

答案 3 :(得分:0)

您可能需要查看require.js

相关问题