外部javascript文件是顺序加载还是并行加载
are external javascript files loaded sequentially or parallel?
如果我的页面中有多个脚本标签,如:
<script src="js/jquery-1.7.min.js" type="text/javascript"></script>
<script src="js/jquery.jplayer.min.js" type="text/javascript"></script>
<script src="js/globals.js" type="text/javascript"></script>
<script src="js/sound.js" type="text/javascript"></script>
当加载后一个代码时,我可以依赖于前一个代码已经可用的事实吗?
它们可以并行加载(通过网络),但它们是按顺序求值的。
所以,是的,你可以依赖顺序。
简写:Yes:
如果没有在script标签中指定defer
或async
属性,规范说,浏览器必须顺序(同步)加载这些文件。
换句话说,浏览器找到的普通脚本标签需要得到
- 执行
- (在执行上述操作时阻塞任何其他渲染/执行进程)
虽然"现代"浏览器可能仍在尝试优化该过程,但需要应用这些步骤(至少,类似于过程)。这就是为什么你应该把脚本标签没有进一步的说明总是在你的<body>
标签的底部。甚至DOM渲染进程在加载/执行脚本时也会停止。
defer
或async
(仅限HTML5)属性,如
<script defer src="/foo/bar.js"></script>
,告诉浏览器这是一个脚本,意味着在文档被解析后执行。
见https://developer.mozilla.org/En/HTML/Element/Script
一般来说,脚本是按顺序下载的(参见此页):
因为JavaScript代码可以改变网页的内容和布局页面时,浏览器会延迟呈现脚本后面的任何内容标记,直到该脚本被下载、解析和执行。然而,更重要的是,对于往返时间,许多浏览器会阻塞下载资源的[例如样式表、图像和其他脚本]在文档中引用脚本之后,直到这些脚本被引用已下载并执行。
它们是并行加载的,但是每个文件加载后它们只运行一次。所以答案是肯定的,你可以相信这个事实。
相关文章:
- 如何使用url加载程序在webpack中导入多个图像
- 如何在生成下载文件时显示加载动画
- 有没有任何方法可以将控制器从文件加载到ui路由器$stateProvider中
- 无法在通过jQuery的ajax加载的页面中执行javascript
- Emberjs应用程序加载在除Index之外的所有路由上
- 在chrome.tabs.onCreated之后加载HTML页面
- 单击F5时如何停止页面加载
- HTML5音频加载和播放获胜'我不能在iPad上工作
- 跟踪在页面加载时应用内联样式的JavaScript
- 如何加载用户列表并并行呈现它们
- 并行同时加载
- 是顺序或并行网站图像加载更快(使用Javascript)
- 使用ajax进行并行页面加载
- 并行加载两个页面并合并结果
- 外部javascript文件是顺序加载还是并行加载
- D3:加载多个CSV文件,并使用并行坐标将其可视化
- 并行加载forajax所需的js文件
- Javascript并行加载
- RequireJS:如何控制并行加载的js脚本的执行顺序
- 为.ctm文件创建并行.js文件的三个.js ctm加载程序问题's参考