Closure编译器导出所有原型&静态方法

时间:2011-02-14 09:44:15

标签: javascript compression google-closure-compiler

闭包编译器是否有一种简单的方法可以导出一个类及其所有的原型&静态方法并将名称保留为公共API?默认情况下,高级选项会重命名所有变量,但您可以将内容导出到全局范围,例如:

window['MyClass'] = MyClass;

但是,这只会将MyClass导出到全局范围,所有原型和静态方法都会重命名。人们会认为你可以遍历原型并导出它们,不是:

for (var i in MyClass.prototype) {
    window['MyClass'].prototype[i] = MyClass.prototype[i];
}

这不起作用。我知道的唯一方法是手动添加它们:

window['MyClass'].prototype['myFunction'] = MyClass.prototype.myFunction;

我想公开大约50个原型,所以这个方法不是首选。有谁知道如何以方便的方式导出整个班级?

2 个答案:

答案 0 :(得分:1)

查看@export注释,该注释在JavaScript中有记​​录 风格指南:http://google-styleguide.googlecode.com/svn/trunk/javascriptguide.xml?showone=Comments#Comments

答案 1 :(得分:1)

你所描述的实际上是什么外星人: Prevent Google Closure Compiler from renaming settings objects

您可以在此处查看大型外部文件的示例: http://code.google.com/p/closure-compiler/source/browse/trunk/contrib/externs/jquery-1.6.js

您可以省略所有评论,只需使用以下语句:

jQuery.prototype.add = function(arg1, context) {};

确保不重命名add方法。你需要在externs文件的注释中包含@externs,或者将它作为--externs传递给Closure Compiler,以使事情正常工作。