标签: google-closure

谷歌闭包编译器搬了?它给出了302错误

我正在使用nodejs 0.4.7来发出请求,这是我的代码:

var post_data = JSON.stringify({  
    'compilation_level' : 'ADVANCED_OPTIMIZATIONS',  
    'output_format': 'json',
      'warning_level' : 'QUIET',
      'js_code' : code
});

var post_options = {  
    host: 'closure-compiler.appspot.com',  
    port: '80',  
    path: 'compile',  
    method: 'POST',  
    headers: {  
        'Content-Type': 'application/x-www-form-urlencoded',  
        'Content-Length': post_data.length  
    }  
}; 

var post_req = http.request(post_options, function(res) {  
    res.setEncoding('utf8');  
    res.on('data', function (chunk) {  
        console.log('Response: ' + chunk);  
    });  
});

post_req.write(post_data);  
post_req.end();
Run Code Online (Sandbox Code Playgroud)

我得到的回应是

Response: <HTML><HEAD><meta http-equiv="content-type" content="text/html;charset=utf-8">
<TITLE>302 Moved</TITLE></HEAD><BODY>
<H1>302 Moved</H1>
The document has moved
<A HREF="http://www.google.com/">here</A>.
</BODY></HTML>
Run Code Online (Sandbox Code Playgroud)

为什么会这样?我究竟做错了什么 ?在教程中它说我很乐意向http://closure-compiler.appspot.com/compile发出POST请求...

google-closure google-closure-compiler node.js

2
推荐指数
1
解决办法
469
查看次数

使用Google Closure Library阻止事件传播

使用Google Closure库:

如何处理单击element例如a div但阻止event handler在用户单击该元素的子元素时触发.

例如,在下面的代码中我想触发event handler用户单击时,div1但是当他/她单击"span1"时,我希望event handler在不触发处理程序的情况下调用另一个div1.

<div style="width: 400px" id="div1">
 <span id="span1">click me to reload</span>
 click here to Toggle accordion
</div>
Run Code Online (Sandbox Code Playgroud)

UPDATE

JS代码:

/**** accordion ***/
var panels = goog.dom.getElementsByClass('newsColumnHeader', goog.dom.getElement('accordionContainer'));

var anims  = {};
var open   = null;

goog.array.forEach(panels, function(pane){
  var animation = new goog.ui.AnimatedZippy(pane, goog.dom.getNextElementSibling(pane));
  goog.events.listen(animation, goog.ui.Zippy.Events.TOGGLE, zippyToggle);
  anims[goog.getUid(animation)] = animation;
});

function zippyToggle(event) {      
  var uid = goog.getUid(event.target);                  
  // simple …
Run Code Online (Sandbox Code Playgroud)

javascript events javascript-events google-closure google-closure-library

2
推荐指数
1
解决办法
2600
查看次数

使用goog.events.listen传递参数

我正在使用Google Closure的事件处理方式:

goog.events.listen(this.contentElement, goog.events.EventType.CLICK, this.openEditor);
Run Code Online (Sandbox Code Playgroud)

但是我需要将一个字符串作为参数传递给函数 this.openeditor

我查看了文档,但似乎无法解决如何做到这一点,任何人有任何想法?

谢谢!

javascript events click google-closure google-closure-library

2
推荐指数
1
解决办法
1675
查看次数

Google Closure中的变量

http://closure-compiler.appspot.com/home

(function(){

var somevar = 'somevar';

this.each(function(){
var minify_var = {
  method1: somevar + '1', 
  method2: somevar + '2',
  method3: somevar + '3',
  method4: somevar + '4',
  method5: somevar + '5'
};

alert(minify_var);
});

})();
Run Code Online (Sandbox Code Playgroud)

像这样的代码缩小为:

(function(){this.each(function(){alert({method1:"somevar1",method2:"somevar2",method3:"somevar3",method4:"somevar4",method5:"somevar5"})})})();
Run Code Online (Sandbox Code Playgroud)

这个长度肯定比(+11个符号)更大:

(function(){var a="somevar";this.each(function(){alert({method1:a+"1",method2:a+"2",method3:a+"3",method4:a+"4",method5:a+"5"})})})();
Run Code Online (Sandbox Code Playgroud)

问题是,我们有两个变量,但有一个变量.

实际上它对于一个小脚本来说并不坏,但是对于一个大脚本可能会受到伤害.

添加第一个变量以使缩小的代码更小,但谷歌忽略它.

它也忽略了大多数像这样的其他大小优化技巧.

可以修复吗?

这个问题是关于Google Closure,而不是JavaScript模式.

javascript jquery minify google-closure

2
推荐指数
1
解决办法
309
查看次数

如何包含谷歌关闭的依赖项

我运行非常基本的文件:

goog.provide('test');

goog.require('goog.net.XhrIo');
goog.require('goog.json.Serializer');
goog.require('goog.dom');
goog.require('goog.ui.HoverCard');
goog.require('goog.positioning');
goog.require('goog.dom.dataset');
Run Code Online (Sandbox Code Playgroud)

但我明白了

test.js:3: ERROR - required "goog.net.XhrIo" namespace never provided
goog.require('goog.net.XhrIo');
Run Code Online (Sandbox Code Playgroud)

在编译时

java -d32 -client -jar compiler/compiler.jar --js compiler/closure-library/closure/goog/base.js --js test.js --warning_level=VERBOSE
Run Code Online (Sandbox Code Playgroud)

如何找到goog库?

编辑:

我也尝试使用在线版:http://closure-compiler.appspot.com/home并仍然获得:

    JSC_MISSING_PROVIDE_ERROR: required "goog.net.XhrIo" namespace never provided at line 3 character 0 in test.js
goog.require('goog.net.XhrIo');
^
JSC_MISSING_PROVIDE_ERROR: required "goog.json.Serializer" namespace never provided at line 4 character 0 in test.js
goog.require('goog.json.Serializer');
^
JSC_MISSING_PROVIDE_ERROR: required "goog.dom" namespace never provided at line 5 character 0 in test.js
goog.require('goog.dom'); …
Run Code Online (Sandbox Code Playgroud)

google-closure google-closure-library google-closure-compiler

2
推荐指数
1
解决办法
2056
查看次数

使用Google Closure Compiler作为库而不是脚本

我是否可以编写自己的Java Main Class来调用compiler.jar中的方法.

我想多次调用编译器,不想编写代码来使用Runtime.exec,也不想在每次调用之前等待Java加载.

google-closure google-closure-compiler

1
推荐指数
1
解决办法
1168
查看次数

在Google Closure中如何从DOM元素中获取属性?

我可以使用setProperties设置元素,但似乎没有getProperties来获取属性值.有人可以帮忙吗?

google-closure

1
推荐指数
1
解决办法
3945
查看次数

在 Clojurescript 中,如何更改网页的标题?

我想使用 Clojurescript 更改浏览器中页面的标题。我正在使用 Google Closure 进行 dom 操作,我对 Closure 中的函数持开放态度来执行此操作。

在纯 javascript 中,你可以这样做:

window.document.title = "pants";
Run Code Online (Sandbox Code Playgroud)

但我无法弄清楚它是如何转化为 Clojurescript 的。

google-closure clojurescript

1
推荐指数
1
解决办法
569
查看次数

使用gulp和google closure将js文件编译成单个文件而不是单个文件

我正在使用google-closure-compilergulp来缩小我的angularjs文件.

我在app/js文件夹中有3个js文件.他们是controller.js, app.js, services.js.

这是我的gulpfile代码:

var closureCompiler = require('google-closure-compiler').gulp();

gulp.task('js-closure', function () {
    return gulp.src('app/js/*.js', {base: './'})
        .pipe(closureCompiler({
            compilation_level: 'SIMPLE_OPTIMIZATIONS',
            warning_level: 'QUIET',
            language_in: 'ECMASCRIPT6_STRICT',
            language_out: 'ECMASCRIPT5_STRICT',
            output_wrapper: '(function(){\n%output%\n}).call(this)',
            js_output_file: 'output.min.js'
        }))
        .pipe(gulp.dest('./dist/js'));
});
Run Code Online (Sandbox Code Playgroud)

代码的作用是将3个js文件编译成单个文件 output.min.js

我想要的是将3个js文件编译成3个独立的js文件 controller.min.js, app.min.js, services.min.js

javascript google-closure google-closure-compiler gulp

1
推荐指数
1
解决办法
969
查看次数