我现在在 Drupal 项目中使用Google Closure Compiler。我的 Javascript 是使用Javascript Module Pattern构建的。
由于 Drupal 的工作方式,我单独编译每个 JS 文件。简单编译模式效果很好,但我想对每个文件使用高级编译。
我的文件都是关于
var FOO = (function(me, $, Drupal, undefined) {
function init (context, settings) {
do_sutff();
};
Drupal.behaviors['FOO'] = {
attach: init
};
return me;
}(FOO || {}, jQuery, Drupal));
我的问题是这Drupal.behaviors
是 Drupal 中的特定对象,而attach
属性也是特定属性。当 Drupal 页面呈现时,Drupal.behaviors
被循环通过,并且所有attach
函数都使用正确的参数调用。换句话说,我不想用 Drupal 对象重命名任何东西。
当我使用高级编译模式时,我得到
var c = function(a, d, b) {
b.b.FOO = {a:function() {
do_stuff()
}};
return a
}(c || {}, jQuery, Drupal);
我尝试了许多变体,试图让编译器将整个Drupal
对象识别为外部对象,但没有运气。不管我怎么尝试,.behaviors
总是.attach
被重命名。
有没有办法告诉编译器不要把手放在整个对象上?