关于在文件中包含javascript代码而不是将其包含在脚本标记中的一般开发人员意见是什么。
所以我们都同意jquery需要包含在脚本文件中,如下所示:
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.3/jquery.min.js"
type="text/javascript"></script>
我的问题是,为了在不在网站的所有页面上的页面上获取功能。我们是否在同一页面或上面称为mysite.js的全局包含文件中包含如下所示的函数。
$(document).ready(function(){
$(".clickme").click(function(event){
alert("Thanks for visiting!");
});
});
确定。所以问题是:如果上面的代码将在每个类中被调用=特定页面上的“clickme”,并且您可以从名为mysite.js的包含单独文件或在内容中调用它。页。你会走哪条路?
参数是:
如果您将其包含在页面上,则只会从那些需要js功能的特定页面中调用它。
或者你将它包含在浏览器缓存的文件中,但是jquery必须花费x ms来知道该函数不是在没有“clickme”类的页面上触发的。
编辑1: 好。我想确保人们解决的一点是,如果将document.ready函数称为页面中不存在的东西,会触发浏览器上的任何类型的延迟吗?这是一个重大影响吗?
答案 0 :(得分:3)
首先 - $("#clickme")
会找到id =“clickme”而不是class =“clickme”。如果你正在寻找课程,你需要$(".clickme")
。
我(尝试)从不在我的XHTML文档中放置任何实际的JavaScript代码,除非我正在快速测试页面上的内容。我总是链接到外部JS文件来加载我想要的功能。没有JS的浏览器(如网页抓取工具)将不会加载这些文件,它使您的代码看起来更清晰“查看源代码”。
如果我只在一个页面上需要一些功能 - 它有时会获得自己的包含文件。这一切都取决于它使用了多少功能/慢选择器。仅仅因为你将JS放在外部JS文件中并不意味着你需要将它包含在每一页上。
我使用这种做法的主要原因 - 如果我需要更改一些JavaScript代码,它们将在同一个地方,并在网站范围内进行更改。
就性能问题而言 - 一些选择器需要花费很多时间,但大多数(特别是处理ID的那些)非常快。搜索不存在的选择器是浪费时间,但当你把它放在第二个脚本HTTP请求的浪费时间(阻止DOM准备好btw)时,搜索空选择器通常会赢作为两个邪恶中较小的一个。 jQuery 1.3 Performace Notes和SlickSpeed有望帮助您确定您在搜索课程时失去了多少MS。
答案 1 :(得分:1)
我倾向于使用外部文件,因此如果需要进行更改,则会在所有页面的一个位置完成,而不是x页面上的x更改。
此外,如果您离开项目并且其他人必须接管,那么在项目周围寻找一些内联js可能会非常痛苦。
答案 2 :(得分:1)
我个人的偏好是
完全全局函数,插件和实用程序 - 在单独的JavaScript文件中并在每个页面中引用(非常类似于jQuery文件)
特定页面功能 - 在单独的JavaScript文件中,仅在页面中引用
请记住,您也可以缩小和压缩文件。
我坚信Unobtrusive JavaScript,因此尽量避免在标记中包含任何JavaScript代码,即使JavaScript在其自己的脚本块中也是如此。
答案 3 :(得分:0)
我同意在HTML页面中永远不会有代码。在ASP.net中,我以编程方式为每个页面添加了一个检查,以查看它是否具有相同的名称javascript文件。
EG。 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);
}
}
这很有效,因为:
很抱歉,如果这不适用于您的语言/编码风格。