当我在Constant部分注意到带注释的注释时,我正在阅读http://google-styleguide.googlecode.com/svn/trunk/javascriptguide.xml:
/**
* The number of seconds in each of the given units.
* @type {Object.<number>}
* @const
*/
Run Code Online (Sandbox Code Playgroud)
然后指南继续"这允许编译器强制执行常量".
这是v8的事吗?这记录在哪里?
我的头脑很可能有可能,也许,我可以提供类型信息的v8(或其他)!
我是否可以编写自己的Java Main Class来调用compiler.jar中的方法.
我想多次调用编译器,不想编写代码来使用Runtime.exec,也不想在每次调用之前等待Java加载.
GWT 2.5 的发行说明说GWT编译器可以选择使用Closure编译器来提供额外的JavaScript优化,是否有人知道如何启用此优化?
我现在正在Drupal项目上使用Google Closure Compiler.我的Javascript使用Javascript模块模式构建.
由于Drupal的工作方式,我正在单独编译每个JS文件.简单编译模式运行良好,但我想在每个文件上使用高级编译.
我的文件都是变体
var FOO = (function(me, $, Drupal, undefined) {
function init (context, settings) {
do_sutff();
};
Drupal.behaviors['FOO'] = {
attach: init
};
return me;
}(FOO || {}, jQuery, Drupal));
Run Code Online (Sandbox Code Playgroud)
我的问题是Drupal.behaviorsDrupal中的一个特定对象,该attach属性也是一个特定的属性.当Drupal页面呈现时,Drupal.behaviors循环遍历,并attach使用正确的参数调用所有函数.换句话说,我不希望任何用Drupal对象重命名的东西.
当我使用高级编译模式时,我得到了
var c = function(a, d, b) {
b.b.FOO = {a:function() {
do_stuff()
}};
return a
}(c || {}, jQuery, Drupal);
Run Code Online (Sandbox Code Playgroud)
我试图让编译器将整个Drupal对象识别为extern而没有运气,尝试了许多变体.不管我怎么努力,.behaviors并.attach始终获得改名. …
我想在我的ClojureScript构建中使用figwheel.
它lein cljsbuild auto已经合作,但我必须把它:optimisations :whitespace.
否则我在浏览器中收到一条消息:
Uncaught ReferenceError: goog is not defined
Run Code Online (Sandbox Code Playgroud)
然而,figwheel需要:optimisations :none运行.这是我的leiningen文件的一部分:
:cljsbuild {
:builds
[{:id "dev"
:source-paths ["src/cljs"]
:figwheel { :websocket-host "localhost"
;;:on-jsload "example.core/fig-reload"
:autoload true
:heads-up-display true
:load-warninged-code true
;;:url-rewriter "example.core/fig-url-rewrite"
}
:compiler {;; :main
:output-to "resources/public/js/gdb/gdb.js"
:output-dir "resources/public/js/gdb/cljsbuild-dev"
;;:asset-path "js/out"
:optimizations :none
:source-map "resources/public/js/gdb/gdb.js.map"
:pretty-print true}}]}
Run Code Online (Sandbox Code Playgroud)
我缺少什么来获取缺少的依赖项?
我不确定如何清除此警告:
WARNING - actual parameter 1 of
CanvasRenderingContext2D.prototype.drawImage does not match formal parameter
found : Element
required: (HTMLCanvasElement|HTMLImageElement|HTMLVideoElement|null)
ctx.drawImage( poolCanvas, rect.x, rect.y );
Run Code Online (Sandbox Code Playgroud)
这是相关的代码:
var /** @type {HTMLCanvasElement|Element} */ poolCanvas = document.createElement('canvas');
var /** @type {CanvasRenderingContext2D} */ ctx;
...
ctx.drawImage( poolCanvas, rect.x, rect.y );
Run Code Online (Sandbox Code Playgroud)
我尝试了各种类型声明的组合,但无法摆脱此警告。
我在这里做错了什么?
我正在使用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
为了进一步澄清,我的意思是Closure编译器输出JavaScript的哪些部分?
我可以肯定地知道这是一个移动目标,因为游戏的名称是代码优化,所以如果是这种情况,那么对源代码的相关位的引用可能是最有用的.
目前,我正在javascript文件上使用Closure Compiler.现在我还想用更短的名称缩小和重命名CSS类.
有没有办法避免在我的.js文件中重写每个jquery基于CSS字符串的选择器(即.$('#SomeID')或$('.SomeClass'))基于变量的选择器?由于大多数HTML实际上是在运行时生成的,我可以轻松地移动骨架HTML这最初是在.js文件的页面中,并且document.ready函数首先将应用程序所需的框架HTML放在页面上.这样可以避免重写CSS选择器,还是选择器仍然需要重写为属性一个物体?
该文档在这里,但我没有找到它http://code.google.com/p/closure-stylesheets/#Renaming
谢谢你的建议.
这是我的奇怪功能,让我的用户创建自己的JavaScript代码
function evalThisFunction(functionBody){
var func;
eval("func = " + functionBody);
return func;
}
Run Code Online (Sandbox Code Playgroud)
但在使用Closure Compiler(http://closure-compiler.appspot.com/)进行缩小后,我得到了这样的结果:
function a(b){eval("func = "+b);}
Run Code Online (Sandbox Code Playgroud)
你有没有看到我可以修改我奇怪的功能的方法,所以它在缩小后仍然可以工作?
我无法使用Google Closure Compiler编译带有let关键字的简单Javascript代码.
我的Javascript文件example.js:
function display() {
let a = 'hello';
console.log( a, 'world' );
}
display();
Run Code Online (Sandbox Code Playgroud)
我编译的JAVA代码是:
package compiler;
import static com.google.javascript.jscomp.SourceFile.fromCode;
import static com.google.javascript.jscomp.SourceFile.fromInputStream;
import static java.nio.charset.Charset.defaultCharset;
import java.io.IOException;
import java.io.InputStream;
import java.net.URI;
import java.net.URISyntaxException;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import java.util.stream.Collectors;
import com.google.javascript.jscomp.CompilationLevel;
import com.google.javascript.jscomp.Compiler;
import com.google.javascript.jscomp.CompilerOptions;
import com.google.javascript.jscomp.CompilerOptions.LanguageMode;
import com.google.javascript.jscomp.JSError;
import com.google.javascript.jscomp.Result;
import com.google.javascript.jscomp.SourceFile;
public class CompilerMain {
public static void main(String[] args) throws URISyntaxException, …Run Code Online (Sandbox Code Playgroud)