我有两个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);
}
这可能吗?
BTW,我使用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
答案 0 :(得分:2)
要使用相同的替换编译这两个文件,闭包编译器的两个选项可以帮助
--variable_map_input_file VAL : File containing the serialized version of the variable renaming map produced by a previous compilation --variable_map_output_file VAL : File where the serialized version of t he variable renaming map produced shou ld be saved
所以你可以
首先编译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})()
,无法从2.js访问1.js中定义的所有函数。您可能需要删除包装器,或使用export