0

我有两个js文件:

1.js

(function(){
  function setLength(a,len){
  a.length=len;
}
  ...........
})();

2.js:

function View(){
  setLength(this,3);
}

注意,2.js将访问setLength定义在1.js.

所以我希望编译器使用相同的替换来编译这两个文件。

我想要这样的结果:

(function(){
  function x(a,b){
  a.length=b;
}
  ...........
})();

function View(){
  x(this,3);
}

这可能吗?

顺便说一句,我使用 compiler.js 来编译文件:

java -jar compiler.jar --js file.js --js_output_file file.min.js

这是单个文件,我想编译多个文件,每个文件都有自己的输出文件,如下所示:

java -jar compiler.jar --js file.js,file2.js --js_output_file file.min.js,file2.min.js
4

1 回答 1

2

要使用相同的替换编译这两个文件,闭包编译器的两个选项可以提供帮助

 
 --variable_map_input_file VAL : 包含序列化版本的文件
                                           产生的变量重命名图
                                           通过以前的编译
 --variable_map_output_file VAL:t 的序列化版本所在的文件
                                          he 变量重命名图制作 shou
                                          我得救了

这样你就可以

  • 首先编译1.js并生成variable_map。

      java -jar compiler.jar --js 1.js --js_output_file 1.min.js -variable_map_output_file variable_map.txt
    
  • 第二次使用生成的 variable_map 编译 2.js。

      java -jar compiler.jar --js 2.js --js_output_file 2.min.js --variable_map_input_file variable_map.txt      
    

如果 2.js 将引用 1.js 中定义的函数,那么编译器将需要一个extern.js来编译 2.js

并且使用输出包装器(function(){%s})(),在 1.js 中定义的所有函数都不能从 2.js 访问。您可能需要删除包装器,或使用导出

于 2012-10-23T08:32:27.017 回答