java - 使用 rhino 或闭包编译器从 java 更改 javascript 变量和函数名称

标签 java javascript rhino google-closure-compiler

我希望能够根据特定条件更改 javascript 文件中的变量和函数名称,然后输出修改后的 javascript。这类似于 javascript 缩小器所做的。 这是一个例子: 我有这个 javascript 代码

var something=5;
something++;
function doSomething(n){
   alert(n);
}
doSomething(something):

现在我想用 somethingElsedoSomethingElse 替换 somethingdoSomething 并返回以下 javascript 代码:

var somethingElse=5;
somethingElse++;
function doSomethingElse(n){
   alert(n);
}
doSomethingElse(somethingElse):

我认为这可以在 rhino 或 google closure compile(基于 rhino)中完成,但不知道如何。我也乐于接受其他建议。

谢谢

最佳答案

Rhino 只是一个解析器,所以除非在最简单的情况下,否则它不会真正提供帮助。

Closure-compiler 技术上可以做到这一点,但官方不支持定向重命名。

以下技术用于增量编译。使用映射文件,编译器会尝试(但不保证)遵守先前对变量和属性的重命名。您可能使用以下步骤完成这项工作,但不能保证它在所有情况下都有效:

第一步

使用以下语法创建一个变量映射文件(每行一个条目)

varname:renamedname

第二步

使用变量重命名作为编译命令的一部分

java -jar compiler.jar --js inputfile.js \
  --variable_map_input_file varrenaming.txt

请注意,所有正常的重命名规则仍然适用。如果一个变量之前没有重命名,这不会导致它现在被重命名。

关于java - 使用 rhino 或闭包编译器从 java 更改 javascript 变量和函数名称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19491592/

相关文章:

java - 使用 Rhino 从评估的 JS 中获取函数名称及其参数

java - 在Struts 1中,如何指定输入页面URL而不是JSP的路径

java - 从类路径加载配置文件

java - 小版本更新后 Spring Security 异常 : "Please ensure Spring Security & Spring MVC are configured in a shared ApplicationContext"

javascript - 传递文本以在单击时起作用

javascript - css动画穿过屏幕并返回

javascript - 如何在 Rhino 脚本中实例化 java 泛型类?

java - Java 中的时间码

javascript - 为什么我无法在此 JavaScript 代码中访问全局变量?

javascript - 在哪里可以找到 XMLHttpRequest 实现?