Joh*_*yes 3 javascript google-closure-compiler backbone.js underscore.js
我正在使用Luke Rodgers的Backbone和Underscore externs,但无法解决为什么_.extend在编译输出中被修改.
例如在Backbone 0.9.2中,以下代码(193:195):
if (defaults = getValue(this, 'defaults')) {
attributes = _.extend({}, defaults, attributes);
}
Run Code Online (Sandbox Code Playgroud)
编译为:
if(c=r(this,"defaults"))a=f.extend({},c,a);
Run Code Online (Sandbox Code Playgroud)
我使用了以下编译命令:
java -jar compiler.jar
--externs backbone-0.9.2-externs.js
--externs underscore-1.3.3-externs.js
--compilation_level ADVANCED_OPTIMIZATIONS
--js underscore-1.3.3.js
--js backbone-0.9.2.js
--js_output_file compiled.js
Run Code Online (Sandbox Code Playgroud)
如果我包含另一个JavaScript文件:
--js test.js
Run Code Online (Sandbox Code Playgroud)
包含以下内容:
_.extend({}, {name: 'test'});
Run Code Online (Sandbox Code Playgroud)
它未被修改compiled.js.
有谁知道为什么_.extend要修改backbone.js中的调用?
很高兴你发现我的externs文件很有用.在我的头脑中,我相信您遇到的问题是由于您使用externs文件并编译库.
通常,当库不是编译过程的一部分时,将使用externs文件.有些人可能只是使用(例如)jQuery,Underscore等预编译版本,或者链接到共享的Google库以利用预先缓存的js,但仍然希望Closure Compiler能够理解jQuery和Underscore API,所以他们使用外部.
如果您正在寻找的是Underscore和Backbone库中的显式类型注释,这是一个稍微不同的问题.
| 归档时间: |
|
| 查看次数: |
1780 次 |
| 最近记录: |