实现JavaScript文件同步和异步加载的方法讲解
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了实现JavaScript文件同步和异步加载的方法讲解,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2469字,纯文字阅读大概需要4分钟。
内容图文
本篇文章主要介绍了JavaScript文件的同步和异步加载的实现代码,具有一定的参考价值,有兴趣的可以了解一下对于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引用。
如果是多个js文件,建议异步加载,以避免阻塞界面渲染,也缩短整体加载时间。本文介绍了script element和Ajax两种方式,并且对于有依赖关系的文件加载顺序,也做了实例。
以上就是实现JavaScript文件同步和异步加载的方法讲解的详细内容,更多请关注Gxl网其它相关文章!
内容总结
以上是互联网集市为您收集整理的实现JavaScript文件同步和异步加载的方法讲解全部内容,希望文章能够帮你解决实现JavaScript文件同步和异步加载的方法讲解所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。