使用rhino或闭包编译器从java更改javascript变量和函数名
我希望能够根据特定条件更改javascript文件中的变量和函数名称,然后输出修改后的javascript。这类似于javascript浏览器的功能。 以下是一个例子: 我有这个javascript代码使用rhino或闭包编译器从java更改javascript变量和函数名,java,javascript,rhino,google-closure-compiler,Java,Javascript,Rhino,Google Closure Compiler,我希望能够根据特定条件更改javascript文件中的变量和函数名称,然后输出修改后的javascript。这类似于javascript浏览器的功能。 以下是一个例子: 我有这个javascript代码 var something=5; something++; function doSomething(n){ alert(n); } doSomething(something): 现在,我想用somethingElse和doSomethingElse替换somethingElse和do
var something=5;
something++;
function doSomething(n){
alert(n);
}
doSomething(something):
现在,我想用somethingElse
和doSomethingElse
替换somethingElse
和doSomethingElse
并返回以下javascript代码:
var somethingElse=5;
somethingElse++;
function doSomethingElse(n){
alert(n);
}
doSomethingElse(somethingElse):
我认为这可以在rhino或google closure compile(基于rhino)中实现,但不知道如何实现。我也愿意接受其他建议
谢谢Rhino只是一个解析器,所以除了在最简单的情况下,它不会真的有帮助 闭包编译器在技术上可以做到这一点,但并不正式支持定向重命名 以下技术用于增量编译。使用映射文件,编译器会尝试(但不保证)执行先前对变量和属性的重命名。您可以使用以下步骤实现此功能,但不能保证它在所有情况下都能正常工作: 第一步 使用以下语法创建变量映射文件(每行一个条目) 步骤2 在编译命令中使用变量重命名
java -jar compiler.jar --js inputfile.js \
--variable_map_input_file varrenaming.txt
请注意,所有常规重命名规则仍然适用。如果一个变量以前没有被重命名,这不会导致它现在被重命名。Rhino只是一个解析器,所以除了在最简单的情况下,它并没有真正的帮助 闭包编译器在技术上可以做到这一点,但并不正式支持定向重命名 以下技术用于增量编译。使用映射文件,编译器会尝试(但不保证)执行先前对变量和属性的重命名。您可以使用以下步骤实现此功能,但不能保证它在所有情况下都能正常工作: 第一步 使用以下语法创建变量映射文件(每行一个条目) 步骤2 在编译命令中使用变量重命名
java -jar compiler.jar --js inputfile.js \
--variable_map_input_file varrenaming.txt
请注意,所有常规重命名规则仍然适用。如果一个变量以前没有重命名,这不会导致它现在被重命名。是你实际的
something
是somethingElse
的子字符串吗?@Qantas945不,我只是举了一个简单的例子。如果你真的想做某种缩小,你可以用blablabla
替换something
?您能否提供一个更具体、更具体的例子来说明您正在努力实现的目标,以便我们更好地理解您的意图和目标?另外,请说明您实际尝试了什么,以便符合“好问题”的指导原则?没有必要是的,我正在尝试类似于缩小的操作,但我只想根据某些变量(和函数)的值更改它们的名称。我试图做的是某种javascript代码生成器,用户在其中设置一些输入代码,我生成一个类似的代码,但变量名不同(基于某些条件),这是您实际的somethingElse
的子字符串。@qantas945不,我只是给出了一个简单的示例。如果你真的想做某种缩小,你可以用blablabla
替换something
?您能否提供一个更具体、更具体的例子来说明您正在努力实现的目标,以便我们更好地理解您的意图和目标?另外,请说明您实际尝试了什么,以便符合“好问题”的指导原则?没有必要是的,我正在尝试类似于缩小的操作,但我只想根据某些变量(和函数)的值更改它们的名称。我试图做的是某种javascript代码生成器,用户在其中设置一些输入代码,我生成一个类似的代码,但变量名不同(基于某些条件)