在哪里放置JavaScript配置function?

关于在文件中包含javascript代码而不是将其包含在脚本标记上的一般开发人员意见是什么?

所以我们都同意jquery需要包含在脚本文件中,如下所示:

 

我的问题是,为了在不在网站的所有页面上的页面上获取function。 我们是否在同一页面或上面称为mysite.js的全局包含文件中包含如下所示的函数。

 $(document).ready(function(){ $(".clickme").click(function(event){ alert("Thanks for visiting!"); }); }); 

好。 所以问题是:如果上面的代码将在特定页面上的每个类=“clickme”中调用,并且您能够从名为mysite.js的包含单独文件或在内容中调用它。页。 你会走哪条路?


参数是:

  • 如果将其包含在页面上,则只能从需要jsfunction的特定页面调用它。

  • 或者你将它包含在一个浏览器缓存的文件中,但是jquery必须花费x ms来知道该函数不是在没有“clickme”类的页面上触发的。


编辑1:好的。 我想确保人们解决的一点是,如果将document.ready函数称为页面中不存在的东西,会触发浏览器上的任何类型的延迟吗? 这是一个重大影响吗?

首先 – $("#clickme")会找到id =“clickme”而不是class =“clickme”。 如果你正在寻找课程,你需要$(".clickme")

我(尝试)永远不会在我的XHTML文档中放置任何实际的JavaScript代码,除非我正在快速测试页面上的内容。 我总是链接到外部JS文件来加载我想要的function。 没有JS的浏览器(如网络爬虫)将不会加载这些文件,它使您的代码看起来更清晰“视图源”。

如果我只在一个页面上需要一些function – 它有时会获得自己的包含文件。 这一切都取决于它使用了多少function/慢选择器。 仅仅因为您将JS放在外部JS文件中并不意味着您需要将它包含在每个页面上。

我使用这种做法的主要原因 – 如果我需要更改一些JavaScript代码,它将全部在同一个地方,并在网站范围内进行更改。

至于关于性能的问题 – 一些选择器需要花费很多时间,但大多数(特别是那些处理ID的)非常快。 搜索不存在的选择器是浪费时间,但是当你把它放在第二个脚本HTTP请求的浪费时间(阻止DOM准备好btw)时,搜索空选择器通常会赢作为两个邪恶中较小的一个。 jQuery 1.3 Performace Notes和SlickSpeed有望帮助您确定您在搜索课程时失去了多少MS。

我倾向于使用外部文件,因此如果需要进行更改,则在一个地方为所有页面完成,而不是在x页面上进行x更改。

此外,如果您离开项目而其他人必须接管,那么在项目周围寻找一些内联js可能会非常痛苦。

我个人的偏好是

  • 完全全局的函数,插件和实用程序 – 在一个单独的JavaScript文件中并在每个页面中引用(很像jQuery文件)

  • 特定页面function – 在单独的JavaScript文件中,仅在需要的页面中引用

请记住,您也可以缩小和gzip文件。

我坚信不引人注意的JavaScript ,因此尽量避免使用标记中的任何JavaScript代码,即使JavaScript在其自己的脚本块中也是如此。

我同意在您的HTML页面中永远不会有代码。 在ASP.net中,我以编程方式为每个页面添加了一个检查,以查看它是否具有相同名称的javascript文件。

例如。 MyPage.aspx将查找MyPage.aspx.js

对于我的MVC母版页,我有这个代码来添加一个javascript链接:

  // Add Each page's javascript file if (Page.ViewContext.View is WebFormView) { WebFormView view = Page.ViewContext.View as WebFormView; string shortUrl = view.ViewPath + ".js"; if (File.Exists(Server.MapPath(shortUrl))) { _clientScriptIncludes["PageJavascript"] = Page.ResolveUrl(shortUrl); } } 

这非常有效,因为:

  • 它自动包含在我的文件中
  • .js文件与页面本身一起存在

很抱歉,如果这不适用于您的语言/编码风格。