标签: google-closure-compiler

是否有可能使Google Closure编译器*不*内联某些函数?

关闭编译器内联函数,但代码尺寸更小,如果该功能没有内联(我只关心代码的大小-这是JS1k).我可以告诉编译器我不希望内联函数吗?

编辑:只是为了解释一下,这是我的功能:

function lineTo(x,y) {
  a.lineTo(x,y);
}
Run Code Online (Sandbox Code Playgroud)

其中,a在画布背景.因为a.lineTo代码中有很多s,所以使用这个函数是值得的.像这样,我的代码是1019个字节(并且所有lineTos都被替换a.lineTo).如果我将功能更改为:

function lineTo(x,y) {
  a.lineTo(x,y);
  console.log();
}
Run Code Online (Sandbox Code Playgroud)

新行以某种方式强制编译器不内联此函数,这给了我993字节.所以,如果我能摆脱,console.log();我将另外保存14个字节.

javascript google-closure-compiler js1k

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

如何防止Closure Compiler重命名为"true","false"和"null"

Google Closure Compiler重命名代码中的所有"true","false"和"null"出现;

var s = true, x = null, V = false;
Run Code Online (Sandbox Code Playgroud)

而是使用这些短线; 在诸如此类的条件下;

if (someVariable == s)
Run Code Online (Sandbox Code Playgroud)

现在; Google Analytics代码定义了自己的"s"变量; 覆盖值"true"; 正如你所看到的,这会导致很多问题.

我不想改变GA代码; 我只是希望Closure Compiler退出重命名true等等.Externs不起作用.

你知道有什么方法可以做到这一点吗?

javascript google-closure-compiler

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

忽略Google Closure中一个文件的编译器警告

我在一个相当大的Closure项目中使用外部库(Phonegap).不幸的是,Phonegap生成了一个吨编译器警告(所有"危险使用此").足够它使搜索编译器输出警告我自己的代码非常烦人.

有没有办法让一个文件中的警告静音?

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

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

Closure Compiler可以构建CommonJS模块

我想使用Google Closure Compiler构建一组CommonJS模块.这可以开箱即用吗?或者,是否可以对CommonJS模块进行一些简单的转换,以允许Closure Compiler使用它们?

javascript build-process google-closure-compiler commonjs

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

Google Closure Annotating不会告诉我我错了

我正在尝试使用Google Closure,特别是用于强制类型安全的注释内容.为了测试我做错了什么,虽然编译器不会告诉我它是......

这是代码:

// ==ClosureCompiler==
// @output_file_name default.js
// @compilation_level SIMPLE_OPTIMIZATIONS
// ==/ClosureCompiler==

/**
 * A card.
 * @constructor
 * @param {String} cardName The exact name of the card
 * @param {Kinetic.Layer} layer The layer for the card
 */
function CardObject(cardName, layer)
{
    /** @type {Number} */
    var number = cardName;
}
Run Code Online (Sandbox Code Playgroud)

所以,我有一个变量number,我说是一个Number,我尝试为它分配一个字符串.这不应该是可能的,对吗?虽然编译器不会告诉我......

为什么不告诉我这是错的?

javascript compiler-warnings google-closure google-closure-compiler

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

如何使角装饰器缩小友好?

如何才能制作出我对缩小友好的代码呢?

MyModule.config(['$provide',function($provide) {
    $provide.decorator("$exceptionHandler", function($delegate,$injector) {
Run Code Online (Sandbox Code Playgroud)

我好像不能这样做:

  $provide.decorator("$exceptionHandler" , "$delegate","$injector", function($delegate,$injector) {
Run Code Online (Sandbox Code Playgroud)

google-closure-compiler angularjs

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

Polymer和Google Closure编译器

Polymer会支持Google Closure编译器吗?Polymer从一开始就不支持Google Closure Compiler的原因是什么?

google-closure-compiler clojurescript polymer

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

可重复使用的ClojureScript库

所以,我接受了我的大型Clojure项目并将其分成两部分.

我编写了核心部分并制作了Uberjar.

然后输入:

lein deploy clojars
Run Code Online (Sandbox Code Playgroud)

将该jar公开,然后将其作为依赖项添加到我的应用程序的project.clj文件中.

这段代码是用cljx编写的,所以它可以编译成javascript.

我需要将两个cljx代码库分成两个独立的javascript库,而没有让整个ClojureScript虚拟机重复两次,这有什么相同的步骤?

更新:只是为了澄清一些事情.

1)我知道我可以转移到.cljc而不是.cljx.我唯一担心的是这看起来很新,我不知道我的代码的现有用户是否可能拥有它.但我很快就会采取行动.关于cljc的答案也是受欢迎的.

2)我已经成功地将我的代码编译为单个monolithic main.js文件.我正在寻找的是如何编译可以包含在其他cljs项目中的单独的clj库.每当我目前在cljs中编译一些内容时,我会得到一个包含整个clojurescript VM的main.js文件.

3)我回到这个问题的动机之一就是我想开始使用Figwheel.所以我希望能够在clojurescript中创建库,我可以将其放入我正在通过Figwheel开发的新clojurescript项目中.所以我想我会在这个新项目的project.clj文件中引用它们,并将它们作为已编译的.js文件包含在网页中.我错了吗?

clojure package google-closure-compiler clojurescript

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

将JS嵌入到.html文件中

我有一个嵌入了javascript代码的HTML文件,这是一个简单的例子:

<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <script type=”text/javascript”>
    // javascript code 
    </script>
</head>
<body>
<!-- some html -->
</body>
</html>
Run Code Online (Sandbox Code Playgroud)

获取相同文件的最简单方法是将所有JS片段缩小到其中?

HTML文件可以是任意复杂的并且具有多个脚本片段.由于多种原因,我不需要在生成的html中将js拆分为单独的.js文件.

我们使用闭包编译器并在项目中使用grunt.

html javascript minify google-closure-compiler

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

我应该多次运行Google Closure Compiler以更多地优化我的代码吗?

我尝试在高级优化模式下将以下JavaScript代码放入Closure Compiler Web界面:

function f(some_object) {
  if (some_object.foo == 1) {
    console.log(some_object.bar);
  } else {
    alert(some_object.bar);
  }
}

var my_object = {foo: 1, bar: 2};
f(my_object);
Run Code Online (Sandbox Code Playgroud)

它生成了以下编译代码:

var a = {b:1, a:2};
1 == a.b ? console.log(a.a) : alert(a.a);
Run Code Online (Sandbox Code Playgroud)

但是,当我将编译后的代码放回Closure Compiler时,它设法生成了更短的版本:

console.log(2);
Run Code Online (Sandbox Code Playgroud)

这是否意味着我应该在我的代码上多次运行Closure Compiler以确保我能够获得最佳的优化?这样做有什么潜在的问题吗?

javascript google-closure-compiler

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