如何在ASP.NET中添加jQuery的最佳实践?

3

如果已经有人问了这个问题,我很抱歉,但是我无法在任何地方找到这个问题的答案。

我想在我的asp.net页面上使用jquery,但我应该只注册一个新脚本吗?添加链接?是否有一些特殊的引用我可以添加?

斯科特古(scottgu)指出它已经集成到Visual Studio中,但没有描述如何开始将其添加到页面中?


如果您正在使用MVC,那么它应该是自动的。我个人喜欢将其添加到我的Web表单项目中的脚本文件夹下,然后从那里将其拖到我的主页面“头”部分,这样它就会出现在所有页面上。 - William Dwyer
@WilliamDwyer 但是MVC如何自动添加它呢?MVC的方法可能是最佳实践? - McKay
如果你想要最新的带有智能感知功能的jQuery,请查看这个链接:http://appendto.com/community/jquery-vsdoc - William Dwyer
打开一个新的MVC2/3项目,查看它放置文件和引用<script src...>的位置。 - William Dwyer
自动化……喜欢那个,在MVC模板中。它不在标准Web表单模板中。 - William Dwyer
谷歌搜索“将jQuery添加到WebForm ASP.NET”会得到以下链接:http://css.dzone.com/news/eliminating-postbacks-setting- - William Dwyer
4个回答

3

我不能称之为最佳实践,但有一些注意事项:

首先你可以添加一个链接,如果你将其注册为新脚本,则添加额外的代码而没有必要运行。

放在页面的哪里:jQuery是核心库,因此应将其置于页面顶部,而不是底部,以便我们在DOM准备就绪后加载其他JavaScript函数并使用它们。

要添加哪个版本以及从哪里添加?您可以添加jQuery的最小化版本,并且可以从您的站点加载,也可以从Google加载。这也取决于您是否仅保留jQuery还是将其与其他脚本一起添加到共同文件中。

需要注意的事项:如果您与其他库存在任何冲突,则可以使用jQuery noConflict http://api.jquery.com/jQuery.noConflict/

优化所有脚本:如果您有多个脚本要加载,则一种优化方法是将它们全部放在一起作为单个文件,将其缩小,gzip它,并将其作为链接添加到您的页面中。这是我在遵循了所有先前的步骤后所做的。


虽然我很感激这些信息,但它并没有说明如何实际添加它?我应该注册一个脚本吗?添加原始的HTML脚本标签?还是添加某种网络JavaScript引用咒语? - McKay
@McKay 我的意思是,添加一个原始的HTML脚本标签。(不要将其注册为脚本) - Aristos
我看到这种方法的劣势在于,如果页面上有多个控件都添加了该脚本标记... - McKay
@McKay 正确,如果你需要这样添加的话。在我的情况下,我在所有页面上使用jQuery,所以我将其作为全局包含,而不是逐个检查每个控件。 - Aristos
所以,我在询问最佳实践,因为在我写这篇文章的时候,我不确定谁还需要它?每次引用时我需要考虑双重包含吗?或者我应该一次性做一点(有关该主题的更多讨论请参见我的答案) - McKay
@McKay 最佳实践是将所有核心脚本添加到一个文件中,在页面顶部加载,压缩和缩小它,然后将第二个脚本放在页面底部的另一个文件中。 - Aristos

1

我不自称为专家,但根据我的最近研究,这样做是最好的吗?

        this.Page.ClientScript.RegisterClientScriptInclude("jQuery", "http://ajax.aspnetcdn.com/ajax/jQuery/jquery-1.6.1.min.js");

但是文档说明:

“调用 IsClientScriptIncludeRegistered 方法来确定是否已经注册具有给定键和类型对的客户端脚本,从而避免不必要地尝试添加脚本。” 它还提到:“检查的好处是减少不必要的计算。” 所以,可能像这样做更好:

    if (!this.Page.ClientScript.IsClientScriptIncludeRegistered("jQuery"))
    {
        this.Page.ClientScript.RegisterClientScriptInclude("jQuery", "http://ajax.aspnetcdn.com/ajax/jQuery/jquery-1.6.1.min.js");
    }

这似乎很愚蠢,因为如果我调用

        this.Page.ClientScript.RegisterClientScriptInclude("jQuery", "http://ajax.aspnetcdn.com/ajax/jQuery/jquery-1.6.1.min.js");
        this.Page.ClientScript.RegisterClientScriptInclude("jQuery", "http://ajax.aspnetcdn.com/ajax/jQuery/jquery-1.6.1.min.js");

它做的事情和我只做一次是一样的。


这是一种简单且安全的添加方法。可能出现的问题是,如果您在jQuery之前注册需要jQuery的脚本,或者如果您以不同名称注册了两次jQuery。我在这里说的是,您没有针对所有情况的解决方案,这只是一种更多的方式。例如,Stackoverflow将jQuery置于顶部且单独,其他网站将包括jQuery在内的所有JavaScript放在一个文件中...取决于您的选择,您能做什么,您会做出什么决定等等... - Aristos
我决定将这个代码块封装在一个方法中,这样就可以在任何需要 jQuery 的地方调用它:ScriptRegistration.RegisterJQuery() 你有什么想法? - McKay

1

您可以通过链接脚本将jQuery添加到asp.net中,就像链接其他脚本和样式表一样。[除非我漏掉了什么]


1

我认为最好的方法是从CDNs引用jQuery文件。

与手动添加脚本标记和在代码后台注册的区别在于您的要求。如果您构建了一些使用jQuery的自定义控件,则最好确保脚本引用将出现在页面中,因此您需要从代码后台进行注册。

如果有一个主页面和一些在所有页面上都使用jQuery的javascript,则将其添加到该主页面中。

如果脚本仅在少数页面中使用,则无需在其他100个页面中加载脚本,因此您只需在这两个或三个页面中添加标记即可。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接