javascript - 如何防止 Closure Compiler 在全局命名空间中创建特定的变量名?

标签 javascript global-variables minify google-closure-compiler

我熟悉使用字符串文字和导出来防止 Closure 重命名变量的概念,但是如何防止 Closure 使用被其他代码用作全局变量的变量名(我没有写)?

例如,下面是为闭包的成员函数创建的:

  function $() {
  var a;
  if(1 > N) {
        return-1
  }
  a = Math.pow(1 + Q, F);
  return .....
  }

当加载 jQuery 时,Above 会被破坏。

我正在使用命令行编译器,这是我的命令行:

java -jar compiler.jar --compilation_level ADVANCED_OPTIMIZATIONS --formatting=pretty_print --output_wrapper PGS --js common.v2.0.raw.js --module common_min:1 --js page_code.raw.js --module page_code_min:1:common_min

我以为 output_wrapper 选项是用来解决这个问题的,但要么我误解了它的用途,要么我误用了它。

TIA。

最佳答案

答案是externs .

Externs 定义外部代码中的符号。它们有两个主要目的:

  • 为外部符号提供定义和类型信息,以便您的代码可以在没有错误/警告的情况下调用它们。
  • 防止编译器使用在您的代码之外定义的符号名称

在您的情况下,您可以为 jQuery 包含一个现有的 extern。 project contrib folder 中的每个主要版本都有一个.

关于javascript - 如何防止 Closure Compiler 在全局命名空间中创建特定的变量名?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13387931/

相关文章:

c++ - 全局 const 变量定义 - 在 C++ 中通过 extern 访问

global-variables - 我可以从 Jekyll 包含中修改全局 Liquid 变量吗?

php - 将两个 JavaScript 变量传递给 PHP 变量

c# - C# 中的 HTML 缩小

javascript - JavaScript 中的通用 2D 哈希?

javascript - 如何检测浏览器中是否支持箭头键的按键?

Javascript 缩小问题

backbone.js - Requirejs 将项目优化为单个文件

javascript - 减去日期时间值

javascript - 使用 javascript 创建链接