【问题标题】:changing javascript variable and function name from java using rhino or closure compiler使用 rhino 或闭包编译器从 java 更改 javascript 变量和函数名称
【发布时间】:2013-10-21 10:07:44
【问题描述】:

我希望能够根据某些条件更改 javascript 文件中的变量和函数名称,然后输出修改后的 javascript。这类似于 javascript minifier 所做的。 这是一个例子: 我有这个 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 闭包编译(基于 rhino)中完成,但不知道如何。我也愿意接受其他建议。

谢谢

【问题讨论】:

  • 您的实际somethingsomethingElse 的子字符串吗?
  • @Qantas94Heavy 不,我只是举了一个简单的例子。您可以根据需要将something 替换为blablabla
  • 你真的在尝试做某种缩小吗?您能否提供一个更具体、更具体的示例来说明您要完成的工作,以便我们更好地了解您的意图和目标?另外,您能否说明您实际尝试过的内容,以便符合“好问题”指南?
  • @nothingisnecessary 是的,我正在尝试做一些类似于缩小的事情,但我只想根据它们的值来更改某些变量(和函数)的名称。我正在尝试做的是某种 javascript 代码生成器,用户在其中设置一些输入代码,我生成一个类似的代码但具有不同的变量名称(基于某些条件)

标签: java javascript rhino google-closure-compiler


【解决方案1】:

Rhino 只是一个解析器,所以除了最简单的情况外,它并没有什么帮助。

闭包编译器在技术上可以做到这一点,但不正式支持定向重命名。

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

步骤 1

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

varname:renamedname

第二步

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

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-11-13
    • 2023-03-04
    • 2013-08-01
    • 2013-10-28
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多