最新文章专题视频专题问答1问答10问答100问答1000问答2000关键字专题1关键字专题50关键字专题500关键字专题1500TAG最新视频文章推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37视频文章20视频文章30视频文章40视频文章50视频文章60 视频文章70视频文章80视频文章90视频文章100视频文章120视频文章140 视频2关键字专题关键字专题tag2tag3文章专题文章专题2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章专题3
当前位置: 首页 - 科技 - 知识百科 - 正文

JavaScript中文件同步与异步加载的方法介绍

来源:懂视网 责编:小采 时间:2020-11-27 20:14:12
文档

JavaScript中文件同步与异步加载的方法介绍

JavaScript中文件同步与异步加载的方法介绍:对于JS文件的引用,尽管当前有不少框架和工具(比如webpack,commonjs,requiresjs等)都做了很好的处理。但是抛开这些框架,了解原生的加载方式还是不无裨益。本文简述一些js文件的同步和异步加载方式。同步加载可在html文件里以<script>
推荐度:
导读JavaScript中文件同步与异步加载的方法介绍:对于JS文件的引用,尽管当前有不少框架和工具(比如webpack,commonjs,requiresjs等)都做了很好的处理。但是抛开这些框架,了解原生的加载方式还是不无裨益。本文简述一些js文件的同步和异步加载方式。同步加载可在html文件里以<script>
对于JS文件的引用,尽管当前有不少框架和工具(比如webpack,commonjs,requiresjs等)都做了很好的处理。但是抛开这些框架,了解原生的加载方式还是不无裨益。本文简述一些js文件的同步和异步加载方式。

同步加载

可在html文件里以<script>标签插入,这是初学时最基本的方式。

准备两个js文件如下:

calc1.js

calc2.js

calc2.js 是依赖calc1.js的。

html文件如下:

<body>

 <script src="calc1.js">
 </script>
 
 <script src="calc2.js">
 </script>
</body>

这种方式下,文件加载是同步的。即calc1.js加载完成后,才加载calc2.js,所以保证了calc2.js总能正确地调用calc1里的add函数。在Chrome里的调试结果如下:

但同步加载的缺点也明显,如果有多个文件的时候,全部加载时间会很长,而且阻塞用户界面响应。

通过Script Element异步加载

异步加载的优点是,能够同时加载多个js文件,而且由于是异步,不会阻塞用户界面,用户体验好。当然缺点是,不能保证有依赖关系的文件的加载顺序。

html 代码

<head>
 <meta charset="UTF-8">
 <title>Title</title>
 <script type="text/javascript">
 var script1 = document.createElement('script');
 script1.src='calc1.js';
 script1.type='text/javascript';

 var script2 = document.createElement('script');
 script2.src='calc2.js';
 script2.type='text/javascript';

 document.getElementsByTagName('head')[0].appendChild(script1).appendChild(script2);
 </script>
</head>

在Chrome里的调试结果有时候能正确的输出如下:

但有时候由于clac1.js没有被先加载,calc2.js执行时会报错。

那么我们就得需要解决加载顺序问题,保证calc1.js先加载。

<head>
 <meta charset="UTF-8">
 <title>Title</title>
 <script type="text/javascript">
 function loadScript(file, callbackFn) {
 var script = document.createElement('script');
 script.src= file;
 script.type='text/javascript';
 // 监听onload时间,当前js文件加载完成后,再加载下一个
 script.onload = callbackFn;
 document.getElementsByTagName('head')[0].appendChild(script)
 }
 
 loadScript('calc1.js', function () {
 loadScript('calc2.js');
 } );

 </script>
</head>

这样就能永远输出正确结果了。

通过 AJAX 加载JS文件

也能正确的输出结果。

总结

如果是单一或少数js文件,可以在html body的最后插入script标签,以同步方式加载。Webpack其实也是把多个js文件合并称一个,然后在body插入script引用。

文档

JavaScript中文件同步与异步加载的方法介绍

JavaScript中文件同步与异步加载的方法介绍:对于JS文件的引用,尽管当前有不少框架和工具(比如webpack,commonjs,requiresjs等)都做了很好的处理。但是抛开这些框架,了解原生的加载方式还是不无裨益。本文简述一些js文件的同步和异步加载方式。同步加载可在html文件里以<script>
推荐度:
标签: 中的 加载 方法
  • 热门焦点

最新推荐

猜你喜欢

热门推荐

专题
Top