文章详情页
javascript - 异步模块的理解
浏览:158日期:2023-03-19 10:05:47
问题描述
对于同步模块,模块必须提前加载进内存中。对于异步模块,比如说他的实现requirejs,依赖前置,且提前执行,这不也是提前加载进内存了吗,那为什么说是异步的?看了很多AMD和CMD的知识,就是不太明白同步模块加载和异步模块加载的区别。
问题解答
回答1:这个机制和【内存】关系并不大,更多可以理解为【脚本的下载时机】。
前端的特殊性在于,脚本文件的体积和下载时间,会直接影响页面性能。同步加载的规范中,所有依赖必须下载好后,脚本才能执行。
而异步加载的规范中,只有代码运行到需要的位置时,才会加载所需要的脚本。例如一个巨大的单页应用,首页部分的脚本可以特别轻,而进入某个功能页时,再异步加载需要的模块,这样对性能有很大的帮助。
回答2:requirejs的异步加载本质上是在<head>里append需要异步加载的<script>,这些<script>元素都有async属性来实现非阻塞异步加载。然后通过onload监听各个脚本加载完成状态,来实现多个存在依赖关系的脚本先后加载次序。可以自己用async和onload实现简单的异步加载功能,但要实现requirejs这样的功能,还是要花不少心思的。
标签:
JavaScript
相关文章:
1. javascript - 一排三个框,各个框的间距是15px,距离外面的白框间距也是15px,这个css怎么写?2. javascript - jQuery post()方法,里面的请求串可以转换为GBK编码么?可以的话怎样转换?3. html5 - vue-cli 装好了 新建项目的好了,找不到项目是怎么回事?4. django - python 2层文件夹导入5. python - 用urllib抓取网页上的下载链接,目标文件是xls形式,但发现抓下来的xls是空表,里面只有一句报错信息,求帮助。6. 用CSS3 box-sizing 属性实现两个并排的容器,如果想让容器中间有间隔该如何实现7. mysql - C#连接数据库时一直这一句出问题int i = cmd.ExecuteNonQuery();8. css - ul ol前边的标记如何调整样式呢9. javascript - vue 手机端项目在进入主页后 在进入子页面,直接按返回出现空白情况10. python3.x - python 中的maketrans在utf-8文件中该怎么使用
排行榜

网公网安备