0

假设我有一些这样的 javascript 代码:

function Person(){}
var pro=Person.prototype;
pro["setName"]=function(){}
pro["setAge"]=function(){}

....

现在,我将使用闭包编译器来缩小源代码。

但是,由于 Closure Compiler 编译永远不会更改字符串文字,所以我想自己替换。

所以在编译代码之前,我想像这样替换字符串文字:

var a="setName",b="setAge";
function Person(){}
var pro=Person.prototype;
pro[a]=function(){}
pro[b]=function(){}

我想用 ruby​​ 来做这个工作,那么我有两个问题:

  • 1)如何更换?

我尝试逐行扫描文件,但是如何找到字符串文字并进行替换?

  • 2)代码冲突

由于我必须生成像'a,b'这样的变量,如何确保它们与我的源代码不冲突?例如,我生成这样的代码:

var something="setName";

那么我的源代码中是否定义了一个名为“某物”的变量或函数呢?

4

3 回答 3

0

我不认为你的整体想法是正确的,我特别认为做 1) 太复杂了,无法在一个网页中回答。对于 2),从 Javascript 代码之外执行此操作同样困难,但您可以将原始 Javascript 代码与几行连接,引用Here,运行 Javascript,并获取变量列表。

于 2012-10-25T01:02:38.913 回答
0

如果由于某种原因您担心原始 JS 大小而不是压缩 JS(大多数人应该只担心压缩大小)。也许您应该考虑启用“别名所有字符串”编译器选项(在 Closure Compiler 的 Java API 中可用)?

于 2012-10-25T15:40:04.500 回答
0

而不是这样做,您应该考虑gzip在关闭缩小文件后使用来压缩文件。

gzip通过在输入数据中查找重复的字符串并将第二次出现的字符串替换为指向前一个字符串的指针来工作。它将对您的所有输入数据执行此操作,而不仅仅是 javascript 字符串文字。

http://www.gzip.org/

于 2012-10-25T00:41:52.887 回答