JavaScript的工具:现在有多复杂的重构是可能的?

从大多数IDE支持复杂的重构可以跨越更多的源代码文件和项目的Java来,我想知道是否有任何支持相同的Javascript编辑器?

我刚看了一些关于Cloud9 AST工具支持的演示 。 这个演示文稿已经有一年多了。 我想知道Cloud9是否有复杂的重构函数,例如: NodeJs需要()的说明? 当然,这个问题并不想缩小到Cloud9,我们有了brackets.io,Orion等。这只是我遇到的演示文稿,所以我给出了基于Cloud9的示例。

假设我有一个Node模块,它导出一个对象原型,而我有另外一个使用它的模块。 假设我喜欢在导出的原型中重命名一个函数,并且我正在寻找的是IDE将根据更改重构其他模块中的调用。 任何工具是否支持跨模块相关性进行重构重命名?

我浪费了大量的时间来寻找解决scheme,但…

我认为没有像你想要的应用程序。 对此,JavaScript有点奇怪。 例如范围界定。 很难检测函数调用,因为很难检测到你的当前variables是否是其他实例/克隆,很难检测到原型的变化。 你有一个“类”,创build一个新的实例,你只能改变这个新实例的属性。 当然这个“this”这个关键字可能是范围的一个新问题。

一个例子。 如果我重命名addNew函数,什么也会被重命名呢?

 var Sample = function() { this.values = []; }; Sample.prototype.addNew = function(value) { this.values.push(value); }; var s = new Sample(); s.addNew("1"); var s2 = new Sample(); s2.addNew = function(value) { this.values.push(parseInt(value, 10)); }; s2.addNew("12x"); Sample.prototype.addNewRaw = Sample.prototype.addNew; Sample.prototype.addNew = function(value) { this.values.push("x" + value); }; var s3 = new Sample(); s3.addNew(12); s3.addNewRaw(12); console.log(s); console.log(s2); console.log(s3); 

好吧,这是一个可怕的代码:)如果我认为我的同事这个​​代码,我只是打他们,直到他看起来像这个。 是的,这是一个有趣的话题/问题,我认为“这是可能的,它可能是可用的?” 问题是我们需要问的第一个问题。 当然可以,可以使用。

顺便说一句,我一般使用括号,sed,grep和jshint并重构。

在我们公司,我们使用Webstorm来为我们的nodejs项目进行重构。 Webstorm是nodejs恕我直言的最好的IDE。

原因是它可以使用Lint和许多其他模块进行代码分析。 经过代码分析,我们能够解决很多编码错误,减less了很多的弊端。

对文件名或方法名称所做的更改将调用整个项目扫描,并提示您自动更正多less个引用。

Webstorm还支持许多Vim特性,例如代码之间的快速跳转以及许多漂亮的键盘快捷键。 事实上,我在我的墙上固定了webstorm的快捷方式备忘录。

这里是Webstorm的链接