AMD 的模块加载和回调执行

发布于 2022-09-04 18:22:09 字数 618 浏览 14 评论 0

公司使用 angularAMD 实现按需加载,其中使用 require.js 来加载模块,查了下网上的资料。发现阮一峰《Javascript模块化编程(三):require.js的用法》一文中,有这样一段话:

require()函数接受两个参数。第一个参数是一个数组,表示所依赖的模块,上例就是['moduleA', 'moduleB', 'moduleC'],即主模块依赖这三个模块;第二个参数是一个回调函数,当前面指定的模块都加载成功后,它将被调用。加载的模块会以参数形式传入该函数,从而在回调函数内部就可以使用这些模块。

// main.js
  require(['moduleA', 'moduleB', 'moduleC'], function (moduleA, moduleB, moduleC){
    // some code here
  });

其中

第二个参数(即回调函数),当前面指定的模块都加载成功后,它将被调用。

那么他不还是同步加载吗? 如果我引入了 jQuery,我在 callback 中传入$,但是在 jQuery 没有加载完成之前,又如何能执行 callback 呢?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

垂暮老矣 2022-09-11 18:22:09

AMD的[]里不止是会先加载,还要等[]里面的执行完了,回调function(){...}才会被调用

宛菡 2022-09-11 18:22:09

这个是requireJs的实现原理,依赖提前执行,必须先等模块所有的依赖加载完成后,才能执行回调函数。requireJS其中一个作用是实现js文件的异步加载,说的是这个模块的加载,而不是这个模块的依赖,该模块加载时,不阻塞页面其他资源的加载,避免网页失去响应

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文