在文档中放置JavaScript/Ajax的最佳位置是什么?
Where is the best place to put JavaScript/Ajax in a document?
为这个听起来很蠢的问题道歉,但我需要专家来澄清。
在三个地方把JavaScript, head
, $(document).ready
,或body
,在哪里最好的地方是把一些ajax,使用了很多$GET
函数?
例如,我正在使用一个名为execute_send()
的JavaScript函数,但我不确定把它放在哪里最好。下面是错误:
第67行字符22的问题:'execute_send'在定义之前被使用。
命令功能execute_send() {
位置如何影响页面加载时间?
一般来说,除非出于某种原因你需要在其他地方使用它,否则将所有JS放在body的最后。在解析完JS之前,浏览器不会继续运行,所以最好先加载页面。见http://developer.yahoo.com/performance/rules.html
作为一个例子,当你可能真的想把JS放在头部:你可能有一些A/B测试代码,你想在页面甚至渲染之前运行-在这种情况下,代码应该在头部,因为你真的想要它尽快运行。
正如@Thom Blake所说,一般来说,最好的地方是在<body>
的底部(+1)-但我将在这一点上展开一点:
这样做的原因是,当浏览器加载页面时,它必须在遇到JavaScript时停止加载并解析它。例如,如果你把所有的脚本都放在<head>
中,那么在加载<body>
注意,这是加载的延迟-与脚本的实际执行分开。$(document).ready()
之类的代码处理的是脚本何时执行,而不是何时加载。
将所有脚本放在
<body>
的底部,以便加载非js资源,例如图像,不会延迟。将您的脚本合并到单个文件中,以便服务器必须对资源发出更少的请求(您将看到这被称为"最小化HTTP请求")
最小化你的脚本,以减少他们的总大小,这加快了加载时间
将任何依赖于DOM的代码(例如点击处理程序,HTML操作等)放在
$(document).ready()
中(或在页面上使用的JS库的等效方法)
同一主题:what -pros- cons-putting-javascript-in-head-and-putting-just-before-the-body
在过去,我遇到了一些jquery的问题,它不是'加载器'初始化时。这就是为什么我们决定把它插入<head>
.
在某些情况下,将脚本移到底部并不容易。例如,如果脚本使用document。写入插入部分页面内容时,它不能在页面中移动到更低的位置。可能还存在范围界定问题。在许多情况下,有一些方法可以解决这些情况。
对于其余的javascript,在结束的</body>
标记之前。
解释为什么页面加载更快:It doesn ' t.
浏览器是单线程的,所以当脚本正在执行时,浏览器无法启动其他下载是可以理解的。但是,当脚本正在下载时,浏览器没有理由不能开始下载其他资源。而这正是较新的浏览器,包括Internet Explorer 8、Safari 4和Chrome 2所做的。
不同之处在于,<body>
标记内的资源将依次加载/显示。当浏览器加载<script src=...js>
时,在浏览器可以获取另一个资源之前,必须加载完整的文件。所以,这是一种错觉,因为浏览器会在'javascripts'之前加载/di更多的'可见'内容。
可视化整个过程:firebug> Net (tab)
如前所述,$(document).ready
不是一个地方。(对于jQuery, $(document).ready
只是确保在执行任何脚本之前DOM已完全加载(准备好进行操作)。)您可以将JavaScript放在<head>
或<body>
中。
然而,把你所有的JavaScript包含和JavaScript脚本在<body>
部分的底部是最好的加载性能。"渐进式渲染"answers"并行下载"被阻止的一切下面的脚本。如果您的脚本是页面上的最后一个内容,那么您没有阻塞任何内容。
本文对此进行了更深入的解释。
例子:
<html>
<head>
<!-- MY HEAD CONTENT - LOAD ALL CSS -->
</head>
<body>
<!-- MY HTML CODE -->
<!-- START javascript -->
<script type="text/javascript" src="/ajax/jquery/jquery-1.6.2.min.js"></script>
<script type="text/javascript" src="/ajax/jquery/plugins/jquery.random_plugin.js"></script>
<script type="text/javascript" src="/includes/some_other_scripts.js"></script>
<script type="text/javascript" language="JavaScript">
//<![CDATA[
$(document).ready(function(){
// my jQuery/JavaScript code
});
//]]>
</script><!-- END javascript -->
</body>
</html>
- 使用AJAX在Rails中提交动态表单的最佳方式是什么
- 其中是在ReactJS中放置一个值的最佳位置,该值由传入的初始参数计算一次,然后再也不会更改
- 应用 API 响应转换的最佳位置
- Javascript:注册事件处理程序的最佳位置
- 将角度文件存储在轨道中的最佳位置
- 存储angularJs中解析方法的最佳位置
- 在Zend Framework中,哪里是放置自定义jquery和javascript的最佳位置
- 在HTML文档中插入JavaScript的最佳位置
- 什么是存储和组织NOSQL数据库图像的最佳位置
- 事件回调的最佳位置在哪里?(匿名或命名)
- 将javascript行为附加到DOM的最佳位置
- 在Angular/Django SPA中存放ng模板的最佳位置是什么?
- 什么是放置<脚本的最佳位置?标记在JSP文件中
- 在文档中放置JavaScript/Ajax的最佳位置是什么?
- 在动态AJAX加载时,哪里是存储支持JSON的最佳位置
- 在ROR中放置JavaScript的最佳位置
- 哪里是过滤AJAX查询数据的最佳位置
- 哪里是在客户端上放置数据库ID的最佳位置
- 主干——插入JavaScript以操纵DOM的最佳位置是什么?
- 调用ajax的最佳位置是调用API