公司使用 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 呢?
AMD的[]里不止是会先加载,还要等[]里面的执行完了,回调function(){...}才会被调用