【问题标题】:How to Determine duplicate Javascript Functions which include in Asp.net Page如何确定包含在 Asp.net 页面中的重复 Javascript 函数
【发布时间】:2010-02-20 11:04:11
【问题描述】:

我有一个使用一些 javascript 函数的应用程序,

由于所有的javascript都包含在Masterpage中,因此page自带的大部分都不是必需的,而且有些是重复的(因为在一些不同的JS文件中使用。)

所以我想检查是否有办法确定重复的功能并删除它们?

【问题讨论】:

  • 我有点困惑——“删除”是指在运行时取消定义它们还是从代码库中删除它们?
  • 我想通过删除不必要的脚本来减小页面大小

标签: c# asp.net javascript jquery master-pages


【解决方案1】:

你可以在声明函数的时候检查函数是否存在,但是你必须改变它的工作方式。

而不是

function foo(){ something }

if(window.foo===undefined){
window.foo=function(){ something }
}

你仍然可以这样称呼它

foo();

所有这些都可以通过使用正则表达式的查找和替换添加到您的文件中,所以我认为这很容易:)

【讨论】:

  • 这个解决方案会在页面中包含该功能,并且不妨碍将功能添加到页面中
  • 如果js文件重复函数,没有办法阻止加载。当使用名称时,我的解决方案将阻止向命名空间添加函数。如果您想跳过加载文件,那么您必须创建一个服务器端管理器来提供 js 文件并在搜索重复文件的过程中读取它们。你可以切换到动态加载 js 文件,但是在加载之前你不知道你在加载什么。
【解决方案2】:

不幸的是,除非它们的名称相同,或者引用相同的类或 ID,否则这非常困难。但是,如果它是重复的,它应该属于其中一个匹配项。我这样说是因为在我们的项目中进行了一次重大转换后,我回去将所有 javascript 清理到了不错的命名空间中,并且遇到了同样的问题。

这个答案很糟糕,我很抱歉:Ctrl+Shift+F。如果您认为它具有不同的名称/相同的功能,请搜索相同的函数名称或相同的类/ID。

我发现搜索函数名称#id.class 效率最高。还要从搜索中排除 .cs 文件。这将最大限度地减少时间,因为前面的 #. 只会在 jQuery 中使用时出现,但这仍然是一个非常手动的过程。

我希望有人在这里有更好的解决方案,如果他们这样做,我会觉得自己像个白痴,但老实说,我在 VS 2008 中找不到更好的方法来做到这一点。

【讨论】:

    【解决方案3】:

    如果来自两个脚本的函数具有相同的名称,或者是对象的命名方法,则在解释第二个脚本时,第一个函数将被第二个函数替​​换。

    您不会有两个相同的“占用空间”功能,而只有一个。

    【讨论】:

    • 我知道只有最后一个可以工作,当功能相同时。我想删除重复项以减小页面大小。
    【解决方案4】:

    如果您使用的是 Webforms 或 MVC,则从问题中不清楚。无论哪种情况,您都希望使用某种脚本管理器。

    对于 MVC,我发现这个研究的问题大致相同:A Simple ScriptManager for ASP.NET MVC

    对于Webforms,呃,不确定,我得再做一次功课

    【讨论】:

    • 我使用的是 Asp.net Web 表单而不是 MVC
    猜你喜欢
    • 1970-01-01
    • 2012-08-25
    • 2012-12-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多