修复具有多个Javascript框架的项目

修复具有多个Javascript框架的项目,javascript,jquery,prototypejs,javascript-framework,scriptaculous,Javascript,Jquery,Prototypejs,Javascript Framework,Scriptaculous,我刚刚开始了一项新工作,我的第一项任务是清理站点的Javascript代码——问题是使用了两个JS库(jQuery和Prototype/Scriptaculous) 我试图弄清楚在哪里使用了什么,但这相当困难,尤其是对代码不太熟悉 有人有什么建议吗?如果可能的话,我可能更愿意删除Prototype/Scriptaculous。我不建议删除javascript库,因为这将是一个跨部门的更改。非常危险,现在和将来都会导致错误。很可能原型将使用$变量,并且jQuery将在无冲突模式下运行,因此它将被j

我刚刚开始了一项新工作,我的第一项任务是清理站点的Javascript代码——问题是使用了两个JS库(jQuery和Prototype/Scriptaculous)

我试图弄清楚在哪里使用了什么,但这相当困难,尤其是对代码不太熟悉


有人有什么建议吗?如果可能的话,我可能更愿意删除Prototype/Scriptaculous。

我不建议删除javascript库,因为这将是一个跨部门的更改。非常危险,现在和将来都会导致错误。

很可能原型将使用
$
变量,并且jQuery将在
无冲突
模式下运行,因此它将被
jQuery
变量引用

这可能会变得棘手,例如:

 // here $ = Prototype

 jQuery(function($){
     // here $ = jQuery

 });

 // here $ = Prototype
在单独的文件中:

// here $ = Prototype
(function($){
    // here $ = jQuery;
})(jQuery);
// here $ = Prototype

关注您的上下文以查看引用的库非常重要。此外,如果你在jQuery中遇到了在Prototype中完成的一些事情,你可以在这里提问。

摆脱Prototype可能特别困难,特别是如果有人在代码库中真正“得到”了Prototype。我在这里说的是我自己,我曾在一个非常大的web应用程序上工作过,事实上,这个应用程序与您所描述的完全相同(尽管我认为在我离开时,Scriptaculous的东西已经不存在了)


由于原型的工作方式,任何地方都可能存在依赖关系

这是一项艰巨的任务。如果一切正常的话,两个框架共存和共存的建议并不坏。如果jQuery确实驻留在同一页面上,则它们很可能处于模式

一个非常有用的工具是为Firefox使用,导航到一个页面并执行:
信息->查看JavaScript
——这将为您提供所有加载了
标记的JavaScript脚本的完整列表,以及
标记中的内联JavaScript,尽管我认为这里没有列出内联事件处理程序

但您可以做的一件事就是简单地解开Prototype或JavaScript的挂钩,看看哪种错误会减少。然后你就要去调试丢失的东西了

更容易在一个库上标准化,但也有理由“如果它没有损坏,就不要修复它”

我花了一些时间学习了一些关于所有框架的知识,对相同的HTML做了相同的处理::通过比较和,您可以快速了解Prototype和jQuery语法之间的差异


祝你好运

我会从所有页面的所有包含中删除原型,删除jquery中的noconflict&然后让firebug准备好向我显示所有错误,然后逐个检查所有页面,用jquery等价物替换函数,直到一切正常为止

…屁股法的痛苦,但怀疑你会发现更少的痛苦。
可能会有帮助:

这只是冰山一角。原型中的“$”只做相对有限的事情,而jQuery的“$”几乎做所有事情。因为Prototype将各种功能放在各种基本的对象原型上,所以尝试并找到它们是非常困难的。例如,jQuery“$.each()”是作为基本数组操作在原型中完成的。@Pointy,非常正确。但就区分库而言,只要知道何时
$=jQuery
,jQuery内容应该很容易识别。然而,当原型看起来像是本机功能时,就很难确定了。是的,确实如此,但一旦你找到了它,那么你就必须重写它:-)我同意我认为“不要这样做”的答案!