繁体   English   中英

使用ruby引用的javascript代码

[英]javascript codes refacting using ruby

假设我有一些这样的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(){}

我想用红宝石做这项工作,然后我有两个问题:

  • 1)如何更换?

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

  • 2)代码冲突

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

var something="setName";

那如果在我的源代码中定义了一个名为“ something”的变量或函数呢?

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

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

http://www.gzip.org/

我认为您的整体想法不正确,尤其是1)太复杂,无法在单个网页中回答。 对于2),从Javascript代码外部执行该操作同样很困难,但是您可以通过几行将原始Javascript代码附加起来,请参考Here ,运行Javascript并获取变量列表。

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM