我有一个使用一些javascript函数的应用程序,
由于所有javascripts都包含在Masterpage中,因此大多数jatscripts都不是必需的,其中一些是重复的(因为在一些不同的JS文件中使用。)
所以我想检查是否有办法确定重复的功能并删除它们?
答案 0 :(得分:4)
您可以在声明函数时检查函数是否存在,但您必须更改它的工作方式。
而不是
function foo(){ something }
做
if(window.foo===undefined){
window.foo=function(){ something }
}
你还可以称之为
foo();
所有这些都可以添加到您的文件中,并使用regexp进行查找和替换,所以我认为这很简单:)
答案 1 :(得分:2)
不幸的是,除非它们的名称相同,或引用相同的类或ID,否则这非常困难。但是,如果它是重复的,它应属于其中一个匹配项。我这样说是因为在我们的项目中进行了一次重大转换后,我回过头来将所有的javascript清理成了很好的命名空间并且遇到了同样的问题。
这个答案很糟糕,我道歉:Ctrl+Shift+F
。如果您认为它具有不同的名称/相同的功能,则搜索相同的函数名称或相同的类/ ID。
我发现搜索功能名称,#id
和.class
是最有效率的。还要从搜索中排除.cs文件。这将最大限度地缩短由于前一个#
和.
仅在jQuery中使用时出现的时间,但它仍然是一个非常手动的过程。
我希望有人在这里有一个更好的解决方案,如果他们这样做,我会觉得自己像个白痴,但老实说,我无法在VS 2008中找到更好的方法来做到这一点。
答案 2 :(得分:0)
如果两个脚本中的函数具有相同的名称,或者是对象的命名方法,则在解释第二个脚本时,第一个函数将被第二个函数替换。
你不会有两个相同的功能'占用空间',但只有一个。
答案 3 :(得分:0)
如果你使用的是Webforms或MVC,问题就不清楚了。在任何一种情况下,您都希望使用某种类型的脚本管理器。
对于MVC,我发现这个问题大致相同:A Simple ScriptManager for ASP.NET MVC
对于Webforms,嗯,不确定,我必须再去做我的作业