Javascript 闭包编译器-保留未使用的函数和don';不要重命名未定义的

Javascript 闭包编译器-保留未使用的函数和don';不要重命名未定义的,javascript,minify,google-closure-compiler,Javascript,Minify,Google Closure Compiler,所以闭包编译器很棒,但是导出函数和定义外部函数似乎需要太多的手工工作有没有办法告诉编译器不应该删除任何函数,也不应该重命名任何未定义的函数? 我有两个主要原因: 如果函数或属性没有在javascript文档的范围内定义,那么它可能是在外部文件中定义的。因此,我不希望这些被重命名 如果函数是在给定范围内定义的,但没有在同一范围内调用,那么它可能是在某些外部代码中调用的。因此,我希望在文件中保留此函数,而不重命名它 通过这种方式,我们可以简单地编译javascript文件,而不用担心外部库和导出从h

所以闭包编译器很棒,但是导出函数和定义外部函数似乎需要太多的手工工作有没有办法告诉编译器不应该删除任何函数,也不应该重命名任何未定义的函数?

我有两个主要原因:

  • 如果函数或属性没有在javascript文档的范围内定义,那么它可能是在外部文件中定义的。因此,我不希望这些被重命名

  • 如果函数是在给定范围内定义的,但没有在同一范围内调用,那么它可能是在某些外部代码中调用的。因此,我希望在文件中保留此函数,而不重命名它


  • 通过这种方式,我们可以简单地编译javascript文件,而不用担心外部库和导出从html页面调用的函数。

    为了避免这种情况,我在一个完整的脚本上运行闭包编译器,该脚本是我的应用程序的所有脚本的串联。所以这是一个两步的过程:

    1-连接所有

    2-运行闭包编译器

    此外,您可能希望(正如我经常做的那样,由于v1.8之前的jquery存在问题)使用compliationLevel=“simple”运行编译器

    连接非常重要,因为一般来说,速度与总大小无关,而主要与请求数有关


    编辑:当然你必须自动化所有这些。如果您使用ant,我可以为您提供ant任务定义。

    为了避免这种情况,我在一个完整的脚本上运行闭包编译器,该脚本是应用程序所有脚本的串联。所以这是一个两步的过程:

    1-连接所有

    2-运行闭包编译器

    此外,您可能希望(正如我经常做的那样,由于v1.8之前的jquery存在问题)使用compliationLevel=“simple”运行编译器

    连接非常重要,因为一般来说,速度与总大小无关,而主要与请求数有关


    编辑:当然你必须自动化所有这些。如果您使用ant,我可以为您提供ant任务定义。

    听起来您应该以简单优化的优化级别运行编译器。不要被这个名字愚弄了,因为它仍然可以完全编译您的代码。主要区别在于简单的_优化不会重命名或消除全局范围内的死代码。这意味着外部和导出的要求不再存在。

    听起来您应该以简单优化的优化级别运行编译器。不要被这个名字愚弄了,因为它仍然可以完全编译您的代码。主要区别在于简单的_优化不会重命名或消除全局范围内的死代码。这意味着外部和导出的要求不再存在。

    这是事实,但我想使用高级优化来重命名我定义的函数。当然,这可以手动完成,但如果闭包编译器允许,那就太好了。如果将代码包装在立即执行的匿名函数中,它将不再在全局范围内。编译器将能够使用简单的优化来重命名本地函数。但是,由于您的代码已包装,您现在必须导出需要向全局范围公开的符号。这是事实,但我想使用高级_优化来重命名我定义的函数。当然,这可以手动完成,但如果闭包编译器允许,那就太好了。如果将代码包装在立即执行的匿名函数中,它将不再在全局范围内。编译器将能够使用简单的优化来重命名本地函数。但是,由于代码已包装,您现在必须导出需要暴露于全局范围的符号。您需要阅读“外部”和“导出函数”。您需要阅读“外部”和“导出函数”。